mirror of https://gitee.com/stylefeng/roses
【8.0】【sys】【role】初始化角色绑定权限的集合
parent
b1545fa40e
commit
6f94c3405b
|
@ -134,8 +134,13 @@ public interface PermissionCodeConstants {
|
||||||
String AUTH_RESOURCE = "AUTH_RESOURCE";
|
String AUTH_RESOURCE = "AUTH_RESOURCE";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在线用户界面的取消奶奶控制标识
|
* 在线用户界面的权限标识
|
||||||
*/
|
*/
|
||||||
String ONLINE_USER = "ONLINE_USER";
|
String ONLINE_USER = "ONLINE_USER";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改权限的权限范围权限标识
|
||||||
|
*/
|
||||||
|
String CHANGE_ROLE_BIND_LIMIT = "CHANGE_ROLE_BIND_LIMIT";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.controller;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||||
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
||||||
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||||
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.api.constants.PermissionCodeConstants;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleLimitService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制控制器
|
||||||
|
* <p>
|
||||||
|
* 除了超级管理员拥有权限绑定外,如果其他角色的成员也需要绑定权限,那么需要在权限绑定界面绑定权限限制
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@ApiResource(name = "角色权限限制")
|
||||||
|
public class SysRoleLimitController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleLimitService sysRoleLimitService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取角色的权限限制列表,和角色绑定权限界面返回的数据结构一样
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/9/8 13:08
|
||||||
|
*/
|
||||||
|
@GetResource(name = "获取角色的权限限制列表", path = "/roleLimit/getRoleLimit", requiredPermission = true,
|
||||||
|
requirePermissionCode = PermissionCodeConstants.CHANGE_ROLE_BIND_LIMIT)
|
||||||
|
public ResponseData<RoleBindPermissionResponse> getRoleBindLimit(
|
||||||
|
@Validated(BaseRequest.detail.class) RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
|
|
||||||
|
|
||||||
|
return new SuccessResponseData<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定角色的限制列表
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/9/8 13:09
|
||||||
|
*/
|
||||||
|
@PostResource(name = "绑定角色权限的限制列表", path = "/roleLimit/bindRoleLimit", requiredPermission = true,
|
||||||
|
requirePermissionCode = PermissionCodeConstants.CHANGE_ROLE_BIND_LIMIT)
|
||||||
|
public ResponseData<?> bindRoleLimit(@RequestBody @Validated(RoleBindPermissionRequest.roleBindPermission.class)
|
||||||
|
RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
|
|
||||||
|
|
||||||
|
return new SuccessResponseData<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.entity;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制实例类
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
@TableName("sys_role_limit")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class SysRoleLimit extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@TableId(value = "role_limit_id", type = IdType.ASSIGN_ID)
|
||||||
|
@ChineseDescription("主键")
|
||||||
|
private Long roleLimitId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色id
|
||||||
|
*/
|
||||||
|
@TableField("role_id")
|
||||||
|
@ChineseDescription("角色id")
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色限制类型:1-角色可分配的菜单,2-角色可分配的功能
|
||||||
|
*/
|
||||||
|
@TableField("limit_type")
|
||||||
|
@ChineseDescription("角色限制类型:1-角色可分配的菜单,2-角色可分配的功能")
|
||||||
|
private Integer limitType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务id,为菜单id或菜单功能id
|
||||||
|
*/
|
||||||
|
@TableField("business_id")
|
||||||
|
@ChineseDescription("业务id,为菜单id或菜单功能id")
|
||||||
|
private Long businessId;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.enums;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制异常相关枚举
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public enum SysRoleLimitExceptionEnum implements AbstractExceptionEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询结果不存在
|
||||||
|
*/
|
||||||
|
SYS_ROLE_LIMIT_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误编码
|
||||||
|
*/
|
||||||
|
private final String errorCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提示用户信息
|
||||||
|
*/
|
||||||
|
private final String userTip;
|
||||||
|
|
||||||
|
SysRoleLimitExceptionEnum(String errorCode, String userTip) {
|
||||||
|
this.errorCode = errorCode;
|
||||||
|
this.userTip = userTip;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.mapper;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleLimit;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制 Mapper 接口
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
public interface SysRoleLimitMapper extends BaseMapper<SysRoleLimit> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleLimitMapper">
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,48 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.pojo.request;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制封装类
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
public class SysRoleLimitRequest extends BaseRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键不能为空", groups = {edit.class, delete.class})
|
||||||
|
@ChineseDescription("主键")
|
||||||
|
private Long roleLimitId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "角色id不能为空", groups = {add.class, edit.class})
|
||||||
|
@ChineseDescription("角色id")
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色限制类型:1-角色可分配的菜单,2-角色可分配的功能
|
||||||
|
*/
|
||||||
|
@NotNull(message = "角色限制类型:1-角色可分配的菜单,2-角色可分配的功能不能为空", groups = {add.class, edit.class})
|
||||||
|
@ChineseDescription("角色限制类型:1-角色可分配的菜单,2-角色可分配的功能")
|
||||||
|
private Integer limitType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务id,为菜单id或菜单功能id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "业务id,为菜单id或菜单功能id不能为空", groups = {add.class, edit.class})
|
||||||
|
@ChineseDescription("业务id,为菜单id或菜单功能id")
|
||||||
|
private Long businessId;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.service;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleLimit;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleLimitRequest;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制 服务类
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
public interface SysRoleLimitService extends IService<SysRoleLimit> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增
|
||||||
|
*
|
||||||
|
* @param sysRoleLimitRequest 请求参数
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
void add(SysRoleLimitRequest sysRoleLimitRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
*
|
||||||
|
* @param sysRoleLimitRequest 请求参数
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
void del(SysRoleLimitRequest sysRoleLimitRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
*
|
||||||
|
* @param sysRoleLimitRequest 请求参数
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
void edit(SysRoleLimitRequest sysRoleLimitRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询详情
|
||||||
|
*
|
||||||
|
* @param sysRoleLimitRequest 请求参数
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
SysRoleLimit detail(SysRoleLimitRequest sysRoleLimitRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取列表
|
||||||
|
*
|
||||||
|
* @param sysRoleLimitRequest 请求参数
|
||||||
|
* @return List<SysRoleLimit> 返回结果
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
List<SysRoleLimit> findList(SysRoleLimitRequest sysRoleLimitRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取列表(带分页)
|
||||||
|
*
|
||||||
|
* @param sysRoleLimitRequest 请求参数
|
||||||
|
* @return PageResult<SysRoleLimit> 返回结果
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
PageResult<SysRoleLimit> findPage(SysRoleLimitRequest sysRoleLimitRequest);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleLimit;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleLimitExceptionEnum;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleLimitMapper;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleLimitRequest;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleLimitService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色权限限制业务实现层
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class SysRoleLimitServiceImpl extends ServiceImpl<SysRoleLimitMapper, SysRoleLimit> implements SysRoleLimitService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
SysRoleLimit sysRoleLimit = new SysRoleLimit();
|
||||||
|
BeanUtil.copyProperties(sysRoleLimitRequest, sysRoleLimit);
|
||||||
|
this.save(sysRoleLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void del(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
SysRoleLimit sysRoleLimit = this.querySysRoleLimit(sysRoleLimitRequest);
|
||||||
|
this.removeById(sysRoleLimit.getRoleLimitId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void edit(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
SysRoleLimit sysRoleLimit = this.querySysRoleLimit(sysRoleLimitRequest);
|
||||||
|
BeanUtil.copyProperties(sysRoleLimitRequest, sysRoleLimit);
|
||||||
|
this.updateById(sysRoleLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysRoleLimit detail(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
return this.querySysRoleLimit(sysRoleLimitRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<SysRoleLimit> findPage(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
LambdaQueryWrapper<SysRoleLimit> wrapper = createWrapper(sysRoleLimitRequest);
|
||||||
|
Page<SysRoleLimit> sysRolePage = this.page(PageFactory.defaultPage(), wrapper);
|
||||||
|
return PageResultFactory.createPageResult(sysRolePage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysRoleLimit> findList(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
LambdaQueryWrapper<SysRoleLimit> wrapper = this.createWrapper(sysRoleLimitRequest);
|
||||||
|
return this.list(wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取信息
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
private SysRoleLimit querySysRoleLimit(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
SysRoleLimit sysRoleLimit = this.getById(sysRoleLimitRequest.getRoleLimitId());
|
||||||
|
if (ObjectUtil.isEmpty(sysRoleLimit)) {
|
||||||
|
throw new ServiceException(SysRoleLimitExceptionEnum.SYS_ROLE_LIMIT_NOT_EXISTED);
|
||||||
|
}
|
||||||
|
return sysRoleLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建查询wrapper
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2023/09/08 12:55
|
||||||
|
*/
|
||||||
|
private LambdaQueryWrapper<SysRoleLimit> createWrapper(SysRoleLimitRequest sysRoleLimitRequest) {
|
||||||
|
LambdaQueryWrapper<SysRoleLimit> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
|
||||||
|
Long roleLimitId = sysRoleLimitRequest.getRoleLimitId();
|
||||||
|
Long roleId = sysRoleLimitRequest.getRoleId();
|
||||||
|
Integer limitType = sysRoleLimitRequest.getLimitType();
|
||||||
|
Long businessId = sysRoleLimitRequest.getBusinessId();
|
||||||
|
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotNull(roleLimitId), SysRoleLimit::getRoleLimitId, roleLimitId);
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotNull(roleId), SysRoleLimit::getRoleId, roleId);
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotNull(limitType), SysRoleLimit::getLimitType, limitType);
|
||||||
|
queryWrapper.eq(ObjectUtil.isNotNull(businessId), SysRoleLimit::getBusinessId, businessId);
|
||||||
|
|
||||||
|
return queryWrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue