【8.0】【sys】【role】初始化角色绑定权限的集合

pull/57/head
fengshuonan 2023-09-08 13:41:30 +08:00
parent b1545fa40e
commit 6f94c3405b
9 changed files with 402 additions and 1 deletions

View File

@ -134,8 +134,13 @@ public interface PermissionCodeConstants {
String AUTH_RESOURCE = "AUTH_RESOURCE";
/**
* 线
* 线
*/
String ONLINE_USER = "ONLINE_USER";
/**
*
*/
String CHANGE_ROLE_BIND_LIMIT = "CHANGE_ROLE_BIND_LIMIT";
}

View File

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

View File

@ -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;
/**
* ididid
*/
@TableField("business_id")
@ChineseDescription("业务id为菜单id或菜单功能id")
private Long businessId;
}

View File

@ -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;
}
}

View File

@ -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> {
}

View File

@ -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>

View File

@ -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;
/**
* ididid
*/
@NotNull(message = "业务id为菜单id或菜单功能id不能为空", groups = {add.class, edit.class})
@ChineseDescription("业务id为菜单id或菜单功能id")
private Long businessId;
}

View File

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

View File

@ -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;
}
}