xzc 1 週間 前
コミット
d6256da723

+ 4 - 3
tz-module-system/tz-module-system-biz/src/main/java/cn/start/tz/module/system/controller/admin/user/vo/user/UserAssignRoleBatchReqVO.java

@@ -2,7 +2,6 @@ package cn.start.tz.module.system.controller.admin.user.vo.user;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 import java.util.List;
@@ -15,7 +14,9 @@ public class UserAssignRoleBatchReqVO {
     @NotBlank(message = "角色ID不能为空")
     private String roleId;
 
-    @Schema(description = "用户ID数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[\"1\",\"2\"]")
-    @NotEmpty(message = "用户ID数组不能为空")
+    @Schema(description = "需要分配角色的用户ID数组", example = "[\"1\",\"2\"]")
     private List<String> userIds;
+
+    @Schema(description = "需要取消角色的用户ID数组", example = "[\"3\",\"4\"]")
+    private List<String> removeUserIds;
 }

+ 15 - 5
tz-module-system/tz-module-system-biz/src/main/java/cn/start/tz/module/system/service/user/AdminUserServiceImpl.java

@@ -706,11 +706,21 @@ public class AdminUserServiceImpl implements AdminUserService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void assignRoleBatch(UserAssignRoleBatchReqVO reqVO) {
-        // 遍历用户列表,为每个用户追加该角色(保留已有角色)
-        for (String userId : reqVO.getUserIds()) {
-            Set<String> existingRoleIds = permissionService.getUserRoleIdListByUserId(userId);
-            existingRoleIds.add(reqVO.getRoleId());
-            permissionService.assignUserRole(userId, existingRoleIds);
+        // 遍历需要分配角色的用户列表,为每个用户追加该角色(保留已有角色)
+        if (CollUtil.isNotEmpty(reqVO.getUserIds())) {
+            for (String userId : reqVO.getUserIds()) {
+                Set<String> existingRoleIds = permissionService.getUserRoleIdListByUserId(userId);
+                existingRoleIds.add(reqVO.getRoleId());
+                permissionService.assignUserRole(userId, existingRoleIds);
+            }
+        }
+        // 遍历需要取消角色的用户列表,为每个用户移除该角色
+        if (CollUtil.isNotEmpty(reqVO.getRemoveUserIds())) {
+            for (String userId : reqVO.getRemoveUserIds()) {
+                Set<String> existingRoleIds = permissionService.getUserRoleIdListByUserId(userId);
+                existingRoleIds.remove(reqVO.getRoleId());
+                permissionService.assignUserRole(userId, existingRoleIds);
+            }
         }
     }