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