Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Tag(name = "05. Admin")
@WebAdapter
@RequiredArgsConstructor
@RequestMapping("/api/managements")
public class DeleteMemberController {
private final DeleteMemberUsecase deleteMemberUsecase;

@Operation(summary = "회원 삭제 API")
@Secured("ROLE_ADMIN")
@PatchMapping("/members/{memberId}")
public void deleteMember(@PathVariable Long memberId) {
deleteMemberUsecase.deleteMember(memberId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package clap.server.application.port.inbound.admin;

public interface DeleteMemberUsecase {
void deleteMember(Long memberId);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package clap.server.application.port.inbound.domain;

import clap.server.application.port.outbound.member.CommandMemberPort;
import clap.server.application.port.outbound.member.LoadMemberPort;
import clap.server.domain.model.member.Member;
import clap.server.exception.ApplicationException;
Expand All @@ -13,6 +14,8 @@
@RequiredArgsConstructor
public class MemberService {
private final LoadMemberPort loadMemberPort;
private final CommandMemberPort commandMemberPort;


public Member findById(Long memberId) {
return loadMemberPort.findById(memberId).orElseThrow(
Expand All @@ -27,4 +30,5 @@ public Member findActiveMember(Long memberId) {
public List<Member> findReviewers() {
return loadMemberPort.findReviewers();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package clap.server.application.service.admin;

import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
import clap.server.application.port.inbound.domain.MemberService;
import clap.server.application.port.outbound.member.CommandMemberPort;
import clap.server.application.port.outbound.member.LoadMemberPort;
import clap.server.domain.model.member.Member;
import clap.server.exception.ApplicationException;
import clap.server.exception.code.MemberErrorCode;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class DeleteMemberService implements DeleteMemberUsecase {
private final LoadMemberPort loadMemberPort; // 조회 작업용 Port
private final CommandMemberPort commandMemberPort; // 데이터 변경 작업용 Port

@Override
public void deleteMember(Long memberId) {
Member member = loadMemberPort.findById(memberId)
.orElseThrow(() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));

member.setStatusDeleted();

commandMemberPort.save(member);
}
}
4 changes: 4 additions & 0 deletions src/main/java/clap/server/domain/model/member/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,8 @@ public String getNickname() {
public boolean isReviewer() {
return this.memberInfo != null && this.memberInfo.isReviewer();
}

public void setStatusDeleted() {
this.status = MemberStatus.DELETED;
}
}