Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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);
}
Comment thread
joowojr marked this conversation as resolved.
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,10 @@ public Member findActiveMember(Long memberId) {
public List<Member> findReviewers() {
return loadMemberPort.findReviewers();
}

public void deleteMember(Long memberId) {
Member member = findById(memberId);
member.setStatusDeleted();
commandMemberPort.save(member);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package clap.server.application.service.admin;

import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
import clap.server.application.port.inbound.domain.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class DeleteMemberService implements DeleteMemberUsecase {
private final MemberService memberService;

@Override
public void deleteMember(Long memberId) {
memberService.deleteMember(memberId);
}
}

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;
}
}