From 86b103f926cf92fff3d591c6ba07099ad8db3ad1 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 01 七月 2025 15:53:04 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java |  305 ++++++++++++++------------------------------------
 1 files changed, 87 insertions(+), 218 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 1d555ae..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
@@ -166,238 +166,107 @@
 
     @Override
     public SysUser selectUserByUserName2(String userName) {
-        log.debug("寮�濮嬫煡璇㈢敤鎴蜂俊鎭紝鐢ㄦ埛鍚�: {}", userName);
-        
-        try {
-            // 鍙傛暟鏍¢獙
-            if (StringUtils.isEmpty(userName)) {
-                log.warn("鐢ㄦ埛鍚嶅弬鏁颁负绌�");
-                return null;
-            }
-            
-            // 瑙f瀽鐢ㄦ埛鍚嶅拰鏈烘瀯ID
-            String[] userInfo = parseUserName(userName);
-            if (userInfo == null) {
-                log.warn("鐢ㄦ埛鍚嶆牸寮忎笉姝g‘: {}", userName);
-                return null;
-            }
-            
-            String username = userInfo[0];
-            String orgId = userInfo[1];
-            
-            // 鏌ヨ鐢ㄦ埛鍩烘湰淇℃伅
-            SysUser sysUser = userMapper.selectUserByUserNameByCondition(username, orgId);
-            if (Objects.isNull(sysUser)) {
-                log.warn("鏈壘鍒扮敤鎴蜂俊鎭�: username={}, orgId={}", username, orgId);
-                return null;
-            }
-            
-            // 鏌ヨ鐢ㄦ埛閮ㄩ棬淇℃伅
-            List<SysDept> sysDepts = getUserDepts(sysUser, username, orgId);
-            List<Long> deptIds = extractDeptIds(sysDepts);
-            sysUser.setDepts(deptIds);
-            
-            // 鏍规嵁鎼滅储鑼冨洿澶勭悊绉戝鍜岀梾鍖轰俊鎭�
-            processUserDeptInfo(sysUser, username, orgId);
-            
-            log.debug("鐢ㄦ埛淇℃伅鏌ヨ瀹屾垚: userId={}", sysUser.getUserId());
-            return sysUser;
-            
-        } catch (Exception e) {
-            log.error("鏌ヨ鐢ㄦ埛淇℃伅鏃跺彂鐢熷紓甯�: userName={}", userName, e);
-            return null;
-        }
-    }
-    
-    /**
-     * 瑙f瀽鐢ㄦ埛鍚嶏紝鎻愬彇鐢ㄦ埛鍚嶅拰鏈烘瀯ID
-     */
-    private String[] parseUserName(String userName) {
-        if (StringUtils.isEmpty(userName) || !userName.contains("&")) {
-            return null;
-        }
-        return userName.split("&");
-    }
-    
-    /**
-     * 鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅
-     */
-    private List<SysDept> getUserDepts(SysUser sysUser, String username, String orgId) {
-        if ("admin".equals(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();
-            dept.setOrgid(orgId);
-            return sysDeptMapper.selectDeptList(dept);
+            dept.setOrgid(split[1]);
+            sysDepts = sysDeptMapper.selectDeptList(dept);
         } else {
-            return sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());
+            sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());
         }
