From 6d682e1423109458260f732cef5f013abccea7c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=85=BE?= <3467447354@qq.com> Date: Wed, 25 Sep 2024 20:22:59 +0800 Subject: [PATCH] =?UTF-8?q?saas=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/muyu/auth/form/LoginBody.java | 9 +++++++++ .../core/constant/SecurityConstants.java | 7 ++++++- .../com/muyu/common/core/utils/JwtUtils.java | 19 +++++++++++++++++++ .../many/datasource/ManyDataSource.java | 7 ++----- .../constents/DatasourceContent.java | 2 +- .../common/security/service/TokenService.java | 1 + .../com/muyu/gateway/filter/AuthFilter.java | 4 ++++ .../system/controller/SysRoleController.java | 4 ++-- .../com/muyu/system/mapper/SysDeptMapper.java | 18 ++++++++++++++++++ .../service/impl/SysDeptServiceImpl.java | 14 +++++++++++--- .../resources/mapper/system/SysDeptMapper.xml | 7 +++++++ .../resources/mapper/system/SysUserMapper.xml | 4 ++++ cloud-modules/pom.xml | 1 - 13 files changed, 84 insertions(+), 13 deletions(-) diff --git a/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java b/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java index 999ad44..b774b03 100644 --- a/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java +++ b/cloud-auth/src/main/java/com/muyu/auth/form/LoginBody.java @@ -6,6 +6,13 @@ package com.muyu.auth.form; * @author muyu */ public class LoginBody { + + /** + * 登录公司名称 + */ + private Integer firmName; + + /** * 用户名 */ @@ -16,6 +23,8 @@ public class LoginBody { */ private String password; + + public String getUsername () { return username; } diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java index 5fbd20a..4c1b397 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java @@ -16,6 +16,11 @@ public class SecurityConstants { */ public static final String DETAILS_FIRM_ID = "firm_id"; + /** + * 部门ID + */ + public static final String DETAILS_DEPT_ID = "dept_id"; + /** * 用户名字段 */ @@ -51,5 +56,5 @@ public class SecurityConstants { */ public static final String ROLE_PERMISSION = "role_permission"; - public static final String SAAS_KEY = "ent_code"; + public static final String SAAS_KEY = "ent-code"; } diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java index 62816cb..76d4f71 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java @@ -151,6 +151,16 @@ public class JwtUtils { return getValue(claims, SecurityConstants.DETAILS_USERNAME); } + /** + * 根据身份信息获取SAAS标识 + * + * @param claims 身份信息 + * @return SAAS标识 + */ + public static String getSaaSKey(Claims claims) { + return getValue(claims, SecurityConstants.SAAS_KEY); + } + /** * 根据身份信息获取键值 * @@ -162,4 +172,13 @@ public class JwtUtils { public static String getValue (Claims claims, String key) { return Convert.toStr(claims.get(key), ""); } + + /** + * + * @param claims 身份信息 + * @return 值 + */ + public static String getDeptId(Claims claims) { + return getValue(claims, SecurityConstants.DETAILS_DEPT_ID); + } } diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java index 9f28b73..e6dd82c 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java @@ -20,10 +20,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @Author: DongZeLiang @@ -66,7 +63,7 @@ public class ManyDataSource implements ApplicationRunner{ public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) { // 企业列表 企业CODE,端口,IP Map dataSourceMap = new HashMap<>(); - dataSourceInfoList() + Objects.requireNonNull(dataSourceInfoList()) .stream() .map(entInfo -> DataSourceInfo.hostAndPortBuild(entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort())) .forEach(dataSourceInfo -> { diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java index a740466..8bde85c 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java @@ -11,7 +11,7 @@ public class DatasourceContent { public final static String USER_NAME = "root"; - public final static String PASSWORD = "root"; + public final static String PASSWORD = "bwie-8666"; public final static String IP = "159.75.188.178"; diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java index 9dd8488..16ae03c 100644 --- a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java @@ -56,6 +56,7 @@ public class TokenService { claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); claimsMap.put(SecurityConstants.SAAS_KEY,loginUser.getSysUser().getDatabaseName()); + claimsMap.put(SecurityConstants.DETAILS_DEPT_ID,loginUser.getSysUser().getDeptId()); // 接口返回信息 Map rspMap = new HashMap(); diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java index 47e073f..d926669 100644 --- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java @@ -66,11 +66,15 @@ public class AuthFilter implements GlobalFilter, Ordered { if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) { return unauthorizedResponse(exchange, "令牌验证失败"); } + String saaSKey = JwtUtils.getSaaSKey(claims); + String deptId = JwtUtils.getDeptId(claims); // 设置用户信息到请求 addHeader(mutate, SecurityConstants.USER_KEY, userkey); addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + addHeader(mutate, SecurityConstants.SAAS_KEY,saaSKey); + addHeader(mutate,SecurityConstants.DETAILS_DEPT_ID,deptId); // 内部请求来源参数清除 removeHeader(mutate, SecurityConstants.FROM_SOURCE); return chain.filter(exchange.mutate().request(mutate.build()).build()); diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java index f8b05ad..d032bf0 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysRoleController.java @@ -184,7 +184,7 @@ public class SysRoleController extends BaseController { @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancelAll") - public Result cancelAuthUserAll (Long roleId, Long[] userIds) { + public Result cancelAuthUserAll (Long roleId,Long[] userIds) { return toAjax(roleService.deleteAuthUsers(roleId, userIds)); } @@ -194,7 +194,7 @@ public class SysRoleController extends BaseController { @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/selectAll") - public Result selectAuthUserAll (Long roleId, Long[] userIds) { + public Result selectAuthUserAll (@RequestParam("roleId")Long roleId,@RequestParam("userIds") Long[] userIds) { roleService.checkRoleDataScope(roleId); return toAjax(roleService.insertAuthUsers(roleId, userIds)); } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java index 5ef9ab4..dacb7da 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysDeptMapper.java @@ -128,4 +128,22 @@ public interface SysDeptMapper extends BaseMapper { * @return 结果 */ public int deleteDeptById (Long deptId); + + /** + * 根据ancestors查询部门及子部门 + * @param ancestors + * @return + */ + + List findByAncestors(@Param("ancestors") String ancestors); + + + /** + * 根据部门ID查询对应的部门数据行 + * @param deptId 部门ID + * @return 部门对象 + */ + SysDept findById(@Param("deptId") String deptId); + + } diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java index a55301b..f9ac2fb 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java @@ -1,20 +1,22 @@ package com.muyu.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.constant.UserConstants; import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.text.Convert; +import com.muyu.common.core.utils.ServletUtils; import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.datascope.annotation.DataScope; import com.muyu.common.security.utils.SecurityUtils; -import com.muyu.common.system.domain.SysDept; -import com.muyu.common.system.domain.SysRole; -import com.muyu.common.system.domain.SysUser; +import com.muyu.common.system.domain.*; import com.muyu.system.domain.vo.TreeSelect; import com.muyu.system.mapper.SysDeptMapper; import com.muyu.system.mapper.SysRoleMapper; +import com.muyu.system.mapper.SysUserMapper; import com.muyu.system.service.SysDeptService; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,6 +38,12 @@ public class SysDeptServiceImpl extends ServiceImpl impl @Autowired private SysRoleMapper roleMapper; + @Autowired + private SysUserMapper sysUserMapper; + + @Autowired + private HttpServletRequest request; + /** * 查询部门管理数据 * diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml index a571d8b..bf142d8 100644 --- a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -109,6 +109,13 @@ where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1 + + + insert into sys_dept( dept_id, diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml index e78cd4c..6ea2ddd 100644 --- a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -18,6 +18,8 @@ + + @@ -48,6 +50,8 @@ select u.user_id, + u.database_name, + u.firm_id, u.dept_id, u.user_name, u.nick_name, diff --git a/cloud-modules/pom.xml b/cloud-modules/pom.xml index 40b5df8..ba0d555 100644 --- a/cloud-modules/pom.xml +++ b/cloud-modules/pom.xml @@ -12,7 +12,6 @@ cloud-modules-system cloud-modules-gen cloud-modules-file - cloud-test cloud-modules