Sfoglia il codice sorgente

修复删除接口

tsurumure 8 mesi fa
parent
commit
01a903c9a9

+ 5 - 4
src/main/java/com/backendsys/modules/system/controller/SysUserController.java

@@ -157,12 +157,13 @@ public class SysUserController {
     @DeleteMapping("/api/system/user/deleteUser")
     public Result deleteUser(@Validated(SysUserDTO.Delete.class) @RequestBody SysUserDTO sysUserDTO) {
 
+        Long user_id = sysUserDTO.getUser_id();
         List<Long> user_ids = sysUserDTO.getUser_ids();
-        Long my_user_id = SecurityUtil.getUserId();
-        if (user_ids.contains(my_user_id)) throw new CustException("不能删除自己的账号");
-        if (user_ids.contains(1L)) throw new CustException("不能删除超管账号");
+        if (user_id == null && (user_ids == null || user_ids.size() == 0)) throw new CustException("user_id 或 user_ids 必填");
+        if (user_ids != null && user_ids.contains(SecurityUtil.getUserId()) && !user_id.equals(SecurityUtil.getUserId())) throw new CustException("不能删除自己的账号");
+        if (user_ids != null && user_ids.contains(1L) && !user_id.equals(1L)) throw new CustException("不能删除超管账号");
 
-        return Result.success().put("data", sysUserV2Service.deleteUser(user_ids));
+        return Result.success().put("data", sysUserV2Service.deleteUser(sysUserDTO));
     }
 
     @Operation(summary = "踢出系统用户")

+ 0 - 3
src/main/java/com/backendsys/modules/system/entity/SysUserDTO.java

@@ -42,9 +42,6 @@ public class SysUserDTO {
    */
   @NotNull(message="user_id 不能为空", groups = { Detail.class, Kick.class, Audit.class })
   private Long user_id;
-
-  @NotNull(message="user_ids 不能为空", groups = { Delete.class })
-  @Size(min = 1, message = "user_ids 至少包含一个值", groups = { Delete.class })
   private List<Long> user_ids;
 
   

+ 1 - 1
src/main/java/com/backendsys/modules/system/service/SysUserV2Service.java

@@ -26,7 +26,7 @@ public interface SysUserV2Service extends IService<SysUser> {
     // 编辑系统用户密码
     Map<String, Object> updateUserPassword(SysUserDTO sysUserDTO);
     // 删除系统用户
-    Map<String, Object> deleteUser(List<Long> user_ids);
+    Map<String, Object> deleteUser(SysUserDTO sysUserDTO);
     // 踢出系统用户
     Map<String, Object> kickUser(Long user_id);
 

+ 19 - 5
src/main/java/com/backendsys/modules/system/service/impl/SysUserV2ServiceImpl.java

@@ -216,15 +216,29 @@ public class SysUserV2ServiceImpl extends ServiceImpl<SysUserDao, SysUser> imple
      */
     @Override
     @Transactional
-    public Map<String, Object> deleteUser(List<Long> user_ids) {
+    public Map<String, Object> deleteUser(SysUserDTO sysUserDTO) {
         RLock lock = redissonClient.getLock("deleteUser");
         try { lock.tryLock(3, TimeUnit.SECONDS);
 
-            sysUserDao.delete(new QueryWrapper<SysUser>().in("id", user_ids));
-            sysUserInfoDao.delete(new QueryWrapper<SysUserInfo>().in("user_id", user_ids));
-            sysUserRoleRelationDao.delete(new QueryWrapper<SysUserRoleRelation>().in("user_id", user_ids));
+            // 单个删除
+            Long user_id = sysUserDTO.getUser_id();
+            if (user_id != null) {
+                sysUserDao.deleteById(user_id);
+                sysUserInfoDao.delete(new QueryWrapper<SysUserInfo>().eq("user_id", user_id));
+                sysUserRoleRelationDao.delete(new QueryWrapper<SysUserRoleRelation>().eq("user_id", user_id));
+                return Map.of("user_id", user_id);
+            }
+
+            // 批量删除
+            List<Long> user_ids = sysUserDTO.getUser_ids();
+            if (user_ids != null && user_ids.size() > 0) {
+                sysUserDao.delete(new QueryWrapper<SysUser>().in("id", user_ids));
+                sysUserInfoDao.delete(new QueryWrapper<SysUserInfo>().in("user_id", user_ids));
+                sysUserRoleRelationDao.delete(new QueryWrapper<SysUserRoleRelation>().in("user_id", user_ids));
+                return Map.of("user_ids", user_ids);
+            }
 
-            return Map.of("user_ids", user_ids);
+            return null;
 
         } catch (InterruptedException e) { throw new RuntimeException(e);
         } finally { lock.unlock(); }