From 38f4107cbe3cbb066f77365b16af96f5b7650bd8 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期五, 26 七月 2024 08:53:19 +0800
Subject: [PATCH] 修改:历史消息和会话列表增加姓名和头像字段

---
 ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java                      |   37 +++++++++
 ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml                      |   32 +++++++-
 ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml                  |   29 ++++++-
 ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java     |   54 +++++++++----
 ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java |   31 +++++--
 ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java                  |   38 +++++++++
 6 files changed, 184 insertions(+), 37 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java
index 6bc1c2f..9b44476 100644
--- a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java
@@ -24,6 +24,8 @@
     /** 鐢ㄦ埛ID */
     @Excel(name = "鐢ㄦ埛ID")
     private String userId;
+    private String nickName;
+    private String avatar;
     /** 娑堟伅绫诲瀷 */
     @Excel(name = "娑堟伅绫诲瀷")
     private String type;
@@ -35,7 +37,8 @@
     /** 鐩爣ID */
     @Excel(name = "鐩爣ID")
     private String targetId;
-
+    private String targetNickName;
+    private String targetAvatar;
     public void setId(String id) 
     {
         this.id = id;
@@ -89,6 +92,38 @@
         this.targetId = targetId;
     }
 
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getTargetNickName() {
+        return targetNickName;
+    }
+
+    public void setTargetNickName(String targetNickName) {
+        this.targetNickName = targetNickName;
+    }
+
+    public String getTargetAvatar() {
+        return targetAvatar;
+    }
+
+    public void setTargetAvatar(String targetAvatar) {
+        this.targetAvatar = targetAvatar;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java
index 610c7ee..d8364fd 100644
--- a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java
@@ -30,11 +30,13 @@
     /** 褰撳墠鎴愬憳id */
     @Excel(name = "褰撳墠鎴愬憳id")
     private String userId;
-
+    private String nickName;
+    private String avatar;
     /** 鐩爣鎴愬憳id */
     @Excel(name = "鐩爣鎴愬憳id")
     private String targetId;
-
+    private String targetNickName;
+    private String targetAvatar;
     /**
      * 鏈�鍚庝竴鏉℃秷鎭�
      */
@@ -104,4 +106,36 @@
     public void setUserId(String userId) {
         this.userId = userId;
     }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getTargetNickName() {
+        return targetNickName;
+    }
+
+    public void setTargetNickName(String targetNickName) {
+        this.targetNickName = targetNickName;
+    }
+
+    public String getTargetAvatar() {
+        return targetAvatar;
+    }
+
+    public void setTargetAvatar(String targetAvatar) {
+        this.targetAvatar = targetAvatar;
+    }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
index 29b8097..d7a967c 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
@@ -7,10 +7,13 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.call.domain.*;
 import com.ruoyi.call.mapper.*;
+import com.ruoyi.call.service.IArdCallGroupService;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 
 import com.ruoyi.common.utils.MessageUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.utils.websocket.util.WebSocketUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -46,6 +49,8 @@
     private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper;
     @Resource
     private ArdCallGroupUserMapper ardCallGroupUserMapper;
+    @Resource
+    private IArdCallGroupService ardCallGroupService;
 
     /**
      * 鏌ヨ浼氳瘽鍘嗗彶
@@ -55,7 +60,18 @@
      */
     @Override
     public ArdCallHistory selectArdCallHistoryById(String id) {
-        return ardCallHistoryMapper.selectArdCallHistoryById(id);
+        ArdCallHistory ardCallHistory = ardCallHistoryMapper.selectArdCallHistoryById(id);
+        if (ardCallHistory != null) {
+            //缇よ亰鍒欏皢targetNickName鏀逛负缇ゅ悕绉�
+            ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(ardCallHistory.getSessionId());
+            if (ardCallSession != null && ardCallSession.getType().equals("1")) {
+                ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(ardCallHistory.getTargetId());
+                if (ardCallGroup != null) {
+                    ardCallHistory.setTargetNickName(ardCallGroup.getName());
+                }
+            }
+        }
+        return ardCallHistory;
     }
 
     /**
@@ -66,7 +82,18 @@
      */
     @Override
     public List<ArdCallHistory> selectArdCallHistoryList(ArdCallHistory ardCallHistory) {
-        return ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory);
+        List<ArdCallHistory> ardCallHistories = ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory);
+        ardCallHistories.stream().forEach(aCallHistory -> {
+            //缇よ亰鍒欏皢targetNickName鏀逛负缇ゅ悕绉�
+            ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(aCallHistory.getSessionId());
+            if (ardCallSession != null && ardCallSession.getType().equals("1")) {
+                ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(aCallHistory.getTargetId());
+                if (ardCallGroup != null) {
+                    aCallHistory.setTargetNickName(ardCallGroup.getName());
+                }
+            }
+        });
+        return ardCallHistories;
     }
 
     /**
@@ -104,13 +131,10 @@
             Map<String, Object> messageMap = new HashMap<>();
             messageMap.put("type", "message");
             messageMap.put("message", JSON.toJSONString(ardCallHistory));
-            ONLINE_USER_SESSIONS.entrySet().stream()
-                    .filter(entry -> {
-                        Matcher matcher = pattern.matcher(entry.getKey());
-                        return matcher.matches();
-                    })
-                    .map(Map.Entry::getValue)
-                    .forEach(session -> WebSocketUtils.sendMessage(session, messageMap));
+            ONLINE_USER_SESSIONS.entrySet().stream().filter(entry -> {
+                Matcher matcher = pattern.matcher(entry.getKey());
+                return matcher.matches();
+            }).map(Map.Entry::getValue).forEach(session -> WebSocketUtils.sendMessage(session, messageMap));
 
         } else {
             //鏇存柊缇よ亰鐢ㄦ埛鏈娑堟伅璁℃暟
@@ -141,14 +165,10 @@
                     Map<String, Object> messageMap = new HashMap<>();
                     messageMap.put("type", "message");
                     messageMap.put("message", JSON.toJSONString(ardCallHistory));
-                    ONLINE_USER_SESSIONS.entrySet().stream()
-                            .filter(entry ->
-                            {
-                                Matcher matcher = pattern.matcher(entry.getKey());
-                                return matcher.matches();
-                            })
-                            .map(Map.Entry::getValue)
-                            .forEach(session -> WebSocketUtils.sendMessage(session, messageMap));
+                    ONLINE_USER_SESSIONS.entrySet().stream().filter(entry -> {
+                        Matcher matcher = pattern.matcher(entry.getKey());
+                        return matcher.matches();
+                    }).map(Map.Entry::getValue).forEach(session -> WebSocketUtils.sendMessage(session, messageMap));
                 }
 
             });
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java
index f6cdeea..709b588 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java
@@ -4,14 +4,15 @@
 import java.util.List;
 
 import com.ruoyi.call.compare.ArdCallSessionUserComparator;
-import com.ruoyi.call.domain.ArdCallGroupUser;
-import com.ruoyi.call.domain.ArdCallHistory;
-import com.ruoyi.call.domain.ArdCallUnreadMessages;
+import com.ruoyi.call.domain.*;
 import com.ruoyi.call.mapper.ArdCallGroupUserMapper;
 import com.ruoyi.call.mapper.ArdCallHistoryMapper;
 import com.ruoyi.call.mapper.ArdCallUnreadMessagesMapper;
+import com.ruoyi.call.service.IArdCallGroupService;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -21,7 +22,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.call.mapper.ArdCallSessionUserMapper;
-import com.ruoyi.call.domain.ArdCallSessionUser;
 import com.ruoyi.call.service.IArdCallSessionUserService;
 
 import javax.annotation.Resource;
@@ -42,6 +42,8 @@
     private ArdCallSessionUserComparator ardCallSessionUserComparator;
     @Resource
     private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper;
+    @Resource
+    private IArdCallGroupService ardCallGroupService;
 
     /**
      * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛�
@@ -55,10 +57,9 @@
     }
 
     @Override
-    public ArdCallSessionUser selectArdCallSessionUserBySesionId(String userId,String sessionId) {
-        ArdCallSessionUser ardCallSessionUser = ardCallSessionUserMapper.selectArdCallSessionUserBySesionId(userId,sessionId);
-        if(ardCallSessionUser!=null)
-        {
+    public ArdCallSessionUser selectArdCallSessionUserBySesionId(String userId, String sessionId) {
+        ArdCallSessionUser ardCallSessionUser = ardCallSessionUserMapper.selectArdCallSessionUserBySesionId(userId, sessionId);
+        if (ardCallSessionUser != null) {
             //鑾峰彇鏈鏁伴噺
             ArdCallUnreadMessages ardCallUnreadMessages = ardCallUnreadMessagesMapper.getUnreadMessage(ardCallSessionUser.getSessionId(), ardCallSessionUser.getUserId());
             if (ardCallUnreadMessages != null) {
@@ -69,6 +70,13 @@
             //鑾峰彇鏈�鍚庝竴鏉℃秷鎭疄浣�
             ArdCallHistory ardCallHistory = ardCallHistoryMapper.selectLastArdCallHistory(ardCallSessionUser.getSessionId());
             ardCallSessionUser.setArdCallHistory(ardCallHistory);
+            //缇よ亰targetNickName鏀逛负缇ゅ悕绉�
+            if (ardCallSessionUser.getType().equals("1")) {
+                ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(ardCallSessionUser.getTargetId());
+                if (ardCallGroup != null) {
+                    ardCallSessionUser.setTargetNickName(ardCallGroup.getName());
+                }
+            }
         }
         return ardCallSessionUser;
     }
@@ -93,6 +101,13 @@
             //鑾峰彇鏈�鍚庝竴鏉℃秷鎭疄浣�
             ArdCallHistory ardCallHistory = ardCallHistoryMapper.selectLastArdCallHistory(callSessionUser.getSessionId());
             callSessionUser.setArdCallHistory(ardCallHistory);
+            //缇よ亰targetNickName鏀逛负缇ゅ悕绉�
+            if (callSessionUser.getType().equals("1")) {
+                ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(callSessionUser.getTargetId());
+                if (ardCallGroup != null) {
+                    callSessionUser.setTargetNickName(ardCallGroup.getName());
+                }
+            }
         });
         //杩囨护鎺夋病鏈夊巻鍙茶褰曠殑浼氳瘽
         ardCallSessionUsers = ardCallSessionUsers.stream().filter(obj -> obj.getArdCallHistory() != null).collect(Collectors.toList());
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml
index 75c08a0..839f322 100644
--- a/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml
+++ b/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml
@@ -10,7 +10,11 @@
         <result property="content" column="content"/>
         <result property="sessionId" column="session_id"/>
         <result property="userId" column="user_id"/>
+        <result property="nickName" column="nick_name"/>
+        <result property="avatar" column="avatar"/>
         <result property="targetId" column="target_id"/>
+        <result property="targetNickName" column="target_nick_name"/>
+        <result property="targetAvatar" column="target_avatar"/>
         <result property="createBy" column="create_by"/>
         <result property="createTime" column="create_time"/>
         <result property="updateBy" column="update_by"/>
@@ -30,12 +34,32 @@
                update_time
         from ard_call_history
     </sql>
-
+    <sql id="selectArdCallHistoryVo1">
+        SELECT
+            ach.ID,
+            ach.TYPE,
+            ach.CONTENT,
+            ach.session_id,
+            ach.user_id,
+            ach.target_id,
+            ach.create_by,
+            ach.create_time,
+            ach.update_by,
+            ach.update_time,
+            u.nick_name,
+            u.avatar,
+            u1.nick_name AS target_nick_name,
+            u1.avatar AS target_avatar
+        FROM
+            ard_call_history ach
+                LEFT JOIN sys_user u ON u.user_id = ach.user_id
+                LEFT JOIN sys_user u1 ON u1.user_id = ach.target_id
+    </sql>
     <select id="selectArdCallHistoryList" parameterType="ArdCallHistory" resultMap="ArdCallHistoryResult">
-        <include refid="selectArdCallHistoryVo"/>
+        <include refid="selectArdCallHistoryVo1"/>
         <where>
             <if test="sessionId != null  and sessionId != ''">and session_id= #{sessionId}</if>
-            <if test="userId != null  and userId != ''">and user_id = #{userId}</if>
+            <if test="userId != null  and userId != ''">and ach.user_id = #{userId}</if>
             <if test="targetId != null  and targetId != ''">and target_id = #{targetId}</if>
             <if test="type != null  and type != ''">and type = #{type}</if>
             <if test="content != null  and content != ''">and content = #{content}</if>
@@ -44,7 +68,7 @@
     </select>
 
     <select id="selectArdCallHistoryById" parameterType="String" resultMap="ArdCallHistoryResult">
-        <include refid="selectArdCallHistoryVo"/>
+        <include refid="selectArdCallHistoryVo1"/>
         where id = #{id}
     </select>
 
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml
index 5eee9a0..4e995c9 100644
--- a/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml
+++ b/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml
@@ -9,27 +9,46 @@
         <result property="sessionId" column="session_id"/>
         <result property="type" column="type"/>
         <result property="userId" column="user_id"/>
+        <result property="nickName" column="nick_name"/>
+        <result property="avatar" column="avatar"/>
         <result property="targetId" column="target_id"/>
+        <result property="targetNickName" column="target_nick_name"/>
+        <result property="targetAvatar" column="target_avatar"/>
     </resultMap>
 
     <sql id="selectArdCallSessionUserVo">
         select id, session_id, type, user_id,target_id
         from ard_call_session_user
     </sql>
-
+    <sql id="selectArdCallSessionUserVo1">
+        SELECT
+            acsu.ID,
+            acsu.session_id,
+            acsu.TYPE,
+            acsu.user_id,
+            acsu.target_id,
+            u.nick_name,
+            u.avatar,
+            u1.nick_name AS target_nick_name,
+            u1.avatar AS target_avatar
+        FROM
+            ard_call_session_user acsu
+                LEFT JOIN sys_user u ON u.user_id = acsu.user_id
+                LEFT JOIN sys_user u1 ON u1.user_id = acsu.target_id
+    </sql>
     <select id="selectArdCallSessionUserList" parameterType="ArdCallSessionUser" resultMap="ArdCallSessionUserResult">
-        <include refid="selectArdCallSessionUserVo"/>
+        <include refid="selectArdCallSessionUserVo1"/>
         <where>
             <if test="sessionId != null  and sessionId != ''">and session_id = #{sessionId}</if>
             <if test="type != null  and type != ''">and type = #{type}</if>
-            <if test="userId != null  and userId != ''">and user_id = #{userId}</if>
+            <if test="userId != null  and userId != ''">and acsu.user_id = #{userId}</if>
             <if test="targetId != null  and targetId != ''">and target_id = #{targetId}</if>
         </where>
     </select>
 
     <select id="selectArdCallSessionUserBySesionId" parameterType="String" resultMap="ArdCallSessionUserResult">
-        <include refid="selectArdCallSessionUserVo"/>
-        where session_id = #{sessionId} and user_id = #{userId}
+        <include refid="selectArdCallSessionUserVo1"/>
+        where session_id = #{sessionId} and acsu.user_id = #{userId}
     </select>
     <select id="selectArdCallSessionUserById" parameterType="String" resultMap="ArdCallSessionUserResult">
         <include refid="selectArdCallSessionUserVo"/>

--
Gitblit v1.9.3