feat: 관리자 회원 관리 API (/api/admin/members)

목록/역할 변경/상태 변경/삭제. 본인 계정 변경·삭제 차단.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-05-31 19:01:41 +09:00
co-authored by Claude Opus 4.8
parent eb6b9830ce
commit 8eb2129f5e
7 changed files with 212 additions and 0 deletions
@@ -0,0 +1,37 @@
package com.sb.web.auth.dto;
import com.sb.web.auth.domain.Member;
import lombok.Builder;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 관리자용 회원 정보 응답 (비밀번호 제외).
*/
@Data
@Builder
public class MemberAdminResponse {
private Long id;
private String loginId;
private String name;
private String email;
private String role; // USER / ADMIN
private String status; // ACTIVE / SUSPENDED / WITHDRAWN
private String provider; // LOCAL / 소셜
private LocalDateTime createdAt;
public static MemberAdminResponse from(Member m) {
return MemberAdminResponse.builder()
.id(m.getId())
.loginId(m.getLoginId())
.name(m.getName())
.email(m.getEmail())
.role(m.getRole())
.status(m.getStatus())
.provider(m.getProvider())
.createdAt(m.getCreatedAt())
.build();
}
}
@@ -4,6 +4,8 @@ import com.sb.web.auth.domain.Member;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 회원 MyBatis 매퍼. SQL 은 resources/mapper/MemberMapper.xml 에 정의.
*/
@@ -12,6 +14,9 @@ public interface MemberMapper {
Member findById(@Param("id") Long id);
/** 관리자: 전체 회원 목록 */
List<Member> findAll();
Member findByLoginId(@Param("loginId") String loginId);
Member findByProvider(@Param("provider") String provider,
@@ -22,4 +27,10 @@ public interface MemberMapper {
int insert(Member member);
int updatePassword(@Param("id") Long id, @Param("password") String password);
int updateRole(@Param("id") Long id, @Param("role") String role);
int updateStatus(@Param("id") Long id, @Param("status") String status);
int deleteById(@Param("id") Long id);
}