Browse Source

👣 重构底层支持自选多租户

master
wangxiang 3 years ago
parent
commit
94007732e9
  1. 4
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java
  2. 19
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  3. 9
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/TenantMapper.java
  4. 9
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/TenantService.java
  5. 7
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/TenantServiceImpl.java
  6. 9
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
  7. 12
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/TenantMapper.xml

4
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 { @@ -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();
}

19
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -1,32 +1,27 @@ @@ -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;

9
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; @@ -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;
/**
*<p>
* 多租户 Mapper 接口
@ -13,4 +15,11 @@ import com.cloud.kicc.system.api.entity.Tenant; @@ -13,4 +15,11 @@ import com.cloud.kicc.system.api.entity.Tenant;
*/
public interface TenantMapper extends BaseMapper<Tenant> {
/**
* 通过角色编号查询多租户编码
* @param roleId 角色ID
* @return 多租户编码列表
*/
List<String> selectTenantCodeByRoleId(String roleId);
}

9
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; @@ -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;
/**
*<p>
* 多租户服务类
@ -13,4 +15,11 @@ import com.cloud.kicc.system.api.entity.Tenant; @@ -13,4 +15,11 @@ import com.cloud.kicc.system.api.entity.Tenant;
*/
public interface TenantService extends IService<Tenant> {
/**
* 通过角色编号查询多租户编码
* @param roleId 角色ID
* @return 多租户编码列表
*/
List<String> selectTenantCodeByRoleId(String roleId);
}

7
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; @@ -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;
/**
*<p>
* 多租户服务实现类
@ -17,4 +19,9 @@ import org.springframework.stereotype.Service; @@ -17,4 +19,9 @@ import org.springframework.stereotype.Service;
@Service
public class TenantServiceImpl extends ServiceImpl<TenantMapper, Tenant> implements TenantService {
@Override
public List<String> selectTenantCodeByRoleId(String roleId) {
return baseMapper.selectTenantCodeByRoleId(roleId);
}
}

9
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<UserMapper, User> implements Us @@ -41,6 +41,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> 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<UserMapper, User> implements Us @@ -71,6 +72,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
user.setRoleIds(ArrayUtil.toArray(roleIds, String.class));
// 设置权限列表(menu.permission)
Set<String> permissions = new HashSet();
// 设置多租户编码列表
Set<String> tenantCode = new HashSet();
roleList.forEach(role -> {
permissions.add(SecurityConstants.ROLE + role.getId());
List<String> perms = menuService.selectPermsByRoleId(role.getId());
@ -81,7 +84,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -81,7 +84,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
}
});
}
// 设置多租户编码信息
List<String> codes = tenantService.selectTenantCodeByRoleId(role.getId());
tenantCode.addAll(codes);
});
// 检测多租户信息是否存在,不存在抛出异常
user.setPermissions(ArrayUtil.toArray(permissions, String.class));
return user;
}

12
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/TenantMapper.xml

@ -2,4 +2,16 @@ @@ -2,4 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloud.kicc.system.mapper.TenantMapper">
<select id="selectTenantCodeByRoleId" parameterType="String" resultType="String">
select t.code from sys_tenant t
inner join sys_role_tenant rt on t.id = rt.multi_tenant_id
inner join sys_role r on rt.role_id = r.id
where
t.del_flag = 0 and r.del_flag = 0 and
t.status = 0 and r.status = 0 and
current_timestamp between t.tenant_start_time and t.tenant_end_time and
rt.role_id = #{roleId}
order by t.create_time
</select>
</mapper>

Loading…
Cancel
Save