Skip to content

Commit 2ed663e

Browse files
committed
CLAP-28 Feat: 회원 등록 예외 처리 추가
<footer> - 관련: #2
1 parent 57a1464 commit 2ed663e

File tree

6 files changed

+44
-3
lines changed

6 files changed

+44
-3
lines changed

src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package clap.server.adapter.outbound.persistense;
22

33
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
4+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
45
import clap.server.adapter.outbound.persistense.mapper.MemberPersistenceMapper;
56
import clap.server.adapter.outbound.persistense.repository.member.MemberRepository;
67
import clap.server.application.port.outbound.member.LoadMemberPort;
@@ -23,6 +24,12 @@ public Optional<Member> findById(final Long id) {
2324
return memberEntity.map(memberPersistenceMapper::toDomain);
2425
}
2526

27+
@Override
28+
public Optional<Member> findActiveMemberById(Long id) {
29+
Optional<MemberEntity> memberEntity = memberRepository.findByMemberStatusAndMemberId(MemberStatus.ACTIVE, id);
30+
return memberEntity.map(memberPersistenceMapper::toDomain);
31+
}
32+
2633
@Override
2734
public void save(final Member member) {
2835
MemberEntity memberEntity = memberPersistenceMapper.toEntity(member);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package clap.server.adapter.outbound.persistense.repository.member;
22

33
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
4+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

8+
import java.util.Optional;
9+
710
@Repository
811
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {
12+
Optional<MemberEntity> findByMemberStatusAndMemberId(MemberStatus memberStatus, Long memberId);
913
}

src/main/java/clap/server/application/RegisterMemberService.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
import clap.server.adapter.inbound.web.dto.admin.RegisterMemberRequest;
44
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
5+
import clap.server.application.port.inbound.domain.MemberService;
56
import clap.server.application.port.inbound.management.RegisterMemberUsecase;
67
import clap.server.application.port.outbound.member.CommandMemberPort;
78
import clap.server.application.port.outbound.member.LoadDepartmentPort;
89
import clap.server.application.port.outbound.member.LoadMemberPort;
910
import clap.server.common.annotation.architecture.ApplicationService;
11+
import clap.server.common.exception.ApplicationException;
1012
import clap.server.domain.model.member.Department;
1113
import clap.server.domain.model.member.Member;
1214
import clap.server.domain.model.member.MemberInfo;
15+
import clap.server.exception.DepartmentErrorCode;
1316
import lombok.RequiredArgsConstructor;
1417
import org.springframework.transaction.annotation.Transactional;
1518

@@ -19,15 +22,15 @@
1922
@ApplicationService
2023
@RequiredArgsConstructor
2124
public class RegisterMemberService implements RegisterMemberUsecase {
22-
private final LoadMemberPort loadMemberPort;
25+
private final MemberService memberService;
2326
private final CommandMemberPort commandMemberPort;
2427
private final LoadDepartmentPort loadDepartmentPort;
2528

2629
@Override
2730
@Transactional
2831
public void registerMember(Long adminId, RegisterMemberRequest request) {
29-
Member admin = loadMemberPort.findById(adminId).orElse(null);
30-
Department department = loadDepartmentPort.findById(1l).orElse(null);
32+
Member admin = memberService.findActiveMember(adminId);
33+
Department department = loadDepartmentPort.findById(request.departmentId()).orElseThrow(()-> new ApplicationException(DepartmentErrorCode.DEPARTMENT_NOT_FOUND));
3134
MemberInfo memberInfo = toMemberInfo(request.name(), request.email(), request.nickname(), request.isReviewer(),
3235
department, MemberRole.ROLE_USER, request.departmentRole());
3336
Member member = toMember(memberInfo);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package clap.server.application.port.inbound.domain;
2+
3+
import clap.server.application.port.outbound.member.LoadMemberPort;
4+
import clap.server.common.exception.ApplicationException;
5+
import clap.server.domain.model.member.Member;
6+
import clap.server.exception.MemberErrorCode;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.stereotype.Service;
9+
10+
@Service
11+
@RequiredArgsConstructor
12+
public class MemberService {
13+
private final LoadMemberPort loadMemberPort;
14+
15+
public Member findById(Long memberId) {
16+
return loadMemberPort.findById(memberId).orElseThrow(
17+
()-> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
18+
}
19+
20+
public Member findActiveMember(Long memberId) {
21+
return loadMemberPort.findActiveMemberById(memberId).orElseThrow(
22+
()-> new ApplicationException(MemberErrorCode.ACTIVE_MEMBER_NOT_FOUND));
23+
}
24+
}

src/main/java/clap/server/application/port/outbound/member/LoadMemberPort.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@
66

77
public interface LoadMemberPort {
88
Optional<Member> findById(Long id);
9+
10+
Optional<Member> findActiveMemberById(Long id);
911
}

src/main/java/clap/server/exception/MemberErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@RequiredArgsConstructor
1010
public enum MemberErrorCode implements BaseErrorCode {
1111
MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "MEMBER_001", "회원을 찾을 수 없습니다."),
12+
ACTIVE_MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "MEMBER_002", "활성화 회원을 찾을 수 없습니다."),
1213
;
1314

1415
private final HttpStatus httpStatus;

0 commit comments

Comments
 (0)