24282 2 vuotta sitten
vanhempi
commit
7462ca3d1e

+ 51 - 0
hx-mail/src/main/java/com/fjhx/mail/controller/message/InfoController.java

@@ -0,0 +1,51 @@
+package com.fjhx.mail.controller.message;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSON;
+import com.fjhx.mail.config.MailServiceConfig;
+import com.fjhx.mail.service.message.InfoService;
+import com.ruoyi.common.annotation.NonInterception;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.exception.ServiceException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/mailInfo")
+public class InfoController {
+
+    @Autowired
+    private InfoService infoService;
+
+    /**
+     * 获取员工邮箱
+     */
+    @PostMapping("/getUserList")
+    public List<SysUser> getUserList() {
+        return infoService.getUserList();
+    }
+
+    /**
+     * 获取用户邮箱列表
+     */
+    @NonInterception
+    @PostMapping("/getUserEmailList")
+    public Object getUserEmailList(@RequestBody BaseSelectDto dto) {
+        Long id = dto.getId();
+        if (id == null) {
+            throw new ServiceException("用户id不能为空");
+        }
+
+        String get = HttpUtil.get(MailServiceConfig.urlPrefix + "getUserEmailList/" + id);
+        return JSON.parseObject(get);
+    }
+
+}

+ 1 - 1
hx-mail/src/main/java/com/fjhx/mail/controller/message/MailController.java

@@ -35,7 +35,7 @@ public class MailController {
     }
 
     /**
-     * 获取用户邮箱列表
+     * 获取用户邮箱明细
      */
     @NonInterception
     @PostMapping("/getMessageDetail")

+ 14 - 0
hx-mail/src/main/java/com/fjhx/mail/service/message/InfoService.java

@@ -0,0 +1,14 @@
+package com.fjhx.mail.service.message;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+
+import java.util.List;
+
+public interface InfoService {
+
+    /**
+     * 获取员工邮箱
+     */
+    List<SysUser> getUserList();
+
+}

+ 78 - 0
hx-mail/src/main/java/com/fjhx/mail/service/message/impl/InfoServiceImpl.java

@@ -0,0 +1,78 @@
+package com.fjhx.mail.service.message.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.mail.service.message.InfoService;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class InfoServiceImpl implements InfoService {
+
+    @Autowired
+    private ISysDeptService sysDeptService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @Override
+    public List<SysUser> getUserList() {
+
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+
+        Long userId = SecurityUtils.getUserId();
+
+        List<SysDept> sysDeptList = sysDeptService.list(Wrappers.<SysDept>lambdaQuery()
+                .and(q -> q.eq(SysDept::getDirectorId, userId).or().eq(SysDept::getLeaderId, userId)));
+
+        if (sysDeptList.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        Set<Long> deptSet = new HashSet<>();
+        List<SysDept> list = sysDeptService.list();
+        Map<Long, List<SysDept>> parentDeptMap = list.stream().collect(Collectors.groupingBy(SysDept::getParentId));
+
+        for (SysDept sysDept : sysDeptList) {
+            Long deptId = sysDept.getDeptId();
+
+            if (Objects.equals(sysDept.getDirectorId(), userId)) {
+                subordinateDeptId(deptId, deptSet, parentDeptMap);
+            } else {
+                deptSet.add(deptId);
+            }
+        }
+
+        List<SysUser> sysUserList = sysUserService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDeptId, deptSet));
+
+        DynamicDataSourceContextHolder.poll();
+        return sysUserList;
+    }
+
+    private void subordinateDeptId(Long deptId, Set<Long> deptSet, Map<Long, List<SysDept>> parentDeptMap) {
+        deptSet.add(deptId);
+
+        // 获取子部门
+        List<SysDept> sysDeptList = parentDeptMap.get(deptId);
+        if (ObjectUtil.isEmpty(sysDeptList)) {
+            return;
+        }
+
+        for (SysDept sysDept : sysDeptList) {
+            subordinateDeptId(sysDept.getDeptId(), deptSet, parentDeptMap);
+        }
+
+    }
+
+
+}