File tree Expand file tree Collapse file tree 10 files changed +104
-9
lines changed
test/java/clap/server/adapter/inbound/web/admin Expand file tree Collapse file tree 10 files changed +104
-9
lines changed Original file line number Diff line number Diff line change 1+ package clap .server .adapter .inbound .web .dto .member ;
2+
3+ import clap .server .adapter .outbound .persistense .entity .member .constant .MemberRole ;
4+ import io .swagger .v3 .oas .annotations .media .Schema ;
5+
6+ public record MemberProfileResponse (
7+ @ Schema (description = "회원 ID" )
8+ Long memberId ,
9+ @ Schema (description = "회원 이름" )
10+ String memberName ,
11+ @ Schema (description = "회원 닉네임, 로그인에 쓰입니다" )
12+ String nickname ,
13+ @ Schema (description = "회원 프로필 이미지" )
14+ String imageUrl ,
15+ @ Schema (description = "회원 역할" )
16+ MemberRole memberRole
17+ ) {}
Original file line number Diff line number Diff line change 11package clap .server .adapter .inbound .web .member ;
22
3- import clap .server .application .port .inbound .domain .FindManagersUsecase ;
43import clap .server .adapter .inbound .web .dto .admin .FindManagersResponse ;
4+ import clap .server .application .port .inbound .domain .FindManagersUsecase ;
5+ import clap .server .common .annotation .architecture .WebAdapter ;
6+ import io .swagger .v3 .oas .annotations .tags .Tag ;
57import lombok .RequiredArgsConstructor ;
68import org .springframework .web .bind .annotation .GetMapping ;
79import org .springframework .web .bind .annotation .RequestMapping ;
8- import org .springframework .web .bind .annotation .RestController ;
910
1011import java .util .List ;
1112
12- @ RestController
13- @ RequestMapping ("/manager" )
13+
14+ @ Tag (name = "담당자 조회" )
15+ @ WebAdapter
1416@ RequiredArgsConstructor
17+ @ RequestMapping ("/api" )
1518public class ManagerController {
1619
1720 private final FindManagersUsecase findManagersUsecase ;
1821
19- @ GetMapping
22+ @ GetMapping ( "/managers" )
2023 public List <FindManagersResponse > findManagers () {
2124
2225 List <FindManagersResponse > managers = findManagersUsecase .execute ();
Original file line number Diff line number Diff line change 1+ package clap .server .adapter .inbound .web .member ;
2+
3+ import clap .server .adapter .inbound .security .SecurityUserDetails ;
4+ import clap .server .adapter .inbound .web .dto .member .MemberProfileResponse ;
5+ import clap .server .application .port .inbound .member .MemberInfoUsecase ;
6+ import clap .server .common .annotation .architecture .WebAdapter ;
7+ import io .swagger .v3 .oas .annotations .Operation ;
8+ import io .swagger .v3 .oas .annotations .tags .Tag ;
9+ import lombok .RequiredArgsConstructor ;
10+ import org .springframework .http .ResponseEntity ;
11+ import org .springframework .security .core .annotation .AuthenticationPrincipal ;
12+ import org .springframework .web .bind .annotation .GetMapping ;
13+ import org .springframework .web .bind .annotation .RequestMapping ;
14+
15+ @ Tag (name = "회원 정보 조회/수정" )
16+ @ WebAdapter
17+ @ RequiredArgsConstructor
18+ @ RequestMapping ("/api/members" )
19+ public class MemberInfoController {
20+ private final MemberInfoUsecase memberInfoUsecase ;
21+
22+ @ Operation (summary = "회원 프로필을 조회합니다. 활성화된 회원만 조회 가능합니다." )
23+ @ GetMapping ("/profile" )
24+ public ResponseEntity <MemberProfileResponse > getMemberProfile (@ AuthenticationPrincipal SecurityUserDetails userInfo ) {
25+ return ResponseEntity .ok (memberInfoUsecase .getMemberProfile (userInfo .getUserId ()));
26+ }
27+
28+ }
Original file line number Diff line number Diff line change 11package clap .server .adapter .inbound .web .member ;
22
33import clap .server .adapter .inbound .security .SecurityUserDetails ;
4- import clap .server .application .port .inbound .auth .ResetPasswordUsecase ;
4+ import clap .server .application .port .inbound .member .ResetPasswordUsecase ;
55import clap .server .common .annotation .architecture .WebAdapter ;
66import clap .server .common .annotation .validation .password .ValidPassword ;
77import io .swagger .v3 .oas .annotations .Operation ;
Original file line number Diff line number Diff line change 11package clap .server .application .mapper ;
22
3+ import clap .server .adapter .inbound .web .dto .member .MemberProfileResponse ;
34import clap .server .domain .model .member .Member ;
45import clap .server .domain .model .member .MemberInfo ;
56
@@ -13,4 +14,14 @@ public static Member toMember(MemberInfo memberInfo) {
1314 .memberInfo (memberInfo )
1415 .build ();
1516 }
17+
18+ public static MemberProfileResponse toMemberProfileResponse (Member member ) {
19+ return new MemberProfileResponse (
20+ member .getMemberId (),
21+ member .getMemberInfo ().getName (),
22+ member .getMemberInfo ().getNickname (),
23+ member .getImageUrl (),
24+ member .getMemberInfo ().getRole ()
25+ );
26+ }
1627}
Original file line number Diff line number Diff line change 1+ package clap .server .application .port .inbound .member ;
2+
3+ import clap .server .adapter .inbound .web .dto .member .MemberProfileResponse ;
4+
5+ public interface MemberInfoUsecase {
6+ MemberProfileResponse getMemberProfile (Long memberId );
7+ }
Original file line number Diff line number Diff line change 1- package clap .server .application .port .inbound .auth ;
1+ package clap .server .application .port .inbound .member ;
22
33public interface ResetPasswordUsecase {
44 void resetPassword (Long memberId , String password );
Original file line number Diff line number Diff line change 1+ package clap .server .application .service .member ;
2+
3+ import clap .server .adapter .inbound .web .dto .member .MemberProfileResponse ;
4+ import clap .server .application .port .inbound .domain .MemberService ;
5+ import clap .server .application .port .inbound .member .MemberInfoUsecase ;
6+ import clap .server .application .port .outbound .member .CommandMemberPort ;
7+ import clap .server .application .port .outbound .member .LoadMemberPort ;
8+ import clap .server .common .annotation .architecture .ApplicationService ;
9+ import clap .server .domain .model .member .Member ;
10+ import lombok .RequiredArgsConstructor ;
11+ import org .springframework .transaction .annotation .Transactional ;
12+
13+ import static clap .server .application .mapper .MemberMapper .toMemberProfileResponse ;
14+
15+ @ ApplicationService
16+ @ RequiredArgsConstructor
17+ class MemberInfoService implements MemberInfoUsecase {
18+ private final MemberService memberService ;
19+ private final LoadMemberPort loadMemberPort ;
20+ private final CommandMemberPort commandMemberPort ;
21+
22+
23+ @ Override
24+ @ Transactional (readOnly = true )
25+ public MemberProfileResponse getMemberProfile (Long memberId ) {
26+ Member member = memberService .findActiveMember (memberId );
27+ return toMemberProfileResponse (member );
28+ }
29+ }
Original file line number Diff line number Diff line change 11package clap .server .application .service .member ;
22
3- import clap .server .application .port .inbound .auth .ResetPasswordUsecase ;
3+ import clap .server .application .port .inbound .member .ResetPasswordUsecase ;
44import clap .server .application .port .inbound .domain .MemberService ;
55import clap .server .application .port .outbound .member .CommandMemberPort ;
66import clap .server .common .annotation .architecture .ApplicationService ;
Original file line number Diff line number Diff line change @@ -196,7 +196,7 @@ public void setupTestData() {
196196 @ Test
197197 @ WithMockUser (username = "admin" , roles = "ADMIN" )
198198 public void testFindManagers () throws Exception {
199- mockMvc .perform (get ("/manager " ))
199+ mockMvc .perform (get ("/api/managers " ))
200200 .andExpect (status ().isOk ())
201201 .andExpect (jsonPath ("$[0].nickname" ).value ("Manager1" ))
202202 .andExpect (jsonPath ("$[0].imageUrl" ).value ("http://example.com/manager1.jpg" ))
You can’t perform that action at this time.
0 commit comments