From cb6aa953e128a602630936c73d047495c8d41c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=B5=B7=E6=B4=8B?= Date: Tue, 17 Oct 2023 18:53:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(server):=20=E5=A2=9E=E5=8A=A0=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=B7=A5=E4=BD=9C=E5=8F=B0=E4=B8=8B=E7=9A=84=E6=89=80?= =?UTF-8?q?=E6=9C=89=E4=BA=BA=E5=91=98=E4=B8=8E=E5=B9=B3=E5=8F=B0=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://jira.axzo.cn/browse/REQ-1502?goToView=1 modify: 1. 增加删除工作台下的所有人员与平台角色接口 --- .../src/test/resources/role-user.http | 12 ++++++ .../tyr/client/feign/TyrSaasRoleUserApi.java | 41 +++++++++++++------ .../req/DeleteUserRolesOfWorkspaceParam.java | 30 ++++++++++++++ .../roleuser/RoleUserController.java | 14 ++++++- .../server/service/SaasRoleUserService.java | 10 ++++- .../server/service/impl/RoleUserService.java | 19 +++++++++ 6 files changed, 111 insertions(+), 15 deletions(-) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteUserRolesOfWorkspaceParam.java diff --git a/integration-test/src/test/resources/role-user.http b/integration-test/src/test/resources/role-user.http index 3d1e2906..aa43bfaf 100644 --- a/integration-test/src/test/resources/role-user.http +++ b/integration-test/src/test/resources/role-user.http @@ -21,4 +21,16 @@ Content-Type: application/json > reponse-check.js +### +POST {{host}}/api/saas-role-user/delete-user-role-of-workspace +Accept: application/json +Content-Type: application/json + +{ + +} + +> reponse-check.js + + diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java index a8139c18..dab4f7e1 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java @@ -1,19 +1,25 @@ package cn.axzo.tyr.client.feign; -import java.util.List; - -import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.tyr.client.model.roleuser.dto.CreateAdminRoleDTO; import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserRelationDTO; import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO; -import cn.axzo.tyr.client.model.roleuser.req.*; +import cn.axzo.tyr.client.model.roleuser.req.CreateAgencyAdminRoleParam; +import cn.axzo.tyr.client.model.roleuser.req.CreateWorkspaceAdminRoleParam; +import cn.axzo.tyr.client.model.roleuser.req.DeleteAdminRoleParam; +import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam; +import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam; +import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRolesOfWorkspaceParam; +import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam; +import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq; +import cn.axzo.tyr.client.model.roleuser.req.SuperAdminParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import java.util.List; /** * 角色 @@ -41,16 +47,16 @@ public interface TyrSaasRoleUserApi { * @param param * @return */ - @PostMapping("api/saas-role-user/delete") + @PostMapping("/api/saas-role-user/delete") ApiResult deleteUserAllRoles(@RequestBody @Valid List param); /** - * 新的 移除某个人在某个工作台的所有角色(除超管) + * 删除某个用户非超管角色(新) * * @param param * @return */ - @PostMapping("api/saas-role-user/delete-user-role") + @PostMapping("/api/saas-role-user/delete-user-role") ApiResult deleteUserRoles(@RequestBody @Valid DeleteUserRoleParam param); /** @@ -87,4 +93,13 @@ public interface TyrSaasRoleUserApi { */ @PostMapping("api/saas-role-user/super-admin") ApiResult superAdmin(@RequestBody @Valid SuperAdminParam param); + + /** + * 删除工作台下的所有人员与平台角色 + * + * @param param + * @return + */ + @PostMapping("/api/saas-role-user/delete-user-role-of-workspace") + ApiResult deleteUserRolesOfWorkspace(@RequestBody @Valid DeleteUserRolesOfWorkspaceParam param); } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteUserRolesOfWorkspaceParam.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteUserRolesOfWorkspaceParam.java new file mode 100644 index 00000000..2ef239e6 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteUserRolesOfWorkspaceParam.java @@ -0,0 +1,30 @@ +package cn.axzo.tyr.client.model.roleuser.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author haiyangjin + * @date 2023/10/17 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DeleteUserRolesOfWorkspaceParam { + /** + * 工作台id + */ + @NotNull(message = "工作台ID不能为空") + private Long workspaceId; + + /** + * 单位id + */ + @NotNull(message = "单位ID不能为空") + private Long ouId; +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java index 407b79dc..fed2e880 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java @@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.tyr.client.feign.TyrSaasRoleUserApi; import cn.axzo.tyr.client.model.roleuser.dto.CreateAdminRoleDTO; import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserRelationDTO; +import cn.axzo.tyr.client.model.roleuser.req.*; import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO; import cn.axzo.tyr.client.model.roleuser.req.*; import cn.axzo.tyr.server.service.SaasRoleUserRelationService; @@ -46,7 +47,7 @@ public class RoleUserController implements TyrSaasRoleUserApi { } /** - * 新的 移除某个人在某个工作台的所有角色(除超管) + * 删除用户非超管角色 * * @param param * @return @@ -56,6 +57,17 @@ public class RoleUserController implements TyrSaasRoleUserApi { return ApiResult.ok(saasRoleUserService.deleteUserRoles(param)); } + /** + * 删除工作台下的所有人员与平台角色 + * + * @param param + * @return + */ + @Override + public ApiResult deleteUserRolesOfWorkspace(DeleteUserRolesOfWorkspaceParam param) { + return ApiResult.ok(saasRoleUserService.deleteUserRolesOfWorkspace(param)); + } + @Override public ApiResult createAgencyAdminRole(CreateAgencyAdminRoleParam param) { // todo cn.axzo.basics.auth.api.SaasRoleApi#grantAgencyAdminRole diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java index 300a0a9d..5332a154 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java @@ -3,7 +3,7 @@ package cn.axzo.tyr.server.service; import cn.axzo.tyr.client.model.enums.IdentityType; import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam; import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam; -import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam; +import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRolesOfWorkspaceParam; import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq; import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation; @@ -44,6 +44,14 @@ public interface SaasRoleUserService { */ boolean deleteUserRoles(DeleteUserRoleParam param); + /** + * 删除某个工作台下的人和角色 + * + * @param param + * @return + */ + boolean deleteUserRolesOfWorkspace(DeleteUserRolesOfWorkspaceParam param); + /** *
diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java
index 786d759a..09205041 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java
@@ -7,6 +7,7 @@ import cn.axzo.tyr.client.model.BaseWorkspaceModel;
 import cn.axzo.tyr.client.model.enums.IdentityType;
 import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam;
 import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam;
+import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRolesOfWorkspaceParam;
 import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
 import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
 import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
@@ -120,6 +121,7 @@ public class RoleUserService implements SaasRoleUserService {
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean deleteUserRoles(DeleteUserRoleParam param) {
 		List roleList = saasRoleDao.lambdaQuery()
 				.eq(Objects.nonNull(param.getOuId()), SaasRole::getOwnerOuId, param.getOuId())
@@ -138,6 +140,23 @@ public class RoleUserService implements SaasRoleUserService {
 		return true;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean deleteUserRolesOfWorkspace(DeleteUserRolesOfWorkspaceParam param) {
+		// 删除所有的角色
+		saasRoleDao.remove(Wrappers.lambdaQuery(SaasRole.class)
+				.eq(SaasRole::getWorkspaceId, param.getWorkspaceId())
+				.eq(SaasRole::getOwnerOuId, param.getOuId())
+				.eq(SaasRole::getRoleType, RoleTypeEnum.COMMON.getValue())
+		);
+		// 删除工作台下所有的人和角色的关系
+		roleUserRelationDao.remove(Wrappers.lambdaQuery(SaasRoleUserRelation.class)
+				.eq(SaasRoleUserRelation::getWorkspaceId, param.getWorkspaceId())
+				.eq(SaasRoleUserRelation::getOuId, param.getOuId())
+		);
+		return true;
+	}
+
 	@Override
 	public List queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set workspaceIds, Set ouIds) {
 		return roleUserRelationDao.queryByWorkspaceIdOrOu(identityId, identityType, workspaceIds, ouIds);