【8.1.0】【user-org】更新用户角色绑定

pull/60/head
fengshuonan 2024-01-18 11:13:42 +08:00
parent 6d10637a8e
commit 9574e0cc2a
7 changed files with 116 additions and 1 deletions

View File

@ -13,6 +13,12 @@ import javax.validation.constraints.NotNull;
@Data
public class RoleControlRequest {
/**
* id
*/
@NotNull(message = "用户id不能为空请检查userId参数")
private Long userId;
/**
* id
*/

View File

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

View File

@ -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为空请检查参数");
/**
*

View File

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

View File

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

View File

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

View File

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