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