Преглед на файлове

fix:互动消息类型、会话列表互动消息和关注消息最后一条消息处理

zhangwei преди 2 месеца
родител
ревизия
8b5b0ab2a1

+ 89 - 20
application-webadmin/src/main/java/com/tourism/webadmin/app/website/service/impl/TourMemberImpl.java

@@ -6,11 +6,8 @@ import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.tourism.common.additional.config.ApplicationConfig;
-import com.tourism.common.core.object.ResponseResult;
 import com.tourism.common.core.object.TokenData;
 import com.tourism.webadmin.app.website.dto.*;
 import com.tourism.webadmin.app.website.service.TourGroupService;
@@ -19,12 +16,9 @@ import com.tourism.webadmin.app.website.vo.MainMemberVo;
 import com.tourism.webadmin.back.dao.TourImMemberMapper;
 import com.tourism.webadmin.back.model.*;
 import com.tourism.webadmin.back.model.constant.IsTrue;
-import com.tourism.webadmin.back.model.constant.NoticeType;
 import com.tourism.webadmin.back.service.*;
-import com.tourism.webadmin.enums.GroupAuthenticationState;
-import com.tourism.webadmin.enums.GroupRole;
-import com.tourism.webadmin.enums.SystemDefault;
-import com.tourism.webadmin.enums.SystemDefaultHead;
+import com.tourism.webadmin.enums.*;
+import com.tourism.webadmin.strategy.dto.FocusDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -129,11 +123,13 @@ public class TourMemberImpl extends ServiceImpl<TourImMemberMapper, TourImMember
                 .eq("revocation_tag",0)
                 .groupBy("group_id");
         List<Map<String, Object>> maps = tourImMessageService.getBaseMapper().selectMaps(query);
+        //获取未读消息数量  groupId->number
         Map<Long, Integer> unreadCountMap = maps.stream()
                 .collect(Collectors.toMap(
                         itemMap -> (Long) itemMap.get("group_id"),
                         itemMap -> ((Long) itemMap.get("unreadCount")).intValue()
                 ));
+        //最后一条消息  groupId->message
         HashMap<Long, TourImMessage> messageHashMap = new HashMap<>();
         for (TourImMessage tourImMessage : message) {
             messageHashMap.put(tourImMessage.getGroupId(), tourImMessage);
@@ -146,24 +142,26 @@ public class TourMemberImpl extends ServiceImpl<TourImMemberMapper, TourImMember
             mainMemberVo.setUnreadMessageCount(num);
             TourImMessage tourImMessage = messageHashMap.get(l);
             if(tourImMessage!=null){
-                //单独处理系统消息关注消息和互动消息
-                String content = tourImMessage.getMessageContent();
-                if (content !=null){
-                    MessageContentBase bean = JSONUtil.toBean(content, MessageContentBase.class);
-                    if (bean!=null){
-                        String getUserId = bean.getSendUserId();
-                        TourUser tourUser = tourUserService.getById(Long.parseLong(getUserId));
-//                        if ()
-                    }
-
-                }
+//                //单独处理系统消息关注消息和互动消息
+//                String content = tourImMessage.getMessageContent();
+//                if (content !=null){
+//                    MessageContentBase bean = JSONUtil.toBean(content, MessageContentBase.class);
+//                    if (bean!=null){
+//                        String getUserId = bean.getSendUserId();
+//                        TourUser tourUser = tourUserService.getById(Long.parseLong(getUserId));
+////                        if ()
+//                    }
+//
+//                }
                 mainMemberVo.setLastMessage(tourImMessage);
                 mainMemberVo.setCreateTime(tourImMessage.getCreateTime());
             }
         }
-        //排序
+        //排序  1 系统 2 关注 3 互动 .....
         List<MainMemberVo> sort = sort(list);
         userMainMemberVo.setList(sort);
+        //处理前三个固定群聊的最后一条消息
+        this.delLastSysMessage(sort);
         return userMainMemberVo;
     }
 
@@ -431,6 +429,77 @@ public class TourMemberImpl extends ServiceImpl<TourImMemberMapper, TourImMember
     }
 
 
+    /**
+     *  处理消息提示
+     * @param list
+     */
+    public void delLastSysMessage(List<MainMemberVo> list){
+        MainMemberVo mainMemberVo = list.get(1);//关注消息
+        String message="";
+        TourImMessage lastMessage = mainMemberVo.getLastMessage();
+        String messageContent = lastMessage.getMessageContent();
+
+        if(mainMemberVo.getLastMessage()!=null){
+            message = NoticeTypeInfo.NOTICE_LIKE_COMMENT.getOperation();
+            //关注消息类容对象
+            FocusDTO bean = JSONUtil.toBean(messageContent, FocusDTO.class);
+            //发送人ID
+            message=bean.getTourUserVo().getShowName()+message;
+        }
+        MainMemberVo vo = list.get(2);//互动消息
+        if(vo.getLastMessage()!=null){
+            //互动消息类容对象
+            InteractionMessageDto bean = JSONUtil.toBean(messageContent, InteractionMessageDto.class);
+            String type = bean.getNoticeType();
+            String getUserId = bean.getGetUserId();
+            //业务
+            String business="";
+            if(BusinessType.TRAVELNOTES.getCode().equals(bean.getType())){
+                //游记
+                business="游记";
+            }
 
+            //发送人信息
+            TourUser byId = tourUserService.getById(getUserId);
+            if (bean==null) return;
+
+            switch (type)
+            {
+                case "4":
+                    //用户 +关注了你
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_LIKE_COMMENT.getOperation();
+                    break;
+                case "5":
+                    //用户 + 点赞 + 业务
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_LIKE.getOperation()+business;
+                    break;
+                case "6":
+                    //用户 +评论了你
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_COMMENT.getOperation();
+                    break;
+                case "7":
+                    //用户+收藏了你的 + 业务
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_COLLECTION.getOperation()+business;
+                    break;
+                case "8":
+                    //用户+浏览了你的 + 业务
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_BROWSE.getOperation()+business;
+                    break;
+                case "9":
+                    //用户 + 访问了你的主页
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_VISIT_HOME.getOperation();
+                    break;
+                case "10":
+                    //用户 +评论提到了你
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_COMMENT_MENTION.getOperation();
+                    break;
+                case "11":
+                    //用户 +评论提到了你
+                    message=byId.getShowName()+NoticeTypeInfo.NOTICE_ARTICLE_MENTION.getOperation();
+                    break;
+            }
+        }
+        lastMessage.setMessageContent(message);
+    }
 
 }

+ 7 - 6
application-webadmin/src/main/java/com/tourism/webadmin/enums/NoticeTypeInfo.java

@@ -6,13 +6,14 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum NoticeTypeInfo {
+    NOTICE_LIKE_COMMENT(4,"关注了你"),
     NOTICE_LIKE(5,"点赞"),
-    NOTICE_COMMENT(6,"评论"),
-    NOTICE_COLLECTION(7,"收藏"),
-    NOTICE_BROWSE(8,"浏览"),
-    NOTICE_VISIT_HOME(9,"访问"),
-    NOTICE_COMMENT_MENTION(10,"评论提到"),
-    NOTICE_ARTICLE_MENTION(11,"文章提到提到");
+    NOTICE_COMMENT(6,"评论了你"),
+    NOTICE_COLLECTION(7,"收藏了你的"),
+    NOTICE_BROWSE(8,"浏览了你的"),
+    NOTICE_VISIT_HOME(9,"访问了你的主页"),
+    NOTICE_COMMENT_MENTION(10,"评论提到了你"),
+    NOTICE_ARTICLE_MENTION(11,"文章提到提到了你");
 
     private int code;
     private String operation;