diff --git a/src/main/java/com/alist/api/modules/admin/member/dto/AdminMemberDeleteDto.java b/src/main/java/com/alist/api/modules/admin/member/dto/AdminMemberDeleteDto.java index 8ec7c14..a6bb24d 100644 --- a/src/main/java/com/alist/api/modules/admin/member/dto/AdminMemberDeleteDto.java +++ b/src/main/java/com/alist/api/modules/admin/member/dto/AdminMemberDeleteDto.java @@ -3,8 +3,10 @@ package com.alist.api.modules.admin.member.dto; import lombok.Getter; import lombok.Setter; +import java.util.List; + @Getter @Setter public class AdminMemberDeleteDto { - private Integer userIdx; + private List userIdxList; } diff --git a/src/main/java/com/alist/api/modules/admin/member/form/AdminMemberDeleteForm.java b/src/main/java/com/alist/api/modules/admin/member/form/AdminMemberDeleteForm.java index e7cef3e..282cf3b 100644 --- a/src/main/java/com/alist/api/modules/admin/member/form/AdminMemberDeleteForm.java +++ b/src/main/java/com/alist/api/modules/admin/member/form/AdminMemberDeleteForm.java @@ -2,21 +2,31 @@ package com.alist.api.modules.admin.member.form; import com.alist.api.modules.admin.member.dto.AdminMemberDeleteDto; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; import lombok.Getter; import lombok.Setter; +import java.util.Arrays; + @Schema(description = "관리자 회원 계정 삭제 요청 폼") @Getter @Setter public class AdminMemberDeleteForm { - @Schema(description = "회원 PK", example = "15", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "회원 PK는 필수입니다.") - private Integer userIdx; + @Schema(description = "회원 PK 목록. 콤마 구분 문자열", example = "1,2,3", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "삭제할 회원 PK를 입력해주세요.") + @Pattern(regexp = "^\\d+(,\\d+)*$", message = "회원 PK 목록은 1,2,3 형식으로 입력해주세요.") + private String userIdxList; public AdminMemberDeleteDto toDto() { AdminMemberDeleteDto adminMemberDeleteDto = new AdminMemberDeleteDto(); - adminMemberDeleteDto.setUserIdx(userIdx); + adminMemberDeleteDto.setUserIdxList( + Arrays.stream(userIdxList.split(",")) + .map(String::trim) + .map(Integer::valueOf) + .distinct() + .toList() + ); return adminMemberDeleteDto; } } diff --git a/src/main/java/com/alist/api/modules/admin/member/service/AdminMemberService.java b/src/main/java/com/alist/api/modules/admin/member/service/AdminMemberService.java index 48ee939..747a53e 100644 --- a/src/main/java/com/alist/api/modules/admin/member/service/AdminMemberService.java +++ b/src/main/java/com/alist/api/modules/admin/member/service/AdminMemberService.java @@ -93,6 +93,8 @@ public class AdminMemberService { AdminMemberDeleteVo adminMemberDeleteVo = new AdminMemberDeleteVo(); adminMemberDeleteVo.setProcessed(updateCount > 0); + adminMemberDeleteVo.setRequestedCount(adminMemberDeleteDto.getUserIdxList().size()); + adminMemberDeleteVo.setDeletedCount(updateCount); return adminMemberDeleteVo; } } diff --git a/src/main/java/com/alist/api/modules/admin/member/vo/AdminMemberDeleteVo.java b/src/main/java/com/alist/api/modules/admin/member/vo/AdminMemberDeleteVo.java index a1c423f..9a013fb 100644 --- a/src/main/java/com/alist/api/modules/admin/member/vo/AdminMemberDeleteVo.java +++ b/src/main/java/com/alist/api/modules/admin/member/vo/AdminMemberDeleteVo.java @@ -10,4 +10,10 @@ import lombok.Setter; public class AdminMemberDeleteVo { @Schema(description = "회원 계정 삭제 여부", example = "true") private boolean processed; + + @Schema(description = "삭제 요청 회원 수", example = "3") + private int requestedCount; + + @Schema(description = "실제 삭제 처리 회원 수", example = "3") + private int deletedCount; } diff --git a/src/main/resources/mapper/admin/member/AdminMemberMapper.xml b/src/main/resources/mapper/admin/member/AdminMemberMapper.xml index 429bb92..f2c9ade 100644 --- a/src/main/resources/mapper/admin/member/AdminMemberMapper.xml +++ b/src/main/resources/mapper/admin/member/AdminMemberMapper.xml @@ -131,8 +131,11 @@ /*AdminMemberMapper.updateAdminMemberDelete*/ UPDATE ALISTLMS.test_user SET del_yn = 0 - , update_at = now() - WHERE user_idx = #{userIdx} + , update_at = now() + WHERE user_idx IN + + #{userIdx} + AND del_yn = 1 \ No newline at end of file