From 4bb2588c5579d43ae5d343c7343a425a80b02d6c Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期五, 27 六月 2025 12:12:42 +0800 Subject: [PATCH] 代码提交 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 312 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 233 insertions(+), 79 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 9143807..1d555ae 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,6 +14,7 @@ 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; @@ -21,6 +23,7 @@ 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.*; @@ -163,95 +166,238 @@ @Override 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")) { + 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)) { SysDept dept = new SysDept(); - dept.setOrgid(split[1]); - sysDepts = sysDeptMapper.selectDeptList(dept); + dept.setOrgid(orgId); + return sysDeptMapper.selectDeptList(dept); } else { - sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId()); + return sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId()); } - List<Long> deptIds = new ArrayList<>(); - for (SysDept sysDept : sysDepts) { - deptIds.add(sysDept.getDeptId()); + } + + /** + * 鎻愬彇閮ㄩ棬ID鍒楄〃 + */ + private List<Long> extractDeptIds(List<SysDept> sysDepts) { + if (CollectionUtils.isEmpty(sysDepts)) { + return new ArrayList<>(); } + 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); + + 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 { + // 鏅�氱敤鎴峰鐞� + 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()); - List<SysUserDept> sysUserDeptKSs = null; - List<SysUserDept> sysUserDeptBQs = null; - 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); - //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸 - if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) { - 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); + 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<>(); } - - 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); + + 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); } - sysUser.setBelongWards(list); } - 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); + + return distinctDepts; + } + + /** + * 璁剧疆鐥呭尯淇℃伅 + */ + private void setBelongWards(SysUser sysUser, List<SysUserDept> sysUserDeptBQs) { + if (CollectionUtils.isEmpty(sysUserDeptBQs)) { + return; } - return sysUser; + + 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; + } + + 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); } /** @@ -463,11 +609,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"); @@ -485,10 +635,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