From 6393d6ba70099f1b47f4124e06426f016fb28052 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 01 七月 2025 14:59:58 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index bce9286..044a52c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.*;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanValidators;
@@ -13,13 +14,16 @@
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
+import com.smartor.domain.SvyTaskVO;
 import com.smartor.mapper.SysUserDeptMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 
 import javax.validation.Validator;
 import java.util.*;
@@ -60,6 +64,9 @@
 
     @Autowired
     protected Validator validator;
+
+    @Value("${isAdmin}")
+    private List<Long> isAdmin;
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
@@ -161,6 +168,7 @@
     public SysUser selectUserByUserName2(String userName) {
         String[] split = userName.split("&");
         SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1]);
+        if (Objects.isNull(sysUser)) return sysUser;
         List<SysDept> sysDepts = null;
         if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
             SysDept dept = new SysDept();
@@ -176,6 +184,7 @@
         SysUserDept sysUserDept = new SysUserDept();
         sysUserDept.setUserId(sysUser.getUserId());
         sysUserDept.setDeptType(sysUser.getSearchscope());
+        sysUserDept.setOrgid(split[1]);
         List<SysUserDept> sysUserDeptKSs = null;
         List<SysUserDept> sysUserDeptBQs = null;
         if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("0")) {
@@ -188,11 +197,22 @@
             sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
             //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸
             if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
+                //濡傛灉鏄痑dmin锛屽彧鑳藉幓sys_dept鍘诲彇鏁版嵁
+                SysDept dept = new SysDept();
+                dept.setOrgid(split[1]);
+                dept.setDeptType("1");
+                sysDepts = sysDeptMapper.selectDeptList(dept);
+                sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
+
+                dept.setDeptType("2");
+                sysDepts = sysDeptMapper.selectDeptList(dept);
+                sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
+
                 List<SysUserDept> distinctUserDepts = new ArrayList<>();
                 Set<String> uniqueDeptCodes = new HashSet<>();
                 for (SysUserDept userDept : sysUserDeptKSs) {
                     String deptCode = userDept.getDeptCode();
-                    if (!uniqueDeptCodes.contains(deptCode)) {
+                    if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {
                         distinctUserDepts.add(userDept);
                         uniqueDeptCodes.add(deptCode);
                     }
@@ -202,7 +222,7 @@
                 Set<String> uniqueBQCodes = new HashSet<>();
                 for (SysUserDept userDept : sysUserDeptBQs) {
                     String deptCode = userDept.getDeptCode();
-                    if (!uniqueBQCodes.contains(deptCode)) {
+                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {
                         distinctUserBQs.add(userDept);
                         uniqueBQCodes.add(deptCode);
                     }
@@ -226,6 +246,7 @@
                 Map<String, Object> map = new HashMap<>();
                 map.put("districtCode", "");
                 if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put("districtCode", sud.getDeptCode());
+                else continue;
                 map.put("districtName", "");
                 if (StringUtils.isNotEmpty(sud.getDeptName())) map.put("districtName", sud.getDeptName());
                 list.add(map);
@@ -238,6 +259,7 @@
                 Map<String, Object> map = new HashMap<>();
                 map.put("deptCode", "");
                 if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put("deptCode", sud.getDeptCode());
+                else continue;
                 map.put("deptName", "");
                 if (StringUtils.isNotEmpty(sud.getDeptName())) map.put("deptName", sud.getDeptName());
                 list.add(map);
@@ -350,7 +372,7 @@
      */
     @Override
     public void checkUserAllowed(SysUser user) {
-        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
+        if (StringUtils.isNotNull(user.getUserId()) && isAdmin.contains(user.getUserId())) {
             throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛");
         }
     }
@@ -362,7 +384,7 @@
      */
     @Override
     public void checkUserDataScope(Long userId) {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
+        if (!isAdmin.contains(SecurityUtils.getUserId())) {
             SysUser user = new SysUser();
             user.setUserId(userId);
             List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
@@ -456,11 +478,15 @@
         if (!CollectionUtils.isEmpty(user.getDeptCodes())) {
             for (String deptCode : user.getDeptCodes()) {
                 SysDept sysDept = sysDeptMapper.selectDeptByCode(deptCode);
+                if (ObjectUtils.isEmpty(sysDept)) {
+                    continue;
+                }
 
                 SysUserDept sysUserDept = new SysUserDept();
                 sysUserDept.setUserId(user.getUserId());
                 sysUserDept.setOrgid(user.getOrgid());
                 sysUserDept.setDeptCode(deptCode);
+                sysUserDept.setDeptId(sysDept.getDeptId());
                 List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
                 sysUserDept.setDelFlag(0L);
                 sysUserDept.setDeptType("1");
@@ -478,10 +504,14 @@
         if (!CollectionUtils.isEmpty(user.getWardCodes())) {
             for (String wardCode : user.getWardCodes()) {
                 SysDept sysDept = sysDeptMapper.selectDeptByCode(wardCode);
-
+                if (ObjectUtils.isEmpty(sysDept)) {
+                    continue;
+                }
                 SysUserDept sysUserDept = new SysUserDept();
                 sysUserDept.setUserId(user.getUserId());
                 sysUserDept.setDeptCode(wardCode);
+                sysUserDept.setDeptId(sysDept.getDeptId());
+                sysUserDept.setOrgid(user.getOrgid());
                 List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
                 sysUserDept.setDelFlag(0L);
                 sysUserDept.setDeptType("2");

--
Gitblit v1.9.3