Skip to content

Commit 1055182

Browse files
authored
멤버 아이디로 멤버 정보 불러오기(판매자 정보) 기능 구현 (#131)
1 parent a23b781 commit 1055182

File tree

5 files changed

+60
-34
lines changed

5 files changed

+60
-34
lines changed

src/main/java/com/backend/domain/member/controller/ApiV1MemberController.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,11 @@ public ResponseEntity<RsData<MemberMyInfoResponseDto>> myInfoModify(@RequestPart
9191
return ResponseEntity.status(myInfoModifyResponse.statusCode()).body(myInfoModifyResponse);
9292
}
9393

94-
@Operation(summary = "판매자 정보 Mock API", description = "판매자 정보 확인")
94+
@Operation(summary = "멤버 정보 조회", description = "특정 멤버의 정보를 조회합니다.")
9595
@GetMapping("/members/{id}")
9696
public ResponseEntity<RsData<MemberInfoResponseDto>> memberInfo(@PathVariable Long id) {
97-
return ResponseEntity.ok(new RsData<>("200-1", "판매자 정보가 조회되었습니다.",
98-
new MemberInfoResponseDto(2L, "[email protected]", "test", "010-1111-1111",
99-
"https://example.com/profile.jpg", 50, LocalDateTime.now())
100-
));
97+
MemberInfoResponseDto memberInfo = memberService.getMemberInfo(id);
98+
return ResponseEntity.ok(new RsData<>("200", "조회 성공", memberInfo));
10199
}
102100

103101
@Operation(summary = "회원탈퇴 Mock API", description = "회원탈퇴 확인")
Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,21 @@
11
package com.backend.domain.member.dto;
22

3-
import io.swagger.v3.oas.annotations.media.Schema;
4-
5-
import java.time.LocalDateTime;
6-
7-
public record MemberInfoResponseDto(
8-
@Schema(description = "DB 아이디", example = "1")
9-
Long id,
10-
11-
@Schema(description = "이메일", example = "[email protected]")
12-
String email,
13-
14-
@Schema(description = "닉네임", example = "test")
15-
String nickname,
16-
17-
@Schema(description = "전화번호", example = "010-0000-0000")
18-
String phone,
19-
20-
@Schema(description = "프로필 이미지", example = "https://example.com/profile.jpg")
21-
String profileImage,
22-
23-
@Schema(description = "신뢰 포인트", example = "50")
24-
Integer creditScore,
25-
26-
@Schema(description = "생성일", example = "2022-01-01T00:00:00")
27-
LocalDateTime createDate
28-
) {
29-
}
3+
import com.backend.domain.member.entity.Member;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
7+
@Getter
8+
@NoArgsConstructor
9+
public class MemberInfoResponseDto {
10+
private Long id;
11+
private String nickname;
12+
private String profileImageUrl;
13+
private int creditScore;
14+
15+
public MemberInfoResponseDto(Member member) {
16+
this.id = member.getId();
17+
this.nickname = member.getNickname();
18+
this.profileImageUrl = member.getProfileImageUrl();
19+
this.creditScore = member.getCreditScore();
20+
}
21+
}

src/main/java/com/backend/domain/member/service/MemberService.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.backend.domain.member.dto.MemberMyInfoResponseDto;
77
import com.backend.domain.member.dto.MemberSignUpRequestDto;
88
import com.backend.domain.member.dto.MemberSignUpResponseDto;
9+
import com.backend.domain.member.dto.MemberInfoResponseDto;
910
import com.backend.domain.member.entity.Member;
1011
import com.backend.domain.member.repository.MemberRepository;
1112
import com.backend.domain.product.service.FileService;
@@ -165,4 +166,11 @@ public Optional<Member> findByNickname(String nickname) {
165166
public Optional<Member> findById(Long memberId) {
166167
return memberRepository.findById(memberId);
167168
}
169+
170+
@Transactional(readOnly = true)
171+
public MemberInfoResponseDto getMemberInfo(Long memberId) {
172+
Member member = findById(memberId)
173+
.orElseThrow(() -> new ServiceException("404", "존재하지 않는 유저입니다."));
174+
return new MemberInfoResponseDto(member);
175+
}
168176
}

src/main/java/com/backend/global/security/SecurityConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
4242
"/api/test/**", "/bid-test.html", "/websocket-test.html").permitAll()
4343
.requestMatchers(HttpMethod.GET,
4444
"/api/*/products", "/api/*/products/{productId:\\d+}",
45-
"/api/*/products/members/{memberId:\\d+}").permitAll()
45+
"/api/*/products/members/{memberId:\\d+}", "/api/v1/members/{memberId:\\d+}").permitAll()
4646
.requestMatchers("/api/*/test-data/**").permitAll()
4747

4848
.anyRequest().authenticated()

src/test/java/com/backend/domain/member/controller/ApiV1MemberControllerTest.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@
3333
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
3434
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
3535

36-
@SpringBootTest
36+
@SpringBootTest(properties = {
37+
"cloud.aws.credentials.access-key=",
38+
"cloud.aws.credentials.secret-key=",
39+
"pg.toss.secretKey=test_sk_1234567890"
40+
})
3741
@AutoConfigureMockMvc
3842
@Transactional
3943
@ActiveProfiles("test")
@@ -421,4 +425,28 @@ void t11() throws Exception {
421425
.andExpect(jsonPath("$.data.address").value("After Address"))
422426
.andExpect(jsonPath("$.data.profileImageUrl").exists());
423427
}
428+
429+
@Test
430+
@DisplayName("멤버 정보 조회 성공")
431+
void t12() throws Exception {
432+
// given
433+
// 회원가입을 통해 테스트할 멤버 생성
434+
MemberSignUpRequestDto signUpDto = new MemberSignUpRequestDto(
435+
"[email protected]", "password123", "testUser12", "01012345678", "Test Address");
436+
ResultActions signUpResult = mockMvc.perform(post("/api/v1/auth/signup")
437+
.contentType(MediaType.APPLICATION_JSON)
438+
.content(objectMapper.writeValueAsString(signUpDto)));
439+
440+
String responseBody = signUpResult.andReturn().getResponse().getContentAsString();
441+
long memberId = objectMapper.readTree(responseBody).get("data").get("memberId").asLong();
442+
443+
// when & then
444+
mockMvc.perform(get("/api/v1/members/{memberId}", memberId))
445+
.andDo(print())
446+
.andExpect(status().isOk())
447+
.andExpect(jsonPath("$.resultCode").value("200"))
448+
.andExpect(jsonPath("$.msg").value("조회 성공"))
449+
.andExpect(jsonPath("$.data.id").value(memberId))
450+
.andExpect(jsonPath("$.data.nickname").value("testUser12"));
451+
}
424452
}

0 commit comments

Comments
 (0)