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