Ver Fonte

修改消息已读规则

wukai há 1 ano atrás
pai
commit
bb77935566

+ 1 - 2
doc-biz/src/main/java/com/doc/biz/controller/DocActorController.java

@@ -103,8 +103,7 @@ public class DocActorController extends BaseController {
             msg.setMsgType("2");
             msg.setToId(u);
             msg.setContent(txt);
-            msg.setFromId(SecurityUtils.getUserId());
-            msgService.send(msg);
+            msgService.sendSysMsg(msg);
         });
 
         return success();

+ 18 - 15
doc-biz/src/main/java/com/doc/biz/ws/WebSocketServer.java

@@ -51,16 +51,16 @@ public class WebSocketServer {
         try {
             session.getBasicRemote().sendText("连接成功");
             //查询用户是否有未读消息,如果有则使用ws推送,延迟2秒
-            Thread.sleep(2000);
             ChatMsg unRead = new ChatMsg();
             unRead.setToId(uid);
             unRead.setIsRead("N");
             List<ChatMsg> list = msgService.selectChatMsgList(unRead);
+            Thread.sleep(2000);
             for (ChatMsg msg : list) {
                 msg.setRemark("unRead");
                 session.getBasicRemote().sendText(JSON.toJSONString(msg));
-                msg.setIsRead("Y");
-                msgService.updateChatMsg(msg);
+//                msg.setIsRead("Y");
+//                msgService.updateChatMsg(msg);
             }
         } catch (IOException e) {
             throw new RuntimeException(e);
@@ -85,14 +85,17 @@ public class WebSocketServer {
     public void onMessage(@PathParam("uid") Long uid, String message) {
         try {
             //获取客户端发送来的数据  {"toId":2,"message":"你好"}
-            ObjectMapper mapper = new ObjectMapper();
-            ChatMsg msg = mapper.readValue(message, ChatMsg.class);
-            msg.setFromId(uid);
-            // 保存到数据库
-            msg.setIsRead("N");
-            msgService.insertChatMsg(msg);
-            //发布集群消息
-            this.sendClusterMessage(message);
+            if (!"heartbeat".equals(message)) {
+                //判断如果不是心跳消息再处理
+                ObjectMapper mapper = new ObjectMapper();
+                ChatMsg msg = mapper.readValue(message, ChatMsg.class);
+                msg.setFromId(uid);
+                // 保存到数据库
+                msg.setIsRead("N");
+                msgService.insertChatMsg(msg);
+                //发布集群消息
+                this.sendClusterMessage(message);
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -119,10 +122,10 @@ public class WebSocketServer {
             try {
                 Session session = currentMap.get(msg.getToId());
                 if (session != null) {
-                    ChatMsg readMsg = new ChatMsg();
-                    readMsg.setMsgId(msg.getMsgId());
-                    readMsg.setIsRead("Y");
-                    msgService.updateChatMsg(readMsg);
+//                    ChatMsg readMsg = new ChatMsg();
+//                    readMsg.setMsgId(msg.getMsgId());
+//                    readMsg.setIsRead("Y");
+//                    msgService.updateChatMsg(readMsg);
                     session.getBasicRemote().sendText(JSON.toJSONString(msg));
                 }
             } catch (Exception e) {

+ 8 - 0
doc-biz/src/main/java/com/doc/chat/controller/ChatMsgController.java

@@ -53,6 +53,14 @@ public class ChatMsgController extends BaseController {
     public TableDataInfo record(@PathVariable Long toId) {
         startPage();
         List<ChatMsg> list = chatMsgService.selectRecordList(SecurityUtils.getUserId(), toId);
+        list.forEach(msg -> {
+            if (msg.getToId().equals(SecurityUtils.getUserId()) && !"Y".equals(msg.getIsRead())) {
+                ChatMsg chatMsg=new ChatMsg();
+                chatMsg.setMsgId(msg.getMsgId());
+                chatMsg.setIsRead("Y");
+                chatMsgService.updateChatMsg(chatMsg);
+            }
+        });
         return getDataTable(list);
     }
 

+ 1 - 1
doc-biz/src/main/java/com/doc/chat/service/impl/ChatMsgServiceImpl.java

@@ -166,7 +166,7 @@ public class ChatMsgServiceImpl implements IChatMsgService {
      */
     @Override
     public int sendSysMsg(ChatMsg msg) {
-        msg.setFromId(1L);
+        msg.setFromId(-1L);
         if (msg.getFromId().equals(msg.getToId())) {
             return 0;
         }

+ 10 - 3
doc-biz/src/main/resources/mapper/chat/ChatMsgMapper.xml

@@ -16,7 +16,14 @@
     </resultMap>
 
     <sql id="selectChatMsgVo">
-        select MSG_ID, FROM_ID, TO_ID, MSG_TYPE, CONTENT, ID_INDEX, CREATE_TIME
+        select MSG_ID,
+               FROM_ID,
+               TO_ID,
+               MSG_TYPE,
+               CONTENT,
+               IS_READ,
+               ID_INDEX,
+               CREATE_TIME
         from chat_msg
     </sql>
 
@@ -42,13 +49,13 @@
         <include refid="selectChatMsgVo"/>
         where msg_id in (SELECT MAX(msg_id) msg_id
         FROM chat_msg
-        WHERE from_id = #{user_id} OR (to_id = #{user_id} and is_read='Y')
+        WHERE from_id = #{userId} OR to_id = #{userId}
         GROUP BY id_index)
         ORDER BY create_time desc,msg_id desc
     </select>
     <select id="selectRecordList" resultType="com.doc.chat.domain.ChatMsg">
         <include refid="selectChatMsgVo"/>
-        where id_index=#{idIndex} and(from_id=#{fromId} or (is_read='Y' and to_id=#{fromId}))
+        where id_index=#{idIndex}
         order by CREATE_TIME desc
     </select>