Commit 33ade855 by hewei

Merge branch 'upay-test' into 'upay-prod'

Upay test

See merge request !31
parents 51116217 f78c4891
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
##redis6(必须本地开启) ##redis6(必须本地开启)
### docker安装redis ### docker安装redis
docker run -p 6379:6379 -d --restart=always --name redis6 -v $PWD/dockerData/redis6:/data redis:6 --appendonly yes docker run -p 6379:6379 -d --restart=always --name redis6 redis:6.0 redis-server --appendonly yes --requirepass "123456"
##mysql5.7(如果本地不开,可以连上测试环境) ##mysql5.7(如果本地不开,可以连上测试环境)
### docker 安装mysql ### docker 安装mysql
......
package com.wecloud.im.controller.serverapi;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.vo.MyConversationListVo;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 会话表 控制器
*
* @author wei
* @since 2021-05-07
*/
@Slf4j
@RestController
@RequestMapping("/server/conversation")
@Api(value = "会话表API", tags = {"会话表"})
public class ApiImConversationController extends BaseController {
@Autowired
private ImConversationService imConversationService;
@Autowired
private ImApplicationService imApplicationService;
/**
* 获取会话表详情
*/
@GetMapping("/info")
@ApiOperation(value = "会话表详情")
public ApiResult<MyConversationListVo> getImConversation(@RequestParam("conversationId") Long conversationId
, @RequestHeader String appkey, @RequestHeader String appSecret) throws Exception {
// 根据appKey从数据库查询密钥
ImApplication imApplication = imApplicationService.getOneByAppKey(appkey);
if (imApplication == null) {
return ApiResult.result(ApiCode.FAIL, null);
}
// 校验appkey 和appSecret
if (!imApplication.getAppSecret().equals(appSecret)) {
return ApiResult.result(ApiCode.FAIL, null);
}
MyConversationListVo imConversationQueryVo = imConversationService.getImConversationInfoByIdForServerApi(conversationId);
return ApiResult.ok(imConversationQueryVo);
}
}
package com.wecloud.im.controller.serverapi; package com.wecloud.im.controller.serverapi;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.param.ApiImConversationMembersInfoPageParam;
import com.wecloud.im.param.ApiImConversationMembersInfoQueryVo;
import com.wecloud.im.param.ApiImConversationMembersPageParam; import com.wecloud.im.param.ApiImConversationMembersPageParam;
import com.wecloud.im.param.ApiImConversationMembersQueryVo; import com.wecloud.im.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.param.add.ImConversationMemApiAdd;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImConversationMembersService; import com.wecloud.im.service.ImConversationMembersService;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType; import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -44,6 +49,28 @@ public class ApiImConversationMembersController extends BaseController { ...@@ -44,6 +49,28 @@ public class ApiImConversationMembersController extends BaseController {
/** /**
* 会话成员表分页列表 * 会话成员表分页列表
*/ */
@PostMapping("/findInfoList")
@OperationLog(name = "rest-api-会话成员信息表分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "rest-api-会话成员信息表分页列表")
public ApiResult<Paging<ApiImConversationMembersInfoQueryVo>> getApiImConversationMembersInfoList(@Validated @RequestBody ApiImConversationMembersInfoPageParam apiImConversationMembersInfoPageParam,
@RequestHeader String appkey, @RequestHeader String appSecret) {
// 根据appKey从数据库查询密钥
ImApplication imApplication = imApplicationService.getOneByAppKey(appkey);
if (imApplication == null) {
return ApiResult.result(ApiCode.FAIL, null);
}
// 校验appkey 和appSecret
if (!imApplication.getAppSecret().equals(appSecret)) {
return ApiResult.result(ApiCode.FAIL, null);
}
return imConversationMembersService.getApiImConversationMembersInfoList(apiImConversationMembersInfoPageParam, imApplication);
}
/**
* 会话成员表分页列表
*/
@PostMapping("/findList") @PostMapping("/findList")
@OperationLog(name = "rest-api-会话成员表分页列表", type = OperationLogType.PAGE) @OperationLog(name = "rest-api-会话成员表分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "rest-api-会话成员表分页列表") @ApiOperation(value = "rest-api-会话成员表分页列表")
...@@ -64,16 +91,27 @@ public class ApiImConversationMembersController extends BaseController { ...@@ -64,16 +91,27 @@ public class ApiImConversationMembersController extends BaseController {
return imConversationMembersService.getRestApiImConversationMembersList(apiImConversationMembersPageParam, imApplication); return imConversationMembersService.getRestApiImConversationMembersList(apiImConversationMembersPageParam, imApplication);
} }
// /** /**
// * 添加会话成员表 * 服务端api调用 将一名用户添加至会话: ${clientID}通过${type}加入会话 -1014
// */ */
// @PostMapping("/add") @PostMapping("/add")
// @OperationLog(name = "添加会话成员表", type = OperationLogType.ADD) @ApiOperation(value = "服务端api调用 将一名用户添加至会话:${clientID}通过${type}加入会话 -1014")
// @ApiOperation(value = "添加会话成员表") public ApiResult<Boolean> addImConversationMembers(@Validated(Add.class) @RequestBody ImConversationMemApiAdd imConversationMemApiAdd
// public ApiResult<Boolean> addImConversationMembers(@Validated(Add.class) @RequestBody ImConversationMembers imConversationMembers) throws Exception { , @RequestHeader String appkey, @RequestHeader String appSecret) throws Exception {
// boolean flag = imConversationMembersService.saveImConversationMembers(imConversationMembers); // 根据appKey从数据库查询密钥
// return ApiResult.result(flag); ImApplication imApplication = imApplicationService.getOneByAppKey(appkey);
// }
if (imApplication == null) {
return ApiResult.result(ApiCode.FAIL, null);
}
// 校验appkey 和appSecret
if (!imApplication.getAppSecret().equals(appSecret)) {
return ApiResult.result(ApiCode.FAIL, null);
}
boolean flag = imConversationMembersService.addImConversationMembersApi(imConversationMemApiAdd, imApplication);
return ApiResult.result(flag);
}
// //
// /** // /**
// * 修改会话成员表 // * 修改会话成员表
......
...@@ -50,6 +50,8 @@ public interface ImConversationMapper extends BaseMapper<ImConversation> { ...@@ -50,6 +50,8 @@ public interface ImConversationMapper extends BaseMapper<ImConversation> {
MyConversationListVo getImConversationAndMsgCountById(@Param("clientId") Long clientId, @Param("conversationId") Long conversationId); MyConversationListVo getImConversationAndMsgCountById(@Param("clientId") Long clientId, @Param("conversationId") Long conversationId);
MyConversationListVo getImConversationInfoByIdForServerApi(@Param("conversationId") Long conversationId);
/** /**
* 查询用户加入的所有会话 * 查询用户加入的所有会话
* *
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.param.ApiImConversationMembersInfoQueryVo;
import com.wecloud.im.param.ApiImConversationMembersQueryVo; import com.wecloud.im.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.param.ImConversationMembersPageParam; import com.wecloud.im.param.ImConversationMembersPageParam;
import com.wecloud.im.param.ImConversationMembersQueryVo; import com.wecloud.im.param.ImConversationMembersQueryVo;
...@@ -34,6 +35,8 @@ public interface ImConversationMembersMapper extends BaseMapper<ImConversationMe ...@@ -34,6 +35,8 @@ public interface ImConversationMembersMapper extends BaseMapper<ImConversationMe
List<ApiImConversationMembersQueryVo> getRestApiImConversationMembersList(@Param("conversationId") Long conversationId); List<ApiImConversationMembersQueryVo> getRestApiImConversationMembersList(@Param("conversationId") Long conversationId);
IPage<ApiImConversationMembersInfoQueryVo> getApiImConversationMembersInfoList(@Param("page") Page page, @Param("conversationId") Long conversationId);
List<ImConversationMemberListVo> getImConversationMembersList(@Param("conversationId") Long conversationId); List<ImConversationMemberListVo> getImConversationMembersList(@Param("conversationId") Long conversationId);
......
...@@ -44,7 +44,7 @@ public class NettyChannelInitializer extends ChannelInitializer<SocketChannel> { ...@@ -44,7 +44,7 @@ public class NettyChannelInitializer extends ChannelInitializer<SocketChannel> {
* allIdleTime—状态为IdleState的IdleStateEvent。在一定时间内不读不写会触发ALL_IDLE。指定0禁用。 * allIdleTime—状态为IdleState的IdleStateEvent。在一定时间内不读不写会触发ALL_IDLE。指定0禁用。
* unit—readerIdleTime、writeIdleTime和allIdleTime的时间单位 * unit—readerIdleTime、writeIdleTime和allIdleTime的时间单位
*/ */
pipeline.addLast(new IdleStateHandler(35, 0, 0, TimeUnit.SECONDS)); pipeline.addLast(new IdleStateHandler(150, 0, 0, TimeUnit.SECONDS));
} }
} }
...@@ -114,8 +114,8 @@ public class WsReadHandler extends SimpleChannelInboundHandler<TextWebSocketFram ...@@ -114,8 +114,8 @@ public class WsReadHandler extends SimpleChannelInboundHandler<TextWebSocketFram
break; break;
} }
log.info(clientId + "超时事件:" + eventType); log.info(clientId + "超时事件:" + eventType);
if (readIdleTimes >= 5) { if (readIdleTimes >= 2) {
log.info(clientId + ".读空闲超过5次关闭连接"); log.info(clientId + ".读空闲超过2次关闭连接");
ctx.channel().close(); ctx.channel().close();
} }
} }
......
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <pre>
* 会话成员表 分页参数对象
* </pre>
*
* @author wei
* @date 2021-05-07
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ApiImConversationMembersInfoPageParam")
public class ApiImConversationMembersInfoPageParam extends BasePageOrderParam {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "会话表id", required = true)
private Long conversationId;
}
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <pre>
* 会话成员信息表 查询结果对象
* </pre>
*
* @author wei
* @date 2021-05-07
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ApiImConversationMembersInfoQueryVo")
public class ApiImConversationMembersInfoQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
}
\ No newline at end of file
package com.wecloud.im.param.add;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* api添加会话成员
*
* @author wei
* @since 2022年05月16日14:13:46
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversationMemAttrApiAdd")
public class ImConversationMemApiAdd extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "会话表id",required = true)
private Long conversationId;
@ApiModelProperty("操作者client ID,可为空")
private String operator="";
@ApiModelProperty(value = "被操作的client ID",required = true)
private String passivityOperator;
@ApiModelProperty("加入的类型, link或qrCode等")
private String joinType="";
}
...@@ -2,12 +2,15 @@ package com.wecloud.im.service; ...@@ -2,12 +2,15 @@ package com.wecloud.im.service;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.param.ApiImConversationMembersInfoPageParam;
import com.wecloud.im.param.ApiImConversationMembersInfoQueryVo;
import com.wecloud.im.param.ApiImConversationMembersPageParam; import com.wecloud.im.param.ApiImConversationMembersPageParam;
import com.wecloud.im.param.ApiImConversationMembersQueryVo; import com.wecloud.im.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.param.ImConvMemeClientRemarkNameParam; import com.wecloud.im.param.ImConvMemeClientRemarkNameParam;
import com.wecloud.im.param.ImConversationMembersListParam; import com.wecloud.im.param.ImConversationMembersListParam;
import com.wecloud.im.param.ImConversationMembersPageParam; import com.wecloud.im.param.ImConversationMembersPageParam;
import com.wecloud.im.param.ImConversationMembersQueryVo; import com.wecloud.im.param.ImConversationMembersQueryVo;
import com.wecloud.im.param.add.ImConversationMemApiAdd;
import com.wecloud.im.param.add.ImConversationMemAttrUpdate; import com.wecloud.im.param.add.ImConversationMemAttrUpdate;
import com.wecloud.im.vo.ImConversationMemberListVo; import com.wecloud.im.vo.ImConversationMemberListVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -34,10 +37,10 @@ public interface ImConversationMembersService extends BaseService<ImConversation ...@@ -34,10 +37,10 @@ public interface ImConversationMembersService extends BaseService<ImConversation
*/ */
ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication); ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication);
ApiResult<Paging<ApiImConversationMembersInfoQueryVo>> getApiImConversationMembersInfoList(ApiImConversationMembersInfoPageParam apiImConversationMembersInfoPageParam, ImApplication imApplication);
ApiResult<Boolean> saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam); ApiResult<Boolean> saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam);
/** /**
* 会话成员表分页列表 * 会话成员表分页列表
* *
...@@ -59,6 +62,9 @@ public interface ImConversationMembersService extends BaseService<ImConversation ...@@ -59,6 +62,9 @@ public interface ImConversationMembersService extends BaseService<ImConversation
*/ */
boolean saveImConversationMembers(ImConversationMembers imConversationMembers) throws Exception; boolean saveImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;
boolean addImConversationMembersApi(ImConversationMemApiAdd imConversationMemApiAdd, ImApplication imApplication);
/** /**
* 修改 * 修改
* *
......
...@@ -107,6 +107,7 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -107,6 +107,7 @@ public interface ImConversationService extends BaseService<ImConversation> {
MyConversationListVo getImConversationInfoById(Long id) throws Exception; MyConversationListVo getImConversationInfoById(Long id) throws Exception;
MyConversationListVo getImConversationInfoByIdForServerApi(Long id) throws Exception;
/** /**
* 获取分页对象 * 获取分页对象
......
...@@ -229,11 +229,20 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -229,11 +229,20 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// shiro线程中获取当前token // shiro线程中获取当前token
JwtToken curentJwtToken = JwtUtil.getCurentJwtToken(); JwtToken curentJwtToken = JwtUtil.getCurentJwtToken();
// 根据appKey查询application
ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
ImClient imClientSender = imClientService.getCurentClient(); ImClient imClientSender = imClientService.getCurentClient();
if (addMember(imClientToConversation, curentJwtToken.getAppKey(), imClientSender)) {
return ApiResult.fail();
}
return ApiResult.ok();
}
private boolean addMember(ImClientToConversation imClientToConversation, String appKey, ImClient imClientSender) {
// 根据appKey查询application
ImApplication imApplication = imApplicationService.getOneByAppKey(appKey);
// 查询该会话所有成员 // 查询该会话所有成员
List<ImConversationMembers> membersList = imConversationMembersService.list( List<ImConversationMembers> membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda() new QueryWrapper<ImConversationMembers>().lambda()
...@@ -244,7 +253,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -244,7 +253,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
); );
if (membersList.isEmpty()) { if (membersList.isEmpty()) {
log.info("membersList为空,toConversationId:" + imClientToConversation.getConversationId()); log.info("membersList为空,toConversationId:" + imClientToConversation.getConversationId());
return ApiResult.fail(); return true;
} }
// 将他人添加到会话 // 将他人添加到会话
...@@ -305,6 +314,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -305,6 +314,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessage.setFkConversationId(imClientToConversation.getConversationId()); imMessage.setFkConversationId(imClientToConversation.getConversationId());
boolean save = imMessageService.save(imMessage); boolean save = imMessageService.save(imMessage);
//推送到被拉入方
Long fkConversationId = imClientToConversation.getConversationId();
String clientId = imClientSender.getClientId();
String toClientId = client2.getClientId();
String imApplicationAppKey = imApplication.getAppKey();
sendEventMsg(messageId, (HashMap) content, fkConversationId, clientId, toClientId, imApplicationAppKey);
// 遍历发送 // 遍历发送
for (ImConversationMembers conversationMembers : membersList) { for (ImConversationMembers conversationMembers : membersList) {
...@@ -317,13 +334,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -317,13 +334,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
continue; continue;
} }
sendEventMsg(messageId, (HashMap) content, conversationMembers.getFkConversationId(), imClientSender.getClientId(), imClientReceiver.getClientId(), imApplication.getAppKey());
}
}
return false;
}
private void sendEventMsg(long messageId, HashMap content, Long fkConversationId, String clientId, String toClientId, String imApplicationAppKey) {
// 封装响应的实体 // 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend(); ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(messageId); imMessageOnlineSend.setMsgId(messageId);
imMessageOnlineSend.setSender(imClientSender.getClientId()); imMessageOnlineSend.setSender(clientId);
imMessageOnlineSend.setContent((HashMap) content); imMessageOnlineSend.setContent(content);
imMessageOnlineSend.setConversationId(conversationMembers.getFkConversationId()); imMessageOnlineSend.setConversationId(fkConversationId);
imMessageOnlineSend.setWithdraw(Boolean.FALSE); imMessageOnlineSend.setWithdraw(Boolean.FALSE);
imMessageOnlineSend.setEvent(Boolean.TRUE); imMessageOnlineSend.setEvent(Boolean.TRUE);
...@@ -335,13 +362,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -335,13 +362,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
responseModel.setMsg(result.getMessage()); responseModel.setMsg(result.getMessage());
responseModel.setData(imMessageOnlineSend); responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null); responseModel.setReqId(null);
writeDataService.write(responseModel, imApplication.getAppKey(), imClientReceiver.getClientId()); writeDataService.write(responseModel, imApplicationAppKey, toClientId);
}
}
return ApiResult.ok();
} }
@Override @Override
...@@ -434,24 +455,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -434,24 +455,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
// 封装响应的实体 // 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend(); sendEventMsg(messageId, (HashMap) content, conversationMembers.getFkConversationId(), imClientSender.getClientId(), imClientReceiver.getClientId(), imApplication.getAppKey());
imMessageOnlineSend.setMsgId(messageId);
imMessageOnlineSend.setSender(imClientSender.getClientId());
imMessageOnlineSend.setContent((HashMap) content);
imMessageOnlineSend.setConversationId(conversationMembers.getFkConversationId());
imMessageOnlineSend.setWithdraw(Boolean.FALSE);
imMessageOnlineSend.setEvent(Boolean.TRUE);
// 向接收方推送
WsResponseModel<ImMessageOnlineSend> responseModel = new WsResponseModel<>();
responseModel.setCmd(WsResponseCmdEnum.CONVERSATION_EVENT_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
writeDataService.write(responseModel, imApplication.getAppKey(), imClientReceiver.getClientId());
} }
...@@ -546,24 +550,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -546,24 +550,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
// 封装响应的实体 // 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend(); sendEventMsg(messageId, (HashMap) content, conversationMembers.getFkConversationId(), imClientSender.getClientId(), imClientReceiver.getClientId(), imApplication.getAppKey());
imMessageOnlineSend.setMsgId(messageId);
imMessageOnlineSend.setSender(imClientSender.getClientId());
imMessageOnlineSend.setContent((HashMap) content);
imMessageOnlineSend.setConversationId(conversationMembers.getFkConversationId());
imMessageOnlineSend.setWithdraw(Boolean.FALSE);
imMessageOnlineSend.setEvent(Boolean.TRUE);
// 向接收方推送
WsResponseModel<ImMessageOnlineSend> responseModel = new WsResponseModel<>();
responseModel.setCmd(WsResponseCmdEnum.CONVERSATION_EVENT_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
writeDataService.write(responseModel, imApplication.getAppKey(), imClientReceiver.getClientId());
} }
...@@ -808,6 +795,15 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -808,6 +795,15 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
@Override @Override
public MyConversationListVo getImConversationInfoByIdForServerApi(Long id) throws Exception {
MyConversationListVo imConversationAndMsgCountById = imConversationMapper.getImConversationInfoByIdForServerApi(id);
JsonMapper jsonMapper = new JsonMapper();
HashMap attributess = jsonMapper.readValue(imConversationAndMsgCountById.getAttribute(), HashMap.class);
imConversationAndMsgCountById.setAttributes(attributess);
return imConversationAndMsgCountById;
}
@Override
public Paging<ImConversationQueryVo> getImConversationPageList(ImConversationPageParam imConversationPageParam) throws Exception { public Paging<ImConversationQueryVo> getImConversationPageList(ImConversationPageParam imConversationPageParam) throws Exception {
Page<ImConversationQueryVo> page = new PageInfo<>(imConversationPageParam, OrderItem.desc(getLambdaColumn(ImConversation::getCreateTime))); Page<ImConversationQueryVo> page = new PageInfo<>(imConversationPageParam, OrderItem.desc(getLambdaColumn(ImConversation::getCreateTime)));
IPage<ImConversationQueryVo> iPage = imConversationMapper.getImConversationPageList(page, imConversationPageParam); IPage<ImConversationQueryVo> iPage = imConversationMapper.getImConversationPageList(page, imConversationPageParam);
......
...@@ -29,6 +29,8 @@ public enum MsgTypeEnum { ...@@ -29,6 +29,8 @@ public enum MsgTypeEnum {
// 成为新群主 -1013 // 成为新群主 -1013
CONVERSATION_NEW_CREATOR(-1013), CONVERSATION_NEW_CREATOR(-1013),
// 服务端api调用 将一名用户添加至会话: ${clientID}通过${type}加入会话 -1014
SERVER_INVITE_CLIENT_JOIN_CONVERSATION(-1014),
; ;
private final int uriCode; private final int uriCode;
......
...@@ -136,5 +136,29 @@ ...@@ -136,5 +136,29 @@
GROUP BY imConversation.id GROUP BY imConversation.id
</select> </select>
<select id="getImConversationInfoByIdForServerApi" resultType="com.wecloud.im.vo.MyConversationListVo">
SELECT imConversation.id,
imConversation.create_time,
imConversation.`name`,
imConversation.attributes AS attribute,
imConversation.system,
im_client.client_id AS creator,
(
SELECT GROUP_CONCAT(im_client.client_id)
FROM im_conversation_members AS im_conversation_members
INNER JOIN im_client AS im_client ON im_client.id = im_conversation_members.fk_client_id
WHERE im_conversation_members.fk_conversation_id = imConversation.id
) AS members,
(SELECT COUNT(*)
FROM im_conversation_members
WHERE fk_conversation_id = imConversation.id) AS memberCount
FROM im_conversation AS imConversation
INNER JOIN im_client AS im_client ON im_client.id = imConversation.creator
WHERE imConversation.id = #{conversationId}
GROUP BY imConversation.id
</select>
</mapper> </mapper>
...@@ -42,5 +42,19 @@ ...@@ -42,5 +42,19 @@
WHERE im_conversation_members.fk_conversation_id = #{conversationId} WHERE im_conversation_members.fk_conversation_id = #{conversationId}
</select> </select>
<select id="getApiImConversationMembersInfoList"
resultType="com.wecloud.im.param.ApiImConversationMembersInfoQueryVo">
SELECT im_client.client_id as clientId,
im_conversation_members.client_remark_name as clientRemarkName,
im_client.head_portrait as headPortrait,
im_client.nickname,
im_conversation_members.attributes AS memberAttributes,
im_client.attributes AS clientAttributes
FROM im_conversation_members AS im_conversation_members
INNER JOIN im_client AS im_client ON im_client.id = im_conversation_members.fk_client_id
WHERE im_conversation_members.fk_conversation_id = #{conversationId}
</select>
</mapper> </mapper>
...@@ -28,7 +28,7 @@ spring: ...@@ -28,7 +28,7 @@ spring:
redis: redis:
database: 0 database: 0
host: localhost host: localhost
password: password: 123456
port: 6379 port: 6379
cloud: cloud:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment