ソースを参照

fix : Websocket调试修改001

bilingfeng 1 年間 前
コミット
a0613a9250

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -23,7 +23,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 <Websocket调试修改21> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <Websocket调试修改001> ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 1 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfAppletMsgServiceImpl.java

@@ -163,6 +163,7 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
                 .openId(kfAppletMsgDTO.getFromUserName())
                 .readStatus(Boolean.FALSE)
                 .roomId(kfRoom == null ? null : kfRoom.getId())
+                .kfUserId(kfRoom == null ? null : kfRoom.getKfUserId())
                 .msgOwner(KfRoomMsgOwnerEnum.KF_MSG_OWNER_USER.getValue())
                 .content(JsonUtil.toString(msgContent))
                 .source(postData)

+ 17 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfRoomMsgServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.module.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.game.module.manage.enums.KfRoomMsgTypeEnum;
@@ -12,11 +13,14 @@ import com.zanxiang.game.module.mybatis.mapper.KfRoomMsgMapper;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.bean.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import reactor.util.function.Tuple2;
 import reactor.util.function.Tuples;
 
+import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -35,8 +39,21 @@ public class KfRoomMsgServiceImpl extends ServiceImpl<KfRoomMsgMapper, KfRoomMsg
                         .eq(KfRoomMsg::getRoomId, roomId)
                         .orderByDesc(KfRoomMsg::getCreateTime)
         );
+        //构造消息列表
         List<KfWebSocketMsgDTO.RoomMsgBean> roomMsgBeanList = kfRoomMsgPage.getRecords().stream()
                 .map(this::transform).collect(Collectors.toList());
+        //更新消息已读状态
+        List<String> msgIdList = roomMsgBeanList.stream()
+                .filter(msg -> Objects.equals(msg.getReadStatus(), Boolean.FALSE))
+                .map(KfWebSocketMsgDTO.RoomMsgBean::getMsgId)
+                .collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(msgIdList)) {
+            super.update(new LambdaUpdateWrapper<KfRoomMsg>()
+                    .set(KfRoomMsg::getReadStatus, Boolean.TRUE)
+                    .set(KfRoomMsg::getUpdateTime, LocalDateTime.now())
+                    .in(KfRoomMsg::getMsgId, msgIdList));
+        }
+        //返回分页数据, 消息列表
         return Tuples.of(this.transform(kfRoomMsgPage), roomMsgBeanList);
     }
 

+ 0 - 7
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/websocket/KfMsgWebsocketHandler.java

@@ -260,13 +260,6 @@ public class KfMsgWebsocketHandler implements WebSocketHandler {
             this.sendMessage(session, KfWebSocketMsgDTO.fail(param.getWebSocketMsgType(),
                     "获取房间历史消息参数错误, roomId不可为空, param : " + JsonUtil.toString(param)));
         }
-        //当获取第一页的时候, 房间未读消息全部更新成已读消息
-        if (param.getPage().getPageNum() == 1) {
-            kfRoomMsgService.update(new LambdaUpdateWrapper<KfRoomMsg>()
-                    .set(KfRoomMsg::getReadStatus, Boolean.TRUE)
-                    .set(KfRoomMsg::getUpdateTime, LocalDateTime.now())
-                    .eq(KfRoomMsg::getRoomId, param.getRoomId()));
-        }
         //分页获取房间消息列表
         Tuple2<KfWebSocketMsgDTO.PageBean, List<KfWebSocketMsgDTO.RoomMsgBean>> tuple2 = kfRoomMsgService
                 .msgRoomHistory(param.getRoomId(), param.getPage());