-    }
-    
-    /**
-     * 鎻愬彇閮ㄩ棬ID鍒楄〃
-     */
-    private List<Long> extractDeptIds(List<SysDept> sysDepts) {
-        if (CollectionUtils.isEmpty(sysDepts)) {
-            return new ArrayList<>();
+        List<Long> deptIds = new ArrayList<>();
+        for (SysDept sysDept : sysDepts) {
+            deptIds.add(sysDept.getDeptId());
         }
-        return sysDepts.stream()
-                .map(SysDept::getDeptId)
-                .collect(Collectors.toList());
-    }
-    
-    /**
-     * 澶勭悊鐢ㄦ埛绉戝鍜岀梾鍖轰俊鎭�
-     */
-    private void processUserDeptInfo(SysUser sysUser, String username, String orgId) {
-        String searchScope = sysUser.getSearchscope();
-        if (StringUtils.isEmpty(searchScope)) {
-            return;
-        }
-        
-        switch (searchScope) {
-            case "0": // 鍏ㄩ儴鑼冨洿
-                processFullScopeDeptInfo(sysUser, username, orgId);
-                break;
-            case "1": // 绉戝鑼冨洿
-                processDeptScopeInfo(sysUser, orgId, "1");
-                break;
-            case "2": // 鐥呭尯鑼冨洿
-                processDeptScopeInfo(sysUser, orgId, "2");
-                break;
-            default:
-                log.warn("鏈煡鐨勬悳绱㈣寖鍥�: {}", searchScope);
-        }
-    }
-    
-    /**
-     * 澶勭悊鍏ㄩ儴鑼冨洿鐨勯儴闂ㄤ俊鎭�
-     */
-    private void processFullScopeDeptInfo(SysUser sysUser, String username, String orgId) {
-        SysUserDept sysUserDept = createSysUserDept(sysUser, orgId);
-        
+        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 ("admin".equals(username)) {
-            // admin鐢ㄦ埛鐗规畩澶勭悊
-            sysUserDept.setUserId(null);
-            sysUserDeptKSs = getAdminDeptList(orgId, "1");
-            sysUserDeptBQs = getAdminDeptList(orgId, "2");
-            
-            // 鍘婚噸澶勭悊
-            sysUserDeptKSs = removeDuplicateDepts(sysUserDeptKSs);
-            sysUserDeptBQs = removeDuplicateDepts(sysUserDeptBQs);
-        } else {
-            // 鏅�氱敤鎴峰鐞�
+        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("0")) {
+            if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
+                sysUserDept.setUserId(null);
+            }
             sysUserDept.setDeptType("1");
             sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
             sysUserDept.setDeptType("2");
             sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
-        }
-        
-        // 璁剧疆绉戝鍜岀梾鍖轰俊鎭�
-        setBelongWards(sysUser, sysUserDeptBQs);
-        setBelongDepts(sysUser, sysUserDeptKSs);
-    }
-    
-    /**
-     * 澶勭悊鎸囧畾鑼冨洿鐨勯儴闂ㄤ俊鎭�
-     */
-    private void processDeptScopeInfo(SysUser sysUser, String orgId, String deptType) {
-        SysUserDept sysUserDept = createSysUserDept(sysUser, orgId);
-        sysUserDept.setDeptType(deptType);
-        List<SysUserDept> deptList = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
-        
-        if ("1".equals(deptType)) {
-            setBelongDepts(sysUser, deptList);
-        } else if ("2".equals(deptType)) {
-            setBelongWards(sysUser, deptList);
-        }
-    }
-    
-    /**
-     * 鍒涘缓SysUserDept瀵硅薄
-     */
-    private SysUserDept createSysUserDept(SysUser sysUser, String orgId) {
-        SysUserDept sysUserDept = new SysUserDept();
-        sysUserDept.setUserId(sysUser.getUserId());
-        sysUserDept.setDeptType(sysUser.getSearchscope());
-        sysUserDept.setOrgid(orgId);
-        return sysUserDept;
-    }
-    
-    /**
-     * 鑾峰彇admin鐢ㄦ埛鐨勯儴闂ㄥ垪琛�
-     */
-    private List<SysUserDept> getAdminDeptList(String orgId, String deptType) {
-        SysDept dept = new SysDept();
-        dept.setOrgid(orgId);
-        dept.setDeptType(deptType);
-        List<SysDept> sysDepts = sysDeptMapper.selectDeptList(dept);
-        return DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
-    }
-    
-    /**
-     * 鍘婚櫎閲嶅鐨勯儴闂ㄤ俊鎭�
-     */
-    private List<SysUserDept> removeDuplicateDepts(List<SysUserDept> deptList) {
-        if (CollectionUtils.isEmpty(deptList)) {
-            return new ArrayList<>();
-        }
-        
-        List<SysUserDept> distinctDepts = new ArrayList<>();
-        Set<String> uniqueCodes = new HashSet<>();
-        
-        for (SysUserDept dept : deptList) {
-            String deptCode = dept.getDeptCode();
-            if (StringUtils.isNotEmpty(deptCode) && !uniqueCodes.contains(deptCode)) {
-                distinctDepts.add(dept);
-                uniqueCodes.add(deptCode);
+            //濡傛灉鏄痑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 (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {
+                        distinctUserDepts.add(userDept);
+                        uniqueDeptCodes.add(deptCode);
+                    }
+                }
+
+                List<SysUserDept> distinctUserBQs = new ArrayList<>();
+                Set<String> uniqueBQCodes = new HashSet<>();
+                for (SysUserDept userDept : sysUserDeptBQs) {
+                    String deptCode = userDept.getDeptCode();
+                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {
+                        distinctUserBQs.add(userDept);
+                        uniqueBQCodes.add(deptCode);
+                    }
+                }
+                sysUserDeptKSs = distinctUserDepts;
+                sysUserDeptBQs = distinctUserBQs;
             }
