Commit 4022001d by Future

事件消息存储 msgType补存

parent 0319f9a1
......@@ -34,6 +34,7 @@ import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.utils.JsonUtils;
import com.wecloud.utils.SnowflakeUtil;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
......@@ -42,7 +43,6 @@ import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import com.wecloud.utils.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
......@@ -295,11 +295,11 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
Map<String, Object> content = new HashMap<>();
content.put("operator", imClientSender.getClientId()); //操作的client ID
content.put("passivityOperator", clientToConversation.getClientId()); //被操作的client ID
content.put("type", MsgTypeEnum.INVITE_CLIENT_JOIN_CONVERSATION.getUriCode()); //xx邀请xx加入会话 -1007
imMessage.setContent(JsonUtils.encodeJson(content));
// 保存消息至消息表
imMessage.setId(messageId);
imMessage.setMsgType(MsgTypeEnum.INVITE_CLIENT_JOIN_CONVERSATION.getUriCode());
imMessage.setCreateTime(new Date());
imMessage.setFkAppid(imApplication.getId());
imMessage.setSender(imClientSender.getId());
......@@ -310,31 +310,43 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessage.setFkConversationId(imClientToConversation.getConversationId());
boolean save = imMessageService.save(imMessage);
// 遍历发送
for (ImConversationMembers conversationMembers : membersList) {
// 遍历发送给已在群内的成员
for (ImConversationMembers conversationMember : membersList) {
sendEventMsgToMember(imApplication, conversationMember.getFkClientId(), imMessage, imClientSender, clientToConversation);
}
// 发送给刚被拉入群的成员
sendEventMsgToMember(imApplication, clientToConversation.getId(), imMessage, imClientSender, clientToConversation);
}
// 将群成员数量减
imConversationMapper.addMemberCount(imApplication.getId(), imClientToConversation.getConversationId(), needAddCount);
ImConversationQueryVo conversation = imConversationMapper.getImConversationById(imClientToConversation.getConversationId());
if (conversation.getMemberCount() > 2000) {
// 升级为万人群
imConversationMapper.upgradeToThousandChat(imApplication.getId(), imClientToConversation.getConversationId());
}
return ApiResult.ok();
}
private void sendEventMsgToMember(ImApplication imApplication, Long conversationMemberClientId, ImMessage imMessage,
ImClient clientSender, ImClient clientToConversation) {
// 查询接收方
ImClient imClientReceiver = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, imApplication.getId())
.eq(ImClient::getId, conversationMembers.getFkClientId()));
.eq(ImClient::getId, conversationMemberClientId));
if (imClientReceiver == null) {
continue;
return;
}
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(messageId);
imMessageOnlineSend.setType(MsgTypeEnum.INVITE_CLIENT_JOIN_CONVERSATION.getUriCode());
imMessageOnlineSend.setSender(imClientSender.getClientId());
Map<String, String> contentMap = new HashMap<>();
// 操作的client ID
contentMap.put("operator", imClientSender.getClientId());
// 被操作的client ID
contentMap.put("passivityOperator", clientToConversation.getClientId());
imMessageOnlineSend.setContent(contentMap);
imMessageOnlineSend.setConversationId(conversationMembers.getFkConversationId());
imMessageOnlineSend.setMsgId(imMessage.getId());
imMessageOnlineSend.setType(imMessage.getMsgType());
imMessageOnlineSend.setSender(clientSender.getClientId());
imMessageOnlineSend.setContent(JsonUtils.decodeJson2Map(imMessage.getContent()));
imMessageOnlineSend.setConversationId(imMessage.getFkConversationId());
imMessageOnlineSend.setWithdraw(Boolean.FALSE);
imMessageOnlineSend.setEvent(Boolean.TRUE);
......@@ -347,21 +359,6 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, imClientReceiver.getId());
}
}
// 将群成员数量减
imConversationMapper.addMemberCount(imApplication.getId(), imClientToConversation.getConversationId(), needAddCount);
ImConversationQueryVo conversation = imConversationMapper.getImConversationById(imClientToConversation.getConversationId());
if(conversation.getMemberCount() > 2000) {
// 升级为万人群
imConversationMapper.upgradeToThousandChat(imApplication.getId(), imClientToConversation.getConversationId());
}
return ApiResult.ok();
}
@Override
......@@ -425,11 +422,11 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
Map<String, Object> content = new HashMap<>();
content.put("operator", imClientSender.getClientId()); //操作的client ID
content.put("passivityOperator", client2.getClientId()); //被操作的client ID
content.put("type", MsgTypeEnum.REMOVE_CLIENT_CONVERSATION.getUriCode()); //xx被xx移出会话 -1008
imMessage.setContent(JsonUtils.encodeJson(content));
// 保存消息至消息表
imMessage.setId(messageId);
imMessage.setMsgType(MsgTypeEnum.REMOVE_CLIENT_CONVERSATION.getUriCode());
imMessage.setCreateTime(new Date());
imMessage.setFkAppid(imApplication.getId());
imMessage.setSender(imClientSender.getId());
......@@ -455,14 +452,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(messageId);
imMessageOnlineSend.setType(MsgTypeEnum.REMOVE_CLIENT_CONVERSATION.getUriCode());
imMessageOnlineSend.setType(imMessage.getMsgType());
imMessageOnlineSend.setSender(imClientSender.getClientId());
Map<String, Object> contentMap = new HashMap<>();
// 操作的client ID
contentMap.put("operator", imClientSender.getClientId());
// 被操作的client ID
contentMap.put("passivityOperator", client2.getClientId());
imMessageOnlineSend.setContent(contentMap);
imMessageOnlineSend.setContent(content);
imMessageOnlineSend.setConversationId(conversationMembers.getFkConversationId());
imMessageOnlineSend.setWithdraw(Boolean.FALSE);
imMessageOnlineSend.setEvent(Boolean.TRUE);
......@@ -476,9 +468,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, imClientReceiver.getId());
}
}
// 将群成员数量减
......@@ -540,13 +530,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
long messageId = SnowflakeUtil.getId();
ImMessage imMessage = new ImMessage();
Map<String, Object> content = new HashMap<>();
content.put("type", MsgTypeEnum.LEAVE_CONVERSATION.getUriCode()); // xx主动退出会话
String asString = JsonUtils.encodeJson(content);;
imMessage.setContent(asString);
// 保存消息至消息表
imMessage.setId(messageId);
imMessage.setMsgType(MsgTypeEnum.LEAVE_CONVERSATION.getUriCode());
imMessage.setCreateTime(new Date());
imMessage.setFkAppid(imApplication.getId());
imMessage.setSender(imClientSender.getId());
......
......@@ -179,6 +179,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 消息实体
ImMessage imMessage = new ImMessage();
imMessage.setId(msgId);
imMessage.setMsgType(msgTypeEnum.getUriCode());
imMessage.setCreateTime(new Date());
imMessage.setFkAppid(curentClient.getFkAppid());
imMessage.setSender(curentClient.getId());
......
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