Skip to content

Commit 93d5dab

Browse files
authored
Merge pull request #159 from TaskFlow-CLAP/CLAP-166
CLAP-166 feat:회원 삭제 API 구현
2 parents 2fbfb3f + aab1fa5 commit 93d5dab

File tree

5 files changed

+67
-0
lines changed

5 files changed

+67
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package clap.server.adapter.inbound.web.admin;
2+
3+
import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
4+
import clap.server.common.annotation.architecture.WebAdapter;
5+
import io.swagger.v3.oas.annotations.Operation;
6+
import io.swagger.v3.oas.annotations.tags.Tag;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.security.access.annotation.Secured;
9+
import org.springframework.web.bind.annotation.PatchMapping;
10+
import org.springframework.web.bind.annotation.PathVariable;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
13+
@Tag(name = "05. Admin")
14+
@WebAdapter
15+
@RequiredArgsConstructor
16+
@RequestMapping("/api/managements")
17+
public class DeleteMemberController {
18+
private final DeleteMemberUsecase deleteMemberUsecase;
19+
20+
@Operation(summary = "회원 삭제 API")
21+
@Secured("ROLE_ADMIN")
22+
@PatchMapping("/members/{memberId}")
23+
public void deleteMember(@PathVariable Long memberId) {
24+
deleteMemberUsecase.deleteMember(memberId);
25+
}
26+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
public interface DeleteMemberUsecase {
4+
void deleteMember(Long memberId);
5+
}

src/main/java/clap/server/application/port/inbound/domain/MemberService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.application.port.inbound.domain;
22

3+
import clap.server.application.port.outbound.member.CommandMemberPort;
34
import clap.server.application.port.outbound.member.LoadMemberPort;
45
import clap.server.domain.model.member.Member;
56
import clap.server.exception.ApplicationException;
@@ -13,6 +14,8 @@
1314
@RequiredArgsConstructor
1415
public class MemberService {
1516
private final LoadMemberPort loadMemberPort;
17+
private final CommandMemberPort commandMemberPort;
18+
1619

1720
public Member findById(Long memberId) {
1821
return loadMemberPort.findById(memberId).orElseThrow(
@@ -33,4 +36,5 @@ public Member findReviewer(Long memberId) {
3336
public List<Member> findReviewers() {
3437
return loadMemberPort.findReviewers();
3538
}
39+
3640
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package clap.server.application.service.admin;
2+
3+
import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
4+
import clap.server.application.port.inbound.domain.MemberService;
5+
import clap.server.application.port.outbound.member.CommandMemberPort;
6+
import clap.server.application.port.outbound.member.LoadMemberPort;
7+
import clap.server.domain.model.member.Member;
8+
import clap.server.exception.ApplicationException;
9+
import clap.server.exception.code.MemberErrorCode;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.stereotype.Service;
12+
13+
@Service
14+
@RequiredArgsConstructor
15+
public class DeleteMemberService implements DeleteMemberUsecase {
16+
private final LoadMemberPort loadMemberPort; // 조회 작업용 Port
17+
private final CommandMemberPort commandMemberPort; // 데이터 변경 작업용 Port
18+
19+
@Override
20+
public void deleteMember(Long memberId) {
21+
Member member = loadMemberPort.findById(memberId)
22+
.orElseThrow(() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
23+
24+
member.setStatusDeleted();
25+
26+
commandMemberPort.save(member);
27+
}
28+
}

src/main/java/clap/server/domain/model/member/Member.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,8 @@ public String getNickname() {
5656
public boolean isReviewer() {
5757
return this.memberInfo != null && this.memberInfo.isReviewer();
5858
}
59+
60+
public void setStatusDeleted() {
61+
this.status = MemberStatus.DELETED;
62+
}
5963
}

0 commit comments

Comments
 (0)