+
+        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("1")) {
+            sysUserDept.setDeptType("1");
+            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("2")) {
+            sysUserDept.setDeptType("2");
+            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
         }
-        
-        return distinctDepts;
-    }
-    
-    /**
-     * 璁剧疆鐥呭尯淇℃伅
-     */
-    private void setBelongWards(SysUser sysUser, List<SysUserDept> sysUserDeptBQs) {
-        if (CollectionUtils.isEmpty(sysUserDeptBQs)) {
-            return;
+
+        sysUser.setDepts(deptIds);
+        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {
+            List<Map<String, Object>> list = new ArrayList<>();
+            for (SysUserDept sud : sysUserDeptBQs) {
+                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);
+            }
+            sysUser.setBelongWards(list);
         }
-        
-        List<Map<String, Object>> wardList = sysUserDeptBQs.stream()
-                .filter(sud -> StringUtils.isNotEmpty(sud.getDeptCode()))
-                .map(sud -> {
-                    Map<String, Object> map = new HashMap<>();
-                    map.put("districtCode", StringUtils.defaultString(sud.getDeptCode(), ""));
-                    map.put("districtName", StringUtils.defaultString(sud.getDeptName(), ""));
-                    return map;
-                })
-                .collect(Collectors.toList());
-        
-        sysUser.setBelongWards(wardList);
-    }
-    
-    /**
-     * 璁剧疆绉戝淇℃伅
-     */
-    private void setBelongDepts(SysUser sysUser, List<SysUserDept> sysUserDeptKSs) {
-        if (CollectionUtils.isEmpty(sysUserDeptKSs)) {
-            return;
+        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {
+            List<Map<String, Object>> list = new ArrayList<>();
+            for (SysUserDept sud : sysUserDeptKSs) {
+                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);
+            }
+            sysUser.setBelongDepts(list);
         }
-        
-        List<Map<String, Object>> deptList = sysUserDeptKSs.stream()
-                .filter(sud -> StringUtils.isNotEmpty(sud.getDeptCode()))
-                .map(sud -> {
-                    Map<String, Object> map = new HashMap<>();
-                    map.put("deptCode", StringUtils.defaultString(sud.getDeptCode(), ""));
-                    map.put("deptName", StringUtils.defaultString(sud.getDeptName(), ""));
-                    return map;
-                })
-                .collect(Collectors.toList());
-        
-        sysUser.setBelongDepts(deptList);
+        return sysUser;
     }
 
     /**

--
Gitblit v1.9.3