mirror of https://gitee.com/stylefeng/roses
【8.1.0】【user-org】更新用户角色绑定
parent
6d10637a8e
commit
9574e0cc2a
|
@ -13,6 +13,12 @@ import javax.validation.constraints.NotNull;
|
|||
@Data
|
||||
public class RoleControlRequest {
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
@NotNull(message = "用户id不能为空,请检查userId参数")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 所操作的机构id
|
||||
*/
|
||||
|
|
|
@ -6,6 +6,7 @@ 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.pojo.user.newrole.NewUserRoleBindResponse;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.RoleControlRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.StatusControlRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysRoleAssignService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
@ -53,4 +54,17 @@ public class UserRoleAssignPageController {
|
|||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定或取消绑定角色
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024-01-18 9:31
|
||||
*/
|
||||
@PostResource(name = "绑定或取消绑定角色", path = "/sysRoleAssign/changeRoleSelect")
|
||||
public ResponseData<?> changeRoleSelect(@RequestBody @Validated RoleControlRequest roleControlRequest) {
|
||||
sysRoleAssignService.changeRoleSelect(roleControlRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -63,7 +63,17 @@ public enum SysUserExceptionEnum implements AbstractExceptionEnum {
|
|||
/**
|
||||
* 非超级管理员不能修改基础系统角色绑定
|
||||
*/
|
||||
CANT_CHANGE_BASE_SYSTEM_ROLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10010", "非超级管理员不能修改基础系统角色绑定");
|
||||
CANT_CHANGE_BASE_SYSTEM_ROLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10010", "非超级管理员不能修改基础系统角色绑定"),
|
||||
|
||||
/**
|
||||
* 无法绑定角色,请检查类型是否正常
|
||||
*/
|
||||
ROLE_TYPE_PERMISSION_ERROR(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10011", "无法绑定角色,请检查类型是否正常"),
|
||||
|
||||
/**
|
||||
* 组织机构id为空,请检查参数
|
||||
*/
|
||||
ORG_ID_EMPTY_ERROR(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10012", "组织机构id为空,请检查参数");
|
||||
|
||||
/**
|
||||
* 错误编码
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.user.service;
|
||||
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.NewUserRoleBindResponse;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.RoleControlRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.StatusControlRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -29,4 +30,12 @@ public interface SysRoleAssignService {
|
|||
*/
|
||||
void changeUserBindStatus(StatusControlRequest statusControlRequest);
|
||||
|
||||
/**
|
||||
* 设置角色的选中状态的填充
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024-01-18 10:50
|
||||
*/
|
||||
void changeRoleSelect(RoleControlRequest roleControlRequest);
|
||||
|
||||
}
|
|
@ -29,4 +29,20 @@ public interface SysUserRoleService extends IService<SysUserRole>, SysUserRoleSe
|
|||
*/
|
||||
void bindUserDefaultRole(Long userId);
|
||||
|
||||
/**
|
||||
* 获取用户是否绑定的对应的角色
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024-01-18 10:54
|
||||
*/
|
||||
SysUserRole getPointUserRole(Long userId, Long roleId, Long orgId);
|
||||
|
||||
/**
|
||||
* 新增一个角色绑定
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024-01-18 11:00
|
||||
*/
|
||||
void addBusinessAndCompanyBindRole(SysUserRole sysUserRole);
|
||||
|
||||
}
|
|
@ -7,8 +7,10 @@ import cn.stylefeng.roses.kernel.sys.api.pojo.role.SysRoleDTO;
|
|||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.UserOrgDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.NewUserRoleBindResponse;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.UserRoleDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.RoleControlRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.StatusControlRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserOrg;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserRole;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.enums.SysUserOrgExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.factory.RoleAssignFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysRoleAssignService;
|
||||
|
@ -79,4 +81,31 @@ public class SysRoleAssignServiceImpl implements SysRoleAssignService {
|
|||
this.sysUserOrgService.updateById(userOrgInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeRoleSelect(RoleControlRequest roleControlRequest) {
|
||||
|
||||
// 1. 获取用户是否已经绑定了这个机构下的这个角色
|
||||
SysUserRole pointUserRole = sysUserRoleService.getPointUserRole(roleControlRequest.getUserId(), roleControlRequest.getRoleId(), roleControlRequest.getOrgId());
|
||||
|
||||
// 针对已经绑定的不需要再次绑定
|
||||
if (pointUserRole != null && roleControlRequest.getCheckedFlag()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 未绑定过,但是需要绑定,则新增一条记录
|
||||
else if (pointUserRole == null && roleControlRequest.getCheckedFlag()) {
|
||||
SysUserRole sysUserRole = new SysUserRole();
|
||||
sysUserRole.setUserId(roleControlRequest.getUserId());
|
||||
sysUserRole.setRoleId(roleControlRequest.getRoleId());
|
||||
sysUserRole.setRoleType(roleControlRequest.getRoleType());
|
||||
sysUserRole.setRoleOrgId(roleControlRequest.getOrgId());
|
||||
sysUserRoleService.save(sysUserRole);
|
||||
}
|
||||
|
||||
// 不需要绑定,则删除这条记录
|
||||
else if (pointUserRole != null) {
|
||||
sysUserRoleService.removeById(pointUserRole.getUserRoleId());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -242,6 +242,37 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
|||
return this.findUserRoleLimitScope(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysUserRole getPointUserRole(Long userId, Long roleId, Long orgId) {
|
||||
LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysUserRole::getUserId, userId);
|
||||
queryWrapper.eq(SysUserRole::getRoleId, roleId);
|
||||
queryWrapper.eq(SysUserRole::getRoleOrgId, orgId);
|
||||
queryWrapper.select(SysUserRole::getUserRoleId, SysUserRole::getUserId, SysUserRole::getRoleId, SysUserRole::getRoleType, SysUserRole::getRoleOrgId);
|
||||
return this.getOne(queryWrapper, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBusinessAndCompanyBindRole(SysUserRole sysUserRole) {
|
||||
if (sysUserRole == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 这个接口只能操作业务的和公司的绑定
|
||||
Integer roleType = sysUserRole.getRoleType();
|
||||
if (!RoleTypeEnum.BUSINESS_ROLE.getCode().equals(roleType) || !RoleTypeEnum.COMPANY_ROLE.getCode().equals(roleType)) {
|
||||
throw new ServiceException(SysUserExceptionEnum.ROLE_TYPE_PERMISSION_ERROR);
|
||||
}
|
||||
|
||||
// 这个接口必须传递组织机构,给这个人的组织机构下绑定角色
|
||||
Long roleOrgId = sysUserRole.getRoleOrgId();
|
||||
if (ObjectUtil.isEmpty(roleOrgId)) {
|
||||
throw new ServiceException(SysUserExceptionEnum.ORG_ID_EMPTY_ERROR);
|
||||
}
|
||||
|
||||
this.save(sysUserRole);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空用户绑定的所有系统角色,这个界面只管分配系统角色
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue