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 1/7] =?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);

From 38b200e60076e21a36b11e3c8599e6703d90b051 Mon Sep 17 00:00:00 2001
From: yangsong 
Date: Tue, 17 Oct 2023 19:17:18 +0800
Subject: [PATCH 2/7] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=81=E7=A7=BB?=
 =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E7=AE=A1=E7=90=86=E5=91=98=E8=A7=92?=
 =?UTF-8?q?=E8=89=B2=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../client/feign/PermissionPointApplyApi.java |  3 -
 .../tyr/client/feign/TyrSaasRoleUserApi.java  | 14 +----
 .../model/roleuser/dto/SuperAdminInfoDTO.java | 15 +----
 .../roleuser/req/DeleteAdminRoleParam.java    | 21 -------
 .../model/roleuser/req/SuperAdminParam.java   |  8 ++-
 .../PermissionPointApplyController.java       |  5 --
 .../roleuser/RoleUserController.java          | 30 +++++-----
 .../server/service/SaasRoleUserService.java   | 26 ++++++---
 .../server/service/impl/RoleUserService.java  | 56 +++++++++++++++----
 .../SaasFeatureApplyDetailServiceImpl.java    |  4 +-
 .../impl/SaasFeatureApplyServiceImpl.java     |  5 +-
 11 files changed, 91 insertions(+), 96 deletions(-)

diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionPointApplyApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionPointApplyApi.java
index d3f3906c..24cd5278 100644
--- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionPointApplyApi.java
+++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionPointApplyApi.java
@@ -30,9 +30,6 @@ public interface PermissionPointApplyApi {
     @PostMapping(value = "/api/v1/permissionPoint/apply/submit")
     ApiResult submitApply(@RequestBody@Valid SubmitPermissionPointApplyVO apply);
 
-    @PostMapping(value = "/api/v1/permissionPoint/apply/update-detail")
-    ApiResult updateDetail(@RequestBody@Valid UpdatePermissionPointApplyVO updateDetail);
-
     @PostMapping(value = "/api/v1/permissionPoint/apply/bind")
     ApiResult bindWorkflowInstantce(@RequestBody@Valid BindWorkflowInstantceVO bind);
 
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..bf5d5731 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
@@ -73,18 +73,10 @@ public interface TyrSaasRoleUserApi {
     ApiResult deleteAdminRole(@RequestBody @Valid @NotEmpty List params);
 
     /**
-     * 批量查询超管
-     * @param params
-     * @return
-     */
-    @PostMapping("api/saas-role-user/super-admin-list")
-    ApiResult> superAdminList(@RequestBody @Valid @NotEmpty List params);
-
-    /**
-     * 查看超管详情
+     * 批量查询超管, 只能批量获取单个工作台台下的超管,业务系统需要根据返回的identityId和identityType查询identityProfile查询用户明细信息
      * @param param
      * @return
      */
-    @PostMapping("api/saas-role-user/super-admin")
-    ApiResult superAdmin(@RequestBody @Valid SuperAdminParam param);
+    @PostMapping("api/saas-role-user/super-admin-list")
+    ApiResult> superAdminList(@RequestBody @Valid SuperAdminParam param);
 }
diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SuperAdminInfoDTO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SuperAdminInfoDTO.java
index e9cba93c..88a81e17 100644
--- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SuperAdminInfoDTO.java
+++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SuperAdminInfoDTO.java
@@ -1,6 +1,5 @@
 package cn.axzo.tyr.client.model.roleuser.dto;
 
-import cn.axzo.tyr.client.model.enums.IdentityType;
 import lombok.Data;
 
 /**
@@ -16,19 +15,7 @@ public class SuperAdminInfoDTO {
    */
   private Long identityId;
   
-  private IdentityType identityType;
-
-  /**
-   * 手机号
-   */
-  private String phone;
-
-  /**
-   * 姓名
-   */
-  private String realName;
-
-
+  private Integer identityType;
   /**
    * 工作台Id
    */
diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteAdminRoleParam.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteAdminRoleParam.java
index 0d2cbb7e..a29c29dd 100644
--- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteAdminRoleParam.java
+++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/DeleteAdminRoleParam.java
@@ -1,7 +1,5 @@
 package cn.axzo.tyr.client.model.roleuser.req;
 
-import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum;
-import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
 import cn.axzo.tyr.client.model.enums.IdentityType;
 import lombok.Data;
 
@@ -12,22 +10,10 @@ public class DeleteAdminRoleParam {
      * 工作台id,与context校验
      */
     private Long workspaceId;
-
-    /**
-     * 工作台类型
-     */
-    private Integer workspaceTypeCode;
-
     /**
      * 单位id : 非必填
      */
     private Long ouId;
-
-    /**
-     * 单位类型
-     */
-    private OrganizationalNodeTypeEnum nodeTypeEnum;
-
     /**
      * 被赋予角色的人的身份id
      */
@@ -37,11 +23,4 @@ public class DeleteAdminRoleParam {
      * 身份类型,必填
      */
     private IdentityType identityType;
-
-    /**
-     * 角色Id,必填
-     * 只能传SUPER_ADMIN,ADMIN
-     */
-    private RoleTypeEnum roleType;
-
 }
diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/SuperAdminParam.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/SuperAdminParam.java
index f14a640e..11a0213f 100644
--- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/SuperAdminParam.java
+++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/SuperAdminParam.java
@@ -1,5 +1,8 @@
 package cn.axzo.tyr.client.model.roleuser.req;
 
+import java.util.List;
+
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
 import lombok.AllArgsConstructor;
@@ -27,7 +30,6 @@ public class SuperAdminParam {
   /**
    * 单位Id
    */
-  @NotNull(message = "单位Id不能为空")
-  private Long ouId;
-
+  @NotEmpty(message = "单位Id不能为空")
+  private List ouIds;
 }
diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionPointApplyController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionPointApplyController.java
index 6e6b8956..94e780ff 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionPointApplyController.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionPointApplyController.java
@@ -35,11 +35,6 @@ public class PermissionPointApplyController implements PermissionPointApplyApi {
         return ApiResult.ok(saasFeatureApplyService.saveApply(apply));
     }
 
-    @Override
-    public ApiResult updateDetail(UpdatePermissionPointApplyVO updateDetail) {
-        return null;
-    }
-
     @Override
     public ApiResult bindWorkflowInstantce(BindWorkflowInstantceVO bind) {
         saasFeatureApplyService.bindWorkflowInstantce(bind);
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..1989ffc8 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
@@ -1,5 +1,12 @@
 package cn.axzo.tyr.server.controller.roleuser;
 
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
 import cn.axzo.framework.domain.web.result.ApiResult;
 import cn.axzo.tyr.client.feign.TyrSaasRoleUserApi;
 import cn.axzo.tyr.client.model.roleuser.dto.CreateAdminRoleDTO;
@@ -8,15 +15,8 @@ import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
 import cn.axzo.tyr.client.model.roleuser.req.*;
 import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
 import cn.axzo.tyr.server.service.SaasRoleUserService;
-import com.google.common.collect.Lists;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.List;
 
 /**
  * @author tanjie@axzo.cn
@@ -74,15 +74,13 @@ public class RoleUserController implements TyrSaasRoleUserApi {
         return ApiResult.ok(true);
     }
 
+    /**
+     * cn.axzo.basics.auth.api.SaasRoleApi#batchFindSuperAdmin
+     * @param param
+     * @return
+     */
     @Override
-    public ApiResult> superAdminList(List params) {
-        //todo cn.axzo.basics.auth.api.SaasRoleApi#batchFindSuperAdmin
-        return ApiResult.ok(new ArrayList<>());
-    }
-
-    @Override
-    public ApiResult superAdmin(SuperAdminParam param) {
-        // todo cn.axzo.basics.auth.api.SaasRoleApi#findSuperAdmin
-        return ApiResult.ok(new SuperAdminInfoDTO());
+    public ApiResult> superAdminList(SuperAdminParam param) {
+        return ApiResult.ok(saasRoleUserService.superAdminList(param));
     }
 }
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..92d9a803 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
@@ -1,15 +1,13 @@
 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.RoleUserReq;
-import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
-
 import java.util.List;
 import java.util.Set;
 
+import cn.axzo.tyr.client.model.enums.IdentityType;
+import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
+import cn.axzo.tyr.client.model.roleuser.req.*;
+import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
+
 /**
  * @author tanjie@axzo.cn
  * @date 2023/9/13 15:36
@@ -60,4 +58,18 @@ public interface SaasRoleUserService {
      * @return
      */
     List queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set workspaceIds, Set ouIds);
+
+    /**
+     * 批量获取超管信息
+     * @param param
+     * @return
+     */
+    List superAdminList(SuperAdminParam param);
+
+    /**
+     * 移除管理员
+     * @param params
+     * @return
+     */
+    boolean deleteAdminRole(List params);
 }
\ No newline at end of file
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..47756f0e 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
@@ -1,30 +1,33 @@
 package cn.axzo.tyr.server.service.impl;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import cn.axzo.tyr.client.model.roleuser.req.*;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
 import cn.axzo.basics.common.exception.ServiceException;
 import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
 import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
 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.RoleUserReq;
+import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
 import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
 import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
 import cn.axzo.tyr.server.repository.entity.SaasRole;
 import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
 import cn.axzo.tyr.server.service.SaasRoleUserService;
 import cn.hutool.core.collection.CollectionUtil;
-import com.alibaba.nacos.common.utils.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * 角色
@@ -142,4 +145,33 @@ public class RoleUserService implements SaasRoleUserService {
 	public List queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set workspaceIds, Set ouIds) {
 		return roleUserRelationDao.queryByWorkspaceIdOrOu(identityId, identityType, workspaceIds, ouIds);
 	}
+
+	@Override
+	public List superAdminList(SuperAdminParam param) {
+		if (param.getWorkspaceId() == null || CollectionUtil.isEmpty(param.getOuIds())) {
+			return Collections.emptyList();
+		}
+		List relations = roleUserRelationDao.lambdaQuery()
+				.in(SaasRoleUserRelation::getWorkspaceId, param.getWorkspaceId())
+				.in(SaasRoleUserRelation::getOuId, param.getOuIds())
+				.eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
+		if (CollectionUtils.isEmpty(relations)) {
+			return Collections.emptyList();
+		}
+		return relations.stream().map(r -> {
+			SuperAdminInfoDTO superAdminInfo = new SuperAdminInfoDTO();
+			superAdminInfo.setWorkspaceId(r.getWorkspaceId());
+			superAdminInfo.setOuId(r.getOuId());
+			superAdminInfo.setIdentityId(r.getIdentityId());
+			superAdminInfo.setIdentityType(r.getIdentityType());
+			return superAdminInfo;
+		}).collect(Collectors.toList());
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean deleteAdminRole(List params) {
+
+		return false;
+	}
 }
diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyDetailServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyDetailServiceImpl.java
index 96353fa1..d2140a7c 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyDetailServiceImpl.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyDetailServiceImpl.java
@@ -89,9 +89,9 @@ public class SaasFeatureApplyDetailServiceImpl implements SaasFeatureApplyDetail
     @Transactional(rollbackFor = Exception.class)
     public void updateApplyDetail(PermissionPointApplyDetailUpdateReq req) {
         SaasFeatureApplyDetail detail = BeanMapper.copyBean(req, SaasFeatureApplyDetail.class, (p, s) -> {
-            s.setFitOuTypeBit(p.getFitOuTypeList() == null ? "" : JSON.toJSONString(p.getFitOuTypeList()));
+            s.setFitOuTypeBit(p.getFitOuTypeList() == null ? "[65535]" : JSON.toJSONString(p.getFitOuTypeList()));
             s.setFitOuNodeTypeBit(
-                    p.getFitOuNodeTypeList() == null ? "" : JSON.toJSONString(p.getFitOuNodeTypeList()));
+                    p.getFitOuNodeTypeList() == null ? "[65535]" : JSON.toJSONString(p.getFitOuNodeTypeList()));
         });
         this.saveOrUpdate(Lists.newArrayList(detail));
     }
diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyServiceImpl.java
index 77121a73..52cf7340 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyServiceImpl.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureApplyServiceImpl.java
@@ -5,6 +5,7 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import cn.axzo.tyr.client.model.enums.FeatureDataType;
+import com.google.common.collect.Lists;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.BooleanUtils;
@@ -423,9 +424,9 @@ public class SaasFeatureApplyServiceImpl implements SaasFeatureApplyService {
             detail.setSort(point.getSort());
             detail.setTerminal(point.getTerminal());
             detail.setFeatureType(point.getFeatureType());
-            detail.setFitOuTypeBit(point.getFitOuTypeList() == null ? "" : JSON.toJSONString(point.getFitOuTypeList()));
+            detail.setFitOuTypeBit(point.getFitOuTypeList() == null ? "[65535]" : JSON.toJSONString(point.getFitOuTypeList()));
             detail.setFitOuNodeTypeBit(
-                point.getFitOuNodeTypeList() == null ? "" : JSON.toJSONString(point.getFitOuNodeTypeList()));
+                point.getFitOuNodeTypeList() == null ? "[65535]" : JSON.toJSONString(point.getFitOuNodeTypeList()));
             detail.setDelegatedType(point.getDelegatedType());
             detail.setCreateBy(createBy);
             detail.setCreateAt(now);

From b05cc3a128da079a33659c440c04576668ebac65 Mon Sep 17 00:00:00 2001
From: yangsong 
Date: Tue, 17 Oct 2023 19:22:29 +0800
Subject: [PATCH 3/7] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=81=E7=A7=BB?=
 =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E7=AE=A1=E7=90=86=E5=91=98=E8=A7=92?=
 =?UTF-8?q?=E8=89=B2=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../cn/axzo/tyr/server/service/SaasRoleUserService.java     | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

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 0c2c5817..7ace7776 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
@@ -5,11 +5,7 @@ import java.util.Set;
 
 import cn.axzo.tyr.client.model.enums.IdentityType;
 import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
-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.RoleUserReq;
+import cn.axzo.tyr.client.model.roleuser.req.*;
 import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
 
 /**

From a1b584c1efcfaf28fd54dc3677e2adb402d5515d Mon Sep 17 00:00:00 2001
From: yangsong 
Date: Tue, 17 Oct 2023 19:23:18 +0800
Subject: [PATCH 4/7] =?UTF-8?q?url=E6=B7=BB=E5=8A=A0=E5=89=8D=E7=BC=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

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 a2f817e8..a4bc114a 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
@@ -64,10 +64,10 @@ public interface TyrSaasRoleUserApi {
      * @param param
      * @return
      */
-    @PostMapping("api/saas-role-user/create-agency-admin-role")
+    @PostMapping("/api/saas-role-user/create-agency-admin-role")
     ApiResult createAgencyAdminRole(@RequestBody @Valid CreateAgencyAdminRoleParam param);
 
-    @PostMapping("api/saas-role-user/create-workspace-admin-role")
+    @PostMapping("/api/saas-role-user/create-workspace-admin-role")
     ApiResult createWorkspaceAdminRole(@RequestBody @Valid @NotEmpty List params);
 
     /**
@@ -75,7 +75,7 @@ public interface TyrSaasRoleUserApi {
      * @param params
      * @return
      */
-    @PostMapping("api/saas-role-user/delete-admin-role")
+    @PostMapping("/api/saas-role-user/delete-admin-role")
     ApiResult deleteAdminRole(@RequestBody @Valid @NotEmpty List params);
 
     /**
@@ -83,7 +83,7 @@ public interface TyrSaasRoleUserApi {
      * @param param
      * @return
      */
-    @PostMapping("api/saas-role-user/super-admin-list")
+    @PostMapping("/api/saas-role-user/super-admin-list")
     ApiResult> superAdminList(@RequestBody @Valid SuperAdminParam param);
 
     /**

From 0161d655c03a4cc452f85be80549afa1d9d92420 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=87=91=E6=B5=B7=E6=B4=8B?= 
Date: Wed, 18 Oct 2023 09:36:49 +0800
Subject: [PATCH 5/7] =?UTF-8?q?feat(server):=20=E5=88=A0=E9=99=A4=20delete?=
 =?UTF-8?q?UserRolesOfWorkspace=20=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../tyr/client/feign/TyrSaasRoleUserApi.java  | 10 ---------
 .../roleuser/RoleUserController.java          | 22 ++++++++-----------
 .../server/service/SaasRoleUserService.java   | 15 +++++--------
 .../server/service/impl/RoleUserService.java  | 20 +++--------------
 4 files changed, 18 insertions(+), 49 deletions(-)

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 a4bc114a..d9e090e2 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
@@ -9,7 +9,6 @@ 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;
@@ -85,13 +84,4 @@ public interface TyrSaasRoleUserApi {
      */
     @PostMapping("/api/saas-role-user/super-admin-list")
     ApiResult> superAdminList(@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-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 5de611c8..3266816e 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
@@ -11,9 +11,16 @@ 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.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 cn.axzo.tyr.server.service.SaasRoleUserRelationService;
 import cn.axzo.tyr.server.service.SaasRoleUserService;
 import lombok.RequiredArgsConstructor;
@@ -57,17 +64,6 @@ 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 7ace7776..b14d5ad5 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
@@ -1,5 +1,11 @@
 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.RoleUserReq;
+import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
+
 import java.util.List;
 import java.util.Set;
 
@@ -42,15 +48,6 @@ 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 cf9ffa6a..a817997c 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
@@ -18,6 +18,9 @@ import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
 import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
 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.RoleUserReq;
 import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
 import cn.axzo.tyr.client.model.roleuser.req.*;
 import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
@@ -142,23 +145,6 @@ 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);

From cd4751ebce0582d936efae2acd295c3510305b13 Mon Sep 17 00:00:00 2001
From: TanJ 
Date: Wed, 18 Oct 2023 10:56:58 +0800
Subject: [PATCH 6/7] feat: terminal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

terminal查询逻辑调整
---
 .../java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java    | 2 +-
 .../axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java
index b68e4f8f..dff78ac7 100644
--- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java
+++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/IdentityAuthReq.java
@@ -50,7 +50,7 @@ public class IdentityAuthReq {
     /**
      * {@link TerminalInfo#NT()}
      */
-    private String terminal;
+    private List terminal;
     @Builder.Default
     private Set featureId = new HashSet<>();
     @Builder.Default
diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java
index e22b0cca..307e7045 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java
@@ -424,7 +424,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
                             //通过子级查询父级并打平树型结构
                             List allPermissionPoint = permissionPointService.listTreeNodesFlatChild(PermissionPointTreeQueryReq.builder()
                                     .ids(buttonPermissionPointId)
-                                    .terminalList(StrUtil.isNotBlank(identityAuthReq.getTerminal()) ? Collections.singletonList(identityAuthReq.getTerminal()) : new ArrayList<>())
+                                    .terminalList(identityAuthReq.getTerminal())
                                     .build());
 
                             workspacePermission.getPermissionPoint().addAll(allPermissionPoint.stream()
@@ -461,7 +461,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
                         //通过子级查询父级并平铺菜单
                         List allPermissionPoint = permissionPointService.listTreeNodesFlatChild(PermissionPointTreeQueryReq.builder()
                                 .ids(new HashSet<>(resultHashAuthPointId))
-                                .terminalList(StrUtil.isNotBlank(identityAuthReq.getTerminal()) ? Collections.singletonList(identityAuthReq.getTerminal()) : new ArrayList<>())
+                                .terminalList(identityAuthReq.getTerminal())
                                 .build());
 
                         workspacePermission.getPermissionPoint().addAll(allPermissionPoint.stream()

From f967f9d7367d86d181fc20119b285bd2c774114f Mon Sep 17 00:00:00 2001
From: yangsong 
Date: Wed, 18 Oct 2023 11:13:28 +0800
Subject: [PATCH 7/7] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=A7=92=E8=89=B2?=
 =?UTF-8?q?=E5=88=97=E8=A1=A8bugfix?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../cn/axzo/tyr/server/service/impl/RoleServiceImpl.java   | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java
index 76dc03cb..d1448da1 100644
--- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java
+++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java
@@ -164,7 +164,8 @@ public class RoleServiceImpl implements RoleService {
 		}
 		// 根据工作台类型和单位类型查询角色分组
 		List roleGroup = new ArrayList<>();
-		if (CollectionUtils.isNotEmpty(req.getWorkspaceTypeCode()) || CollectionUtils.isNotEmpty(req.getOuTypeCode())) {
+		// 如果传入了角色id就以传入的角色id为准
+		if (CollectionUtils.isEmpty(req.getIds()) && (CollectionUtils.isNotEmpty(req.getWorkspaceTypeCode()) || CollectionUtils.isNotEmpty(req.getOuTypeCode()))) {
 			roleGroup = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder()
 				.ids(req.getSassRoleGroupIds())
 				.workspaceTypeCode(req.getWorkspaceTypeCode())
@@ -189,8 +190,8 @@ public class RoleServiceImpl implements RoleService {
 			.in(CollectionUtils.isNotEmpty(req.getIds()), BaseEntity::getId, req.getIds())
 			.in(CollectionUtils.isNotEmpty(groupRelation), BaseEntity::getId, groupRelation.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList()))
 			.in(CollectionUtils.isNotEmpty(req.getRoleType()), SaasRole::getRoleType, req.getRoleType())
-			.in(CollectionUtils.isNotEmpty(req.getWorkspaceId()),SaasRole::getWorkspaceId,req.getWorkspaceId())
-			.in(CollectionUtils.isNotEmpty(req.getOuId()),SaasRole::getOwnerOuId,req.getOuId())
+			.in(CollectionUtils.isEmpty(req.getIds()) && CollectionUtils.isNotEmpty(req.getWorkspaceId()),SaasRole::getWorkspaceId,req.getWorkspaceId())
+			.in(CollectionUtils.isEmpty(req.getIds()) && CollectionUtils.isNotEmpty(req.getOuId()),SaasRole::getOwnerOuId,req.getOuId())
 			.orderByDesc(BaseEntity::getId)
 			.list();
 		return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(),req.getWorkspaceId(),req.getOuId(),req.getIncludePermissionGroup());