From a3ff2caca929d75ddb4bff51244395215fdc47e7 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期四, 14 八月 2025 11:04:03 +0800 Subject: [PATCH] SSO代码提交 --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 108 +++++++++++++++++++++++++++++++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 2 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 3 + ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java | 2 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java | 5 + 7 files changed, 120 insertions(+), 4 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 0ba9bdc..06a2955 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -69,7 +69,7 @@ return AjaxResult.error("鐢ㄦ埛鍚嶆垨缁勭粐鏈烘瀯涓嶈兘涓虹┖"); } - String token = loginService.loginByUserName(loginBody.getUsername() + "&" + loginBody.getOrgid()); + String token = loginService.loginByUserName(loginBody.getUsername() + "&" + loginBody.getOrgid()+"&" + loginBody.getDeptId()); ajax.put(Constants.TOKEN, token); return ajax; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index 9aabe0b..f937bef 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -34,4 +34,9 @@ */ private String orgid; + /** + * 閮ㄩ棬ID + */ + private String deptId; + } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index de58cf7..8cf951a 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -95,7 +95,7 @@ public String loginByUserName(String userName) { - SysUser sysUser = userService.selectUserByUserName2(userName); + SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName); if (ObjectUtils.isNotEmpty(sysUser)) { // 鏋勫缓鐧诲綍鐢ㄦ埛瀵硅薄 LoginUser loginUser = new LoginUser(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index f06d7b1..472c03e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -50,7 +50,7 @@ * @param userName 鐢ㄦ埛鍚� * @return 鐢ㄦ埛瀵硅薄淇℃伅 */ - public SysUser selectUserByUserNameByCondition(@Param("userName") String userName, @Param("orgid") String orgid); + public SysUser selectUserByUserNameByCondition(@Param("userName") String userName, @Param("orgid") String orgid, @Param("deptId") String deptId); /** * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 5682882..8edc4be 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -49,6 +49,8 @@ */ public SysUser selectUserByUserName2(String userName); + public SysUser selectUserByUserNameAndDeptId(String userName); + /** * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 * 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 044a52c..323dd8c 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 @@ -167,7 +167,7 @@ @Override public SysUser selectUserByUserName2(String userName) { String[] split = userName.split("&"); - SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1]); + SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], null); if (Objects.isNull(sysUser)) return sysUser; List<SysDept> sysDepts = null; if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) { @@ -269,6 +269,112 @@ return sysUser; } + @Override + public SysUser selectUserByUserNameAndDeptId(String userName) { + String[] split = userName.split("&"); + SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]); + 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(split[1]); + sysDepts = sysDeptMapper.selectDeptList(dept); + } else { + sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId()); + } + List<Long> deptIds = new ArrayList<>(); + for (SysDept sysDept : sysDepts) { + deptIds.add(sysDept.getDeptId()); + } + 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")) { + 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")) { + //濡傛灉鏄痑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); + } + + 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); + } + 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 sysUser; + } + + /** * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 * diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 5993a75..867caed 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -235,6 +235,9 @@ <if test="orgid != null and orgid != ''"> AND u.orgid = #{orgid} </if> + <if test="deptId != null and deptId != ''"> + AND u.dept_id = #{deptId} + </if> </where> </select> -- Gitblit v1.9.3