Commit ebfb7f06 by Future

未读消息落库改批量

parent ea67a295
...@@ -35,8 +35,6 @@ import com.wecloud.im.ws.enums.MsgTypeEnum; ...@@ -35,8 +35,6 @@ import com.wecloud.im.ws.enums.MsgTypeEnum;
import com.wecloud.im.ws.enums.WsResponseCmdEnum; import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender; import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.pushserver.client.model.constant.MqConstant;
import com.wecloud.pushserver.client.model.dto.PushDTO;
import com.wecloud.utils.JsonUtils; import com.wecloud.utils.JsonUtils;
import com.wecloud.utils.SnowflakeUtil; import com.wecloud.utils.SnowflakeUtil;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
...@@ -166,16 +164,14 @@ public class NormalChatAction { ...@@ -166,16 +164,14 @@ public class NormalChatAction {
} }
ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(data, imClientSender, imApplication.getId()); ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(data, imClientSender, imApplication.getId());
// 入库 保存收件箱
batchSaveInbox(imApplication, conversation, imMessageOnlineSend.getMsgId(), membersList);
// 再给所有人发 // 再给所有人发
for (ImConversationMembers member : membersList) { for (ImConversationMembers member : membersList) {
if (member.getFkClientId().equals(imClientSender.getId())) { if (member.getFkClientId().equals(imClientSender.getId())) {
// 不给自己发 // 不给自己发
continue; continue;
} }
// 入库 保存收件箱
saveImInbox(imApplication, conversation, imMessageOnlineSend.getMsgId(),
member, SnowflakeUtil.getId());
// 入库成功后 判断是否是临时会话 如果是,双方会话display状态是否是1(显示),如果不是,需要修改为是 // 入库成功后 判断是否是临时会话 如果是,双方会话display状态是否是1(显示),如果不是,需要修改为是
if (ChatTypeEnum.TEMP.getCode().equals(conversation.getChatType())) { if (ChatTypeEnum.TEMP.getCode().equals(conversation.getChatType())) {
// 木有只有私聊一种临时会话类型 // 木有只有私聊一种临时会话类型
...@@ -277,21 +273,24 @@ public class NormalChatAction { ...@@ -277,21 +273,24 @@ public class NormalChatAction {
* @param imApplication * @param imApplication
* @param conversation * @param conversation
* @param messageId * @param messageId
* @param conversationMembers * @param membersList
* @param imInboxId
*/ */
private void saveImInbox(ImApplication imApplication, ImConversationQueryVo conversation, long messageId, private void batchSaveInbox(ImApplication imApplication, ImConversationQueryVo conversation, long messageId,
ImConversationMembers conversationMembers, long imInboxId) { List<ImConversationMembers> membersList) {
ImInbox imInbox = new ImInbox(); List<ImInbox> inboxes = Lists.newArrayList();
imInbox.setId(imInboxId); for (ImConversationMembers member : membersList) {
imInbox.setCreateTime(new Date()); ImInbox imInbox = new ImInbox();
imInbox.setFkAppid(imApplication.getId()); imInbox.setId(SnowflakeUtil.getId());
imInbox.setReceiver(conversationMembers.getFkClientId()); imInbox.setCreateTime(new Date());
imInbox.setFkMsgId(messageId); imInbox.setFkAppid(imApplication.getId());
imInbox.setReadMsgStatus(0); imInbox.setReceiver(member.getFkClientId());
imInbox.setReceiverMsgStatus(0); imInbox.setFkMsgId(messageId);
imInbox.setFkConversationId(conversation.getId()); imInbox.setReadMsgStatus(0);
imInboxService.save(imInbox); imInbox.setReceiverMsgStatus(0);
imInbox.setFkConversationId(conversation.getId());
inboxes.add(imInbox);
}
imInboxService.saveBatch(inboxes);
} }
/** /**
......
package com.wecloud.im.ws.cache; package com.wecloud.im.ws.cache;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.im.ws.model.redis.ClientChannelInfo;
import com.wecloud.im.ws.utils.RedisUtils;
import com.wecloud.utils.GetIpUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.wecloud.im.ws.model.redis.ClientChannelInfo;
import com.wecloud.im.ws.utils.RedisUtils;
import com.wecloud.utils.GetIpUtils;
/** /**
* @author hewei123@163.com * @author hewei123@163.com
* @Description 用户与redis绑定 * @Description 用户与redis绑定
...@@ -73,9 +71,7 @@ public class UserStateCacheManager extends UserStateListener { ...@@ -73,9 +71,7 @@ public class UserStateCacheManager extends UserStateListener {
public List<ClientChannelInfo> findOnlineInfosByClientId(Long clientId) { public List<ClientChannelInfo> findOnlineInfosByClientId(Long clientId) {
// 获取所有 CLIENTS的 <platform>:<ip> // 获取所有 CLIENTS的 <platform>:<ip>
Long time1 = System.currentTimeMillis();
Set<String> platformAndIps = redisUtils.getForSetMembers(getUserStateCacheKey(clientId)); Set<String> platformAndIps = redisUtils.getForSetMembers(getUserStateCacheKey(clientId));
log.info("redis中获取用户数据耗时 {} 内容 {}", System.currentTimeMillis() - time1, JSON.toJSONString(platformAndIps));
ArrayList<ClientChannelInfo> clientChannelInfos = new ArrayList<>(); ArrayList<ClientChannelInfo> clientChannelInfos = new ArrayList<>();
for(String platformAndIp : platformAndIps) { for(String platformAndIp : platformAndIps) {
......
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