From 57c673aa3e83677bcf5d30b4b45d06bae6609db8 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期四, 08 八月 2024 16:14:40 +0800
Subject: [PATCH] 优化:获取会话
---
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java | 33 ++++++-----
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java | 10 +-
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java | 3
ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java | 7 ++
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 8 ++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java | 3 +
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java | 9 ++
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java | 31 ++--------
ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml | 42 +++++--------
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java | 33 +++++++++++
10 files changed, 108 insertions(+), 71 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java
index 7a9e641..6a62505 100644
--- a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java
@@ -4,7 +4,9 @@
import javax.servlet.http.HttpServletResponse;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.call.service.IArdCallGroupUserService;
import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.domain.entity.SysUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -39,7 +41,8 @@
public class ArdCallGroupController extends BaseController {
@Autowired
private IArdCallGroupService ardCallGroupService;
-
+ @Autowired
+ private IArdCallGroupUserService ardCallGroupUserService;
/**
* 鏌ヨ缇ょ粍鍒楄〃
*/
@@ -49,6 +52,10 @@
public TableDataInfo list(ArdCallGroup ardCallGroup) {
startPage();
List<ArdCallGroup> list = ardCallGroupService.selectArdCallGroupList(ardCallGroup);
+ list.stream().forEach(ardCallGroup1 -> {
+ List<SysUser> userList = ardCallGroupUserService.InGroupUsers(ardCallGroup1.getId());
+ ardCallGroup1.setSysUserList(userList);
+ });
return getDataTable(list);
}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java
index 772a450..c624280 100644
--- a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java
@@ -30,7 +30,7 @@
/**
* 缇ゆ垚鍛樺垪琛�
*/
- private List<ArdCallGroupUser> ArdCallGroupUsers;
+ private List<SysUser> sysUserList;
/**
* 缇ゆ垚鍛榠d鍒楄〃
@@ -53,12 +53,12 @@
return name;
}
- public List<ArdCallGroupUser> getArdCallGroupUsers() {
- return ArdCallGroupUsers;
+ public List<SysUser> getSysUserList() {
+ return sysUserList;
}
- public void setArdCallGroupUsers(List<ArdCallGroupUser> ardCallGroupUsers) {
- ArdCallGroupUsers = ardCallGroupUsers;
+ public void setSysUserList(List<SysUser> sysUserList) {
+ this.sysUserList = sysUserList;
}
public List<String> getUserIds() {
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java
index 78cfbfb..218774b 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java
@@ -94,4 +94,11 @@
* @return 缁撴灉
*/
List<SysUser> notInGroupUsers(String groupId);
+ /**
+ * 鏌ヨ鎸囧畾缇ょ粍鐨勪汉鍛樺垪琛�
+ *
+ * @param groupId 缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ List<SysUser> InGroupUsers(String groupId);
}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
index ed8859c..c2cef02 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
@@ -55,7 +55,8 @@
*/
@Override
public List<ArdCallGroup> selectArdCallGroupList(ArdCallGroup ardCallGroup) {
- return ardCallGroupMapper.selectArdCallGroupList(ardCallGroup);
+ List<ArdCallGroup> ardCallGroups = ardCallGroupMapper.selectArdCallGroupList(ardCallGroup);
+ return ardCallGroups;
}
/**
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java
index 668544f..ade48e1 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java
@@ -163,6 +163,12 @@
return ardCallGroupUserMapper.removeGroupUser(id, userIds);
}
+ /**
+ * 鏌ヨ涓嶅湪缇ょ粍鐨勪汉鍛樺垪琛�
+ *
+ * @param groupId 缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
@Override
public List<SysUser> notInGroupUsers(String groupId) {
//鑾峰彇骞冲彴鎵�鏈夌敤鎴�
@@ -181,4 +187,31 @@
.collect(Collectors.toList());
return filteredUserList;
}
+
+ /**
+ * 鏌ヨ缇ょ粍鐨勪汉鍛樺垪琛�
+ *
+ * @param groupId 缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public List<SysUser> InGroupUsers(String groupId) {
+ // 1. 鑾峰彇缇ょ粍鍐呯敤鎴�
+ ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser();
+ ardCallGroupUser.setGroupId(groupId);
+ List<ArdCallGroupUser> ardCallGroupUsers = ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser);
+ if (ardCallGroupUsers.size() > 0) {
+ // 2. 鎻愬彇鐢ㄦ埛 ID 鍒楄〃
+ List<String> userIds = ardCallGroupUsers.stream()
+ .map(ArdCallGroupUser::getUserId)
+ .collect(Collectors.toList());
+
+ // 3. 鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
+ List<SysUser> users = sysUserMapper.selectUsersByIds(userIds);
+ return users;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
}
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 b28254c..d442904 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
@@ -1,40 +1,23 @@
package com.ruoyi.call.service.impl;
-import java.util.HashMap;
-import java.util.List;
-
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.call.domain.*;
import com.ruoyi.call.dto.MessageEvent;
-import com.ruoyi.call.mapper.*;
+import com.ruoyi.call.mapper.ArdCallGroupUserMapper;
+import com.ruoyi.call.mapper.ArdCallHistoryMapper;
+import com.ruoyi.call.mapper.ArdCallSessionMapper;
+import com.ruoyi.call.mapper.ArdCallUnreadMessagesMapper;
import com.ruoyi.call.service.IArdCallGroupService;
-import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.call.service.IArdCallHistoryService;
import com.ruoyi.common.utils.DateUtils;
-
-import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.system.service.ISysUserService;
-import com.ruoyi.utils.websocket.util.WebSocketUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.call.service.IArdCallHistoryService;
-
import javax.annotation.Resource;
-import javax.websocket.Session;
-
-import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+import java.util.List;
/**
* 浼氳瘽鍘嗗彶Service涓氬姟灞傚鐞�
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java
index 7043f4f..31f5512 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.call.service.IArdCallGroupUserService;
import com.ruoyi.call.service.IArdCallSessionService;
import com.ruoyi.call.service.IArdCallSessionUserService;
+import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -33,6 +34,8 @@
private IArdCallSessionUserService ardCallSessionUserService;
@Resource
private IArdCallGroupService ardCallGroupService;
+ @Resource
+ private IArdCallGroupUserService ardCallGroupUserService;
/**
* 鏌ヨ瑙嗛浼氳瘽
@@ -144,7 +147,7 @@
} else {
//缇よ亰
sessionId = ardCallSessionUserService.getGroupSessionId(type, targetId);
- if (StringUtils.isEmpty(sessionId)) {
+ if (StringUtils.isNull(sessionId)) {
//鑻ヤ笉瀛樺湪缇よ亰session鐩存帴鍒欏垎鍒垱寤烘墍鏈夌兢鐢ㄦ埛鐨剆ession
ArdCallSession ardCallSession = new ArdCallSession();
ardCallSession.setType(type);
@@ -152,21 +155,21 @@
//鑾峰彇缇ょ敤鎴峰垪琛�
ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(targetId);
- if(ardCallGroup!=null)
- {
- String finalSessionId = sessionId;
- ardCallGroup.getArdCallGroupUsers().stream().forEach(groupUser -> {
- ArdCallSessionUser ardCallSessionUser = new ArdCallSessionUser();
- ardCallSessionUser.setSessionId(finalSessionId);
- ardCallSessionUser.setType(type);
- ardCallSessionUser.setUserId(groupUser.getUserId());
- ardCallSessionUser.setTargetId(targetId);
- ardCallSessionUserService.insertArdCallSessionUser(ardCallSessionUser);
- });
+ if (ardCallGroup != null) {
+ List<SysUser> userList = ardCallGroupUserService.InGroupUsers(ardCallGroup.getId());
+ if (userList.size() > 0) {
+ ardCallGroup.setSysUserList(userList);
+ String finalSessionId = sessionId;
+ ardCallGroup.getSysUserList().stream().forEach(groupUser -> {
+ ArdCallSessionUser ardCallSessionUser = new ArdCallSessionUser();
+ ardCallSessionUser.setSessionId(finalSessionId);
+ ardCallSessionUser.setType(type);
+ ardCallSessionUser.setUserId(groupUser.getUserId());
+ ardCallSessionUser.setTargetId(targetId);
+ ardCallSessionUserService.insertArdCallSessionUser(ardCallSessionUser);
+ });
+ }
}
- } else {
- //鑾峰彇鑷繁鐨剆ession
- sessionId = ardCallSessionUserService.getSessionId(type, userId, targetId);
}
}
return sessionId;
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml
index 2d33545..e597866 100644
--- a/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml
+++ b/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml
@@ -1,40 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.call.mapper.ArdCallGroupMapper">
-
- <resultMap type="ArdCallGroup" id="ArdCallGroupResult">
- <result property="id" column="id" />
- <result property="name" column="name" />
- <result property="createBy" column="create_by" />
- <result property="createTime" column="create_time" />
- <result property="updateBy" column="update_by" />
- <result property="updateTime" column="update_time" />
- <collection property="ardCallGroupUsers" ofType="ArdCallGroupUser">
- <result property="id" column="id" />
- <result property="groupId" column="group_id" />
- <result property="userId" column="user_id" />
- <association property="sysUser" column="user_id" select="com.ruoyi.system.mapper.SysUserMapper.selectUserById"/>
- </collection>
+ <resultMap id="ArdCallGroupResult" type="ArdCallGroup">
+ <id property="id" column="id" />
+ <result property="name" column="name" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
</resultMap>
-
-
<sql id="selectArdCallGroupVo">
- select acg.*,acgu.* from ard_call_group acg
- left join ard_call_group_user acgu on acg.id = acgu.group_id
+ select id,name,create_by,create_time,update_by,update_time from ard_call_group
</sql>
<select id="selectArdCallGroupList" parameterType="ArdCallGroup" resultMap="ArdCallGroupResult">
<include refid="selectArdCallGroupVo"/>
<where>
- <if test="name != null and name != ''"> and name like '%'||#{name}||'%'</if>
+ <if test="name != null and name != ''">and name like '%'||#{name}||'%'</if>
</where>
</select>
<select id="selectArdCallGroupById" parameterType="String" resultMap="ArdCallGroupResult">
<include refid="selectArdCallGroupVo"/>
- where acg.id = #{id}
+ where id = #{id}
</select>
<insert id="insertArdCallGroup" parameterType="ArdCallGroup">
@@ -46,7 +36,7 @@
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
- </trim>
+ </trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="name != null">#{name},</if>
@@ -54,7 +44,7 @@
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
- </trim>
+ </trim>
</insert>
<update id="updateArdCallGroup" parameterType="ArdCallGroup">
@@ -70,7 +60,9 @@
</update>
<delete id="deleteArdCallGroupById" parameterType="String">
- delete from ard_call_group where id = #{id}
+ delete
+ from ard_call_group
+ where id = #{id}
</delete>
<delete id="deleteArdCallGroupByIds" parameterType="String">
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index d890677..fe47632 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -152,4 +152,7 @@
List<SysUser> selectUserByDeptIdList(@Param("deptIdList")List<Long> deptIdList);
List<String> selectUserIdByCarId(String carId);
+
+ // 鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
+ List<SysUser> selectUsersByIds(@Param("userIds") List<String> userIds);
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index e794039..5371232 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -390,4 +390,12 @@
)
select rsd.dept_id from rsd)
</select>
+ <select id="selectUsersByIds" parameterType="list" resultType="SysUser">
+ SELECT * FROM sys_user
+ WHERE user_id IN
+ <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+ #{userId}
+ </foreach>
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3