Forráskód Böngészése

feat(message): sse-范围todo测试

huey 1 éve
szülő
commit
f37d658560

+ 2 - 1
src/main/java/com/dragon/tj/portal/auth/web/mapper/SysUserMapper.java

@@ -19,5 +19,6 @@ import java.util.Set;
 @Mapper
 public interface SysUserMapper extends BaseMapper<SysUser> {
 
-    Set<String> getUserIds(@Param("itemCodes") List<String> itemCodes);
+    List<SysUser> getUserInfoByOrgIds(@Param("itemCodes") List<String> itemCodes);
+    List<SysUser> getUserInfoByIds(@Param("clientIds") List<String> clientIds);
 }

+ 2 - 1
src/main/java/com/dragon/tj/portal/auth/web/service/SysDeptService.java

@@ -2,6 +2,7 @@ package com.dragon.tj.portal.auth.web.service;
 
 import com.dragon.tj.portal.auth.web.entity.SysDept;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.dragon.tj.portal.common.dto.message.MessageInfoUserInfo;
 
 import java.util.Set;
 
@@ -16,5 +17,5 @@ import java.util.Set;
 public interface SysDeptService extends IService<SysDept> {
 
 
-    Set<String> getAllUserIds(Set<String> orgCode,boolean cascade);
+    MessageInfoUserInfo getAllUsers(Set<String> orgCode, Integer cascade);
 }

+ 30 - 9
src/main/java/com/dragon/tj/portal/auth/web/service/impl/SysDeptServiceImpl.java

@@ -3,16 +3,23 @@ package com.dragon.tj.portal.auth.web.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dragon.tj.portal.auth.web.entity.SysDept;
+import com.dragon.tj.portal.auth.web.entity.SysUser;
 import com.dragon.tj.portal.auth.web.mapper.SysDeptMapper;
 import com.dragon.tj.portal.auth.web.mapper.SysUserMapper;
 import com.dragon.tj.portal.auth.web.service.SysDeptService;
+import com.dragon.tj.portal.common.constants.BusinessConstants;
+import com.dragon.tj.portal.common.dto.message.MessageInfoUserInfo;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -29,15 +36,29 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     private SysUserMapper sysUserMapper;
 
     @Override
-    public Set<String> getAllUserIds(Set<String> orgCodeSet, boolean cascade) {
-        List<String> orgCodeList = Lists.newArrayList(orgCodeSet);
-        List<List<String>> codeSplit = CollUtil.split(orgCodeList, 800);
-
-        Set<String> userIdListRst = Sets.newHashSet();
-        for (List<String> itemCodes : codeSplit) {
-            Set<String> userIds = sysUserMapper.getUserIds(itemCodes);
-            userIdListRst.addAll(userIds);
+    public MessageInfoUserInfo getAllUsers(Set<String> scopeIds, Integer messageType) {
+
+        List<String> scopeIdList = Lists.newArrayList(scopeIds);
+        List<List<String>> scopeIdSplit = CollUtil.split(scopeIdList, 500);
+
+        MessageInfoUserInfo messageInfoUserInfo = new MessageInfoUserInfo();
+        Map<String, SysUser> collect = Maps.newHashMap();
+        Set<String> keySet = Sets.newHashSet();
+        for (List<String> itemCodes : scopeIdSplit) {
+            List<SysUser> sysUsers;
+            if (messageType.equals(BusinessConstants.DICT_ITEM_ID_2)) {
+                sysUsers = sysUserMapper.getUserInfoByOrgIds(itemCodes);
+            } else {
+                sysUsers = sysUserMapper.getUserInfoByIds(itemCodes);
+            }
+            if (CollectionUtils.isNotEmpty(sysUsers)) {
+                collect.putAll(sysUsers.stream().collect(Collectors.toMap(SysUser::getIdcard, o -> o)));
+                keySet.addAll(collect.keySet());
+            }
         }
-        return userIdListRst;
+        messageInfoUserInfo.setUserMap(collect);
+        messageInfoUserInfo.setClientIds(keySet);
+
+        return messageInfoUserInfo;
     }
 }

+ 24 - 0
src/main/java/com/dragon/tj/portal/common/dto/message/MessageInfoUserInfo.java

@@ -0,0 +1,24 @@
+package com.dragon.tj.portal.common.dto.message;
+
+
+import com.dragon.tj.portal.auth.web.entity.SysUser;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author huey China.
+ * @Description :
+ * @Date Created in 2023/6/15 15:59
+ */
+@Getter
+@Setter
+public class MessageInfoUserInfo {
+
+    private Map<String, SysUser> userMap;
+
+    private Set<String> clientIds;
+
+}

+ 5 - 0
src/main/java/com/dragon/tj/portal/entity/MessageInfoScope.java

@@ -55,6 +55,11 @@ public class MessageInfoScope implements Serializable {
      * 部门id
      */
     private String scopeId;
+    /**
+    *
+    *部门名称
+    */
+    private String scopeName;
 
     /**
      * 范围级别

+ 22 - 22
src/main/java/com/dragon/tj/portal/service/impl/MessageInfoServiceImpl.java

@@ -15,6 +15,7 @@ import com.dragon.tj.portal.common.convert.mesage.MessageInfoVOConvert;
 import com.dragon.tj.portal.common.convert.mesage.MessageReqConvert;
 import com.dragon.tj.portal.common.dto.message.MessageInfoReq;
 import com.dragon.tj.portal.common.dto.message.MessageInfoSend;
+import com.dragon.tj.portal.common.dto.message.MessageInfoUserInfo;
 import com.dragon.tj.portal.common.enums.message.MessageInfoErrorEnums;
 import com.dragon.tj.portal.common.enums.message.MsgRecordTypeEnum;
 import com.dragon.tj.portal.common.enums.message.ReadStatusEnum;
@@ -35,6 +36,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -42,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 
@@ -167,10 +170,10 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
         boolean isSend = false;
         Integer messageType = messageInfoReq.getMessageType();
         Set<String> scopeIds = messageInfoReq.getScopeIds();
-        Set<String> messageClientIds = this.getMessageClientIds(messageType, scopeIds);
+        MessageInfoUserInfo messageInfoUserInfo = this.getMessageClientIds(messageType, scopeIds);
 
-        if (CollUtil.isNotEmpty(messageClientIds)) {
-            MessageInfoSend messageInfoSend = this.doSaveMessageInfo(messageInfoReq, messageClientIds, loginUser);
+        if (Objects.nonNull(messageInfoUserInfo)) {
+            MessageInfoSend messageInfoSend = this.doSaveMessageInfo(messageInfoReq, messageInfoUserInfo, loginUser);
             isSend = producer.send(KafkaInitialConfiguration.sseTopic, JSON.toJSONString(messageInfoSend));
             if (isSend) {
                 MsgRecord msgRecord = new MsgRecord();
@@ -185,14 +188,15 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public MessageInfoSend doSaveMessageInfo(MessageInfoReq messageInfoReq, Set<String> messageClientIds, LoginUser loginUser) {
-        log.info("doSaveMessageInfo-start-{}-{}", loginUser.getIdCard(), messageClientIds);
+    public MessageInfoSend doSaveMessageInfo(MessageInfoReq messageInfoReq, MessageInfoUserInfo messageInfoUserInfo, LoginUser loginUser) {
+        Set<String> clientIds = messageInfoUserInfo.getClientIds();
+        log.info("doSaveMessageInfo-start-{}-{}", loginUser.getIdCard(), clientIds);
         Integer messageType = messageInfoReq.getMessageType();
         ScopeEnums scopeEnums = ScopeEnums.ofMessageType(messageType);
         List<MessageInfoScope> insertList = Lists.newArrayList();
         MessageInfoSend messageInfoSend = new MessageInfoSend();
         messageInfoSend.setMessageInfoReq(messageInfoReq);
-        messageInfoSend.setClientIds(messageClientIds);
+        messageInfoSend.setClientIds(clientIds);
 
         MessageInfo messageInfo = messageReqConvert.reqToInfo(messageInfoReq);
         messageInfo.setCreateBy(loginUser.getIdCard());
@@ -209,14 +213,17 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
             isSaveBatchSuccess = this.save(messageInfo);
 
             messageInfoSend.setMessageInfo(messageInfo);
-
-            messageClientIds.forEach(e -> {
+            Map<String, SysUser> userMap = messageInfoUserInfo.getUserMap();
+            clientIds.forEach(e -> {
                 MessageInfoScope messageInfoScope = new MessageInfoScope();
                 messageInfoScope.setMessageInfoId(messageInfo.getId());
-                messageInfoScope.setScopeId(loginUser.getOrgCode());
                 messageInfoScope.setMemberId(e);
+                SysUser sysUser = userMap.get(e);
+                if (Objects.nonNull(sysUser) && StringUtils.isNotBlank(sysUser.getOrgCode())) {
+                    messageInfoScope.setScopeId(sysUser.getOrgCode());
+                    messageInfoScope.setScopeName(sysUser.getOrgName());
+                }
                 messageInfoScope.setScopeType(scopeEnums.value());
-                //messageInfoScope.setScopeLevel("");
                 insertList.add(messageInfoScope);
             });
             isSaveBatchSuccess = messageInfoScopeService.saveBatch(insertList);
@@ -235,13 +242,12 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
                 log.warn("消息中心 存储失败 {}");
             }
         }
-        log.info("doSaveMessageInfo-end-{}-{}", loginUser.getIdCard(), messageClientIds);
+        log.info("doSaveMessageInfo-end-{}-{}", loginUser.getIdCard(), clientIds);
         return messageInfoSend;
     }
 
-    private Set<String> getMessageClientIds(Integer messageType, Set<String> scopeIds) {
+    private MessageInfoUserInfo getMessageClientIds(Integer messageType, Set<String> scopeIds) {
         //登录人标识
-        Set<String> messageClientIds = Sets.newHashSet();
         if (CollUtil.isEmpty(scopeIds)) {
             if (messageType.equals(BusinessConstants.DICT_ITEM_ID_2)) {
                 throw new MessageInfoException(MessageInfoErrorEnums.Code.MESSAGE_CONTRACTS_EMPTY);
@@ -249,15 +255,9 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
                 throw new MessageInfoException(MessageInfoErrorEnums.Code.MESSAGE_DEPT_EMPTY);
             }
         }
-        if (messageType.equals(BusinessConstants.DICT_ITEM_ID_2)) {
-            messageClientIds.addAll(scopeIds);
-        } else {
-            Set<String> allUserIds = sysDeptService.getAllUserIds(scopeIds, false);
-            if (CollUtil.isNotEmpty(allUserIds)) {
-                messageClientIds.addAll(allUserIds);
-            }
-        }
-        return messageClientIds;
+
+        MessageInfoUserInfo messageInfoUserInfo = sysDeptService.getAllUsers(scopeIds, messageType);
+        return messageInfoUserInfo;
     }
 
 

+ 12 - 2
src/main/resources/mapper/auth/web/SysUserMapper.xml

@@ -35,12 +35,22 @@
     <sql id="Base_Column_List">
         idcard, name, police_number, org_code, org_name, user_type, deleted, update_time, rank, title, man_type, police_category, police_business, sex, birth, nation, address, phone, mobile_work, mobile_private, qq_account, email, wx_account, post_type, job_type
     </sql>
-    <select id="getUserIds" resultType="java.lang.String">
-        select idcard from sys_user
+    <select id="getUserInfoByOrgIds" resultType="com.dragon.tj.portal.auth.web.entity.SysUser">
+        select idcard,org_code from sys_user
         where org_code in
             <foreach collection="itemCodes" index="index" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
     </select>
 
+    <select id="getUserInfoByIds" resultType="com.dragon.tj.portal.auth.web.entity.SysUser">
+        select idcard,org_code from sys_user
+        where idcard in
+        <foreach collection="clientIds" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
+
+
 </mapper>