diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserRoleServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserRoleServiceApi.java index a7d53faab..2d1a77b4e 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserRoleServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserRoleServiceApi.java @@ -77,5 +77,13 @@ public interface SysUserRoleServiceApi { * @since 2024-01-18 14:06 */ void removeUserOrgRoleLink(Long userId, Long orgId); - + + /** + * 删除用户所有关联机构的角色 + * + * @author fengshuonan + * @since 2024-01-18 16:07 + */ + void deleteUserAllOrgBind(Long userId); + } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/UserRoleAssignPageController.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/UserRoleAssignPageController.java index 61088e39a..c599b33c2 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/UserRoleAssignPageController.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/UserRoleAssignPageController.java @@ -1,5 +1,6 @@ package cn.stylefeng.roses.kernel.sys.modular.user.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; @@ -9,7 +10,9 @@ import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.NewUserRoleBindRespon import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.DeleteRequest; 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.pojo.request.SysUserOrgRequest; import cn.stylefeng.roses.kernel.sys.modular.user.service.SysRoleAssignService; +import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserOrgService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -31,6 +34,9 @@ public class UserRoleAssignPageController { @Resource private SysRoleAssignService sysRoleAssignService; + @Resource + private SysUserOrgService sysUserOrgService; + /** * 获取用户的角色授权信息列表 * @@ -79,4 +85,28 @@ public class UserRoleAssignPageController { return new SuccessResponseData<>(); } + /** + * 添加用户机构的绑定 + * + * @author fengshuonan + * @since 2024-01-18 14:50 + */ + @PostResource(name = "添加用户机构的绑定", path = "/sysRoleAssign/addUserOrgBind") + public ResponseData addUserOrgBind(@RequestBody @Validated(BaseRequest.add.class) SysUserOrgRequest sysUserOrgRequest) { + sysUserOrgService.add(sysUserOrgRequest); + return new SuccessResponseData<>(); + } + + /** + * 删除全部机构绑定 + * + * @author fengshuonan + * @since 2024-01-18 15:47 + */ + @PostResource(name = "删除全部机构绑定", path = "/sysRoleAssign/deleteAllOrgBind") + public ResponseData deleteAllOrgBind(@RequestBody @Validated(BaseRequest.delete.class) SysUserOrgRequest sysUserOrgRequest) { + sysRoleAssignService.clearAllOrgAndRoleBind(sysUserOrgRequest); + return new SuccessResponseData<>(); + } + } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserOrgRequest.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserOrgRequest.java index f3a3c3cbf..e0195af61 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserOrgRequest.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserOrgRequest.java @@ -21,14 +21,13 @@ public class SysUserOrgRequest extends BaseRequest { /** * 企业员工主键id */ - @NotNull(message = "企业员工主键id不能为空", groups = {delete.class}) @ChineseDescription("企业员工主键id") private Long userOrgId; /** * 用户id */ - @NotNull(message = "用户id不能为空", groups = {add.class}) + @NotNull(message = "用户id不能为空", groups = {add.class, delete.class}) @ChineseDescription("用户id") private Long userId; diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysRoleAssignService.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysRoleAssignService.java index a9762810d..871e4a72d 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysRoleAssignService.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysRoleAssignService.java @@ -4,6 +4,7 @@ import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.NewUserRoleBindRespon import cn.stylefeng.roses.kernel.sys.api.pojo.user.newrole.request.DeleteRequest; 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.pojo.request.SysUserOrgRequest; import java.util.List; @@ -47,4 +48,12 @@ public interface SysRoleAssignService { */ void removeUserOrgBind(DeleteRequest deleteRequest); + /** + * 删除所有的组织机构的绑定,同时清空机构下的角色绑定 + * + * @author fengshuonan + * @since 2024-01-18 15:50 + */ + void clearAllOrgAndRoleBind(SysUserOrgRequest sysUserOrgRequest); + } \ No newline at end of file diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserOrgService.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserOrgService.java index 8cc41cd24..4bd6edd30 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserOrgService.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserOrgService.java @@ -98,4 +98,12 @@ public interface SysUserOrgService extends IService, SysUserOrgServi */ void removeUserOrgLink(Long userId, Long orgId); + /** + * 删除全部的机构绑定 + * + * @author fengshuonan + * @since 2024-01-18 15:48 + */ + void deleteAllOrgBind(SysUserOrgRequest sysUserOrgRequest); + } \ No newline at end of file diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysRoleAssignServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysRoleAssignServiceImpl.java index a670de259..bca5e491e 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysRoleAssignServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysRoleAssignServiceImpl.java @@ -15,6 +15,7 @@ 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.pojo.request.SysUserOrgRequest; import cn.stylefeng.roses.kernel.sys.modular.user.service.SysRoleAssignService; import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserOrgService; import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserRoleService; @@ -131,4 +132,15 @@ public class SysRoleAssignServiceImpl implements SysRoleAssignService { userRoleCache.remove(String.valueOf(deleteRequest.getUserId())); } + @Override + @Transactional(rollbackFor = Exception.class) + public void clearAllOrgAndRoleBind(SysUserOrgRequest sysUserOrgRequest) { + + // 1. 先清空用户的机构绑定 + sysUserOrgService.deleteAllOrgBind(sysUserOrgRequest); + + // 2. 再清空用户的所有的带机构的角色绑定 + sysUserRoleService.deleteUserAllOrgBind(sysUserOrgRequest.getUserId()); + } + } \ No newline at end of file diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java index 172f08826..722d83b87 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java @@ -125,6 +125,12 @@ public class SysUserOrgServiceImpl extends ServiceImpl wrapper = this.createWrapper(sysUserOrgRequest); + this.remove(wrapper); + } + @Override public List findList(SysUserOrgRequest sysUserOrgRequest) { LambdaQueryWrapper wrapper = this.createWrapper(sysUserOrgRequest); diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java index 97bd12bb0..71c5a1847 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java @@ -250,6 +250,14 @@ public class SysUserRoleServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUserRole::getUserId, userId); + queryWrapper.isNotNull(SysUserRole::getRoleOrgId); + this.remove(queryWrapper); + } + @Override public SysUserRole getPointUserRole(Long userId, Long roleId, Long orgId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();