From 94007732e9ce2237eae82b327f005c121b16096b Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Tue, 10 May 2022 08:03:38 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=A3=20=E9=87=8D=E6=9E=84=E5=BA=95?= =?UTF-8?q?=E5=B1=82=E6=94=AF=E6=8C=81=E8=87=AA=E9=80=89=E5=A4=9A=E7=A7=9F?= =?UTF-8?q?=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/RoleController.java | 4 ++++ .../system/controller/UserController.java | 19 +++++++------------ .../kicc/system/mapper/TenantMapper.java | 9 +++++++++ .../kicc/system/service/TenantService.java | 9 +++++++++ .../service/impl/TenantServiceImpl.java | 7 +++++++ .../system/service/impl/UserServiceImpl.java | 9 +++++++++ .../main/resources/mapper/TenantMapper.xml | 12 ++++++++++++ 7 files changed, 57 insertions(+), 12 deletions(-) diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java index 4bc2fe70..d936b5ad 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java @@ -82,6 +82,10 @@ public class RoleController { @PutMapping("/update") @PreAuthorize("@pms.hasPermission('role_edit')") public R update(@RequestBody Role role) { + // todo: 防止角色菜单授权移除,暂时处理手段 + if(ArrayUtil.contains(role.getMenuIds(), "1510519786040041472")){ + return R.error("不允许移除角色管理菜单"); + } roleService.updateRoleMenu(role); return R.ok(); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java index 8b9b923a..b6bcdfc8 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java @@ -1,32 +1,27 @@ package com.cloud.kicc.system.controller; import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.cloud.kicc.system.api.entity.Menu; +import com.cloud.kicc.common.core.api.R; +import com.cloud.kicc.common.core.constant.AppConstants; +import com.cloud.kicc.common.data.entity.KiccUser; +import com.cloud.kicc.common.log.annotation.SysLog; +import com.cloud.kicc.common.security.annotation.Inner; +import com.cloud.kicc.common.security.util.SecurityUtils; import com.cloud.kicc.system.api.entity.Role; import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.UserRole; import com.cloud.kicc.system.api.vo.ResultVo; -import com.cloud.kicc.system.service.RoleService; import com.cloud.kicc.system.service.FileService; +import com.cloud.kicc.system.service.RoleService; import com.cloud.kicc.system.service.UserRoleService; import com.cloud.kicc.system.service.UserService; -import com.cloud.kicc.common.core.api.R; -import com.cloud.kicc.common.core.constant.AppConstants; -import com.cloud.kicc.common.data.entity.KiccUser; -import com.cloud.kicc.common.log.annotation.SysLog; -import com.cloud.kicc.common.security.annotation.Inner; -import com.cloud.kicc.common.security.util.SecurityUtils; import com.pig4cloud.plugin.excel.annotation.ResponseExcel; import com.pig4cloud.plugin.excel.annotation.Sheet; -import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/TenantMapper.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/TenantMapper.java index 978212b5..071e37ef 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/TenantMapper.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/TenantMapper.java @@ -3,6 +3,8 @@ package com.cloud.kicc.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cloud.kicc.system.api.entity.Tenant; +import java.util.List; + /** *

* 多租户 Mapper 接口 @@ -13,4 +15,11 @@ import com.cloud.kicc.system.api.entity.Tenant; */ public interface TenantMapper extends BaseMapper { + /** + * 通过角色编号查询多租户编码 + * @param roleId 角色ID + * @return 多租户编码列表 + */ + List selectTenantCodeByRoleId(String roleId); + } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/TenantService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/TenantService.java index a630675b..baf766fc 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/TenantService.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/TenantService.java @@ -3,6 +3,8 @@ package com.cloud.kicc.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.cloud.kicc.system.api.entity.Tenant; +import java.util.List; + /** *

* 多租户服务类 @@ -13,4 +15,11 @@ import com.cloud.kicc.system.api.entity.Tenant; */ public interface TenantService extends IService { + /** + * 通过角色编号查询多租户编码 + * @param roleId 角色ID + * @return 多租户编码列表 + */ + List selectTenantCodeByRoleId(String roleId); + } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/TenantServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/TenantServiceImpl.java index e3a135b1..9cfbec1a 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/TenantServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/TenantServiceImpl.java @@ -6,6 +6,8 @@ import com.cloud.kicc.system.mapper.TenantMapper; import com.cloud.kicc.system.service.TenantService; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 多租户服务实现类 @@ -17,4 +19,9 @@ import org.springframework.stereotype.Service; @Service public class TenantServiceImpl extends ServiceImpl implements TenantService { + @Override + public List selectTenantCodeByRoleId(String roleId) { + return baseMapper.selectTenantCodeByRoleId(roleId); + } + } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java index 8fe72b37..bb98a812 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java @@ -41,6 +41,7 @@ public class UserServiceImpl extends ServiceImpl implements Us private final DeptService deptService; private final RoleService roleService; private final MenuService menuService; + private final TenantService tenantService; private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); @Override @@ -71,6 +72,8 @@ public class UserServiceImpl extends ServiceImpl implements Us user.setRoleIds(ArrayUtil.toArray(roleIds, String.class)); // 设置权限列表(menu.permission) Set permissions = new HashSet(); + // 设置多租户编码列表 + Set tenantCode = new HashSet(); roleList.forEach(role -> { permissions.add(SecurityConstants.ROLE + role.getId()); List perms = menuService.selectPermsByRoleId(role.getId()); @@ -81,7 +84,13 @@ public class UserServiceImpl extends ServiceImpl implements Us } }); } + // 设置多租户编码信息 + List codes = tenantService.selectTenantCodeByRoleId(role.getId()); + tenantCode.addAll(codes); }); + // 检测多租户信息是否存在,不存在抛出异常 + + user.setPermissions(ArrayUtil.toArray(permissions, String.class)); return user; } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/TenantMapper.xml b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/TenantMapper.xml index acf40009..cc956c6e 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/TenantMapper.xml +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/TenantMapper.xml @@ -2,4 +2,16 @@ + +