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