Skip to content

Commit 3bbbdee

Browse files
authored
feat:마이페이지 수정, 조회 (#69)
1 parent 9dfa0e8 commit 3bbbdee

File tree

9 files changed

+397
-4
lines changed

9 files changed

+397
-4
lines changed

back/src/main/java/com/back/domain/member/member/controller/MemberController.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.back.domain.member.member.controller;
22

3-
import com.back.domain.member.member.dto.LoginRequest;
4-
import com.back.domain.member.member.dto.MenteeSignupRequest;
5-
import com.back.domain.member.member.dto.MentorVerificationRequest;
6-
import com.back.domain.member.member.dto.MentorSignupVerifyRequest;
3+
import com.back.domain.member.member.dto.*;
74
import com.back.domain.member.member.entity.Member;
85
import com.back.domain.member.member.service.MemberService;
96
import com.back.global.rq.Rq;
@@ -113,4 +110,36 @@ public RsData<Void> deleteMember() {
113110

114111
return new RsData<>("200-7", "회원 탈퇴가 완료되었습니다.");
115112
}
113+
114+
@GetMapping("/me/mentee")
115+
@Operation(summary = "멘티 마이페이지 조회")
116+
public RsData<MenteeMyPageResponse> getMenteeMyPage() {
117+
Member currentUser = rq.getActor();
118+
MenteeMyPageResponse response = memberService.getMenteeMyPage(currentUser);
119+
return new RsData<>("200-9", "멘티 정보 조회 성공", response);
120+
}
121+
122+
@PutMapping("/me/mentee")
123+
@Operation(summary = "멘티 정보 수정")
124+
public RsData<Void> updateMentee(@RequestBody MenteeUpdateRequest request) {
125+
Member currentUser = rq.getActor();
126+
memberService.updateMentee(currentUser, request);
127+
return new RsData<>("200-10", "멘티 정보 수정 성공");
128+
}
129+
130+
@GetMapping("/me/mentor")
131+
@Operation(summary = "멘토 마이페이지 조회")
132+
public RsData<MentorMyPageResponse> getMentorMyPage() {
133+
Member currentUser = rq.getActor();
134+
MentorMyPageResponse response = memberService.getMentorMyPage(currentUser);
135+
return new RsData<>("200-11", "멘토 정보 조회 성공", response);
136+
}
137+
138+
@PutMapping("/me/mentor")
139+
@Operation(summary = "멘토 정보 수정")
140+
public RsData<Void> updateMentor(@RequestBody MentorUpdateRequest request) {
141+
Member currentUser = rq.getActor();
142+
memberService.updateMentor(currentUser, request);
143+
return new RsData<>("200-12", "멘토 정보 수정 성공");
144+
}
116145
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.back.domain.member.member.dto;
2+
3+
import com.back.domain.member.member.entity.Member;
4+
import com.back.domain.member.mentee.entity.Mentee;
5+
6+
public record MenteeMyPageResponse(
7+
Long id,
8+
String email,
9+
String name,
10+
String nickname,
11+
Long jobId
12+
) {
13+
public static MenteeMyPageResponse from(Member member, Mentee mentee) {
14+
return new MenteeMyPageResponse(
15+
member.getId(),
16+
member.getEmail(),
17+
member.getName(),
18+
member.getNickname(),
19+
mentee.getJobId()
20+
);
21+
}
22+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.back.domain.member.member.dto;
2+
3+
public record MenteeUpdateRequest(
4+
String nickname,
5+
String interestedField
6+
) {
7+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.back.domain.member.member.dto;
2+
3+
import com.back.domain.member.member.entity.Member;
4+
import com.back.domain.member.mentor.entity.Mentor;
5+
6+
public record MentorMyPageResponse(
7+
Long id,
8+
String email,
9+
String name,
10+
String nickname,
11+
Long jobId,
12+
Double rate,
13+
Integer careerYears
14+
) {
15+
public static MentorMyPageResponse from(Member member, Mentor mentor) {
16+
return new MentorMyPageResponse(
17+
member.getId(),
18+
member.getEmail(),
19+
member.getName(),
20+
member.getNickname(),
21+
mentor.getJobId(),
22+
mentor.getRate(),
23+
mentor.getCareerYears()
24+
);
25+
}
26+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.back.domain.member.member.dto;
2+
3+
public record MentorUpdateRequest(
4+
String nickname,
5+
String career,
6+
Integer careerYears
7+
) {
8+
}

back/src/main/java/com/back/domain/member/member/entity/Member.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ public enum Role {
3232
MENTOR, MENTEE, ADMIN
3333
}
3434

35+
public void updateNickname(String nickname) {
36+
this.nickname = nickname;
37+
}
38+
3539
public Member(String email, String password, String name, String nickname, Role role) {
3640
this.email = email;
3741
this.password = password;

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

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.back.domain.member.member.service;
22

3+
import com.back.domain.member.member.dto.MenteeMyPageResponse;
4+
import com.back.domain.member.member.dto.MenteeUpdateRequest;
5+
import com.back.domain.member.member.dto.MentorMyPageResponse;
6+
import com.back.domain.member.member.dto.MentorUpdateRequest;
37
import com.back.domain.member.member.entity.Member;
48
import com.back.domain.member.member.repository.MemberRepository;
59
import com.back.domain.member.mentee.entity.Mentee;
@@ -157,4 +161,71 @@ public Member refreshAccessToken(String refreshToken) {
157161
return memberRepository.findByEmail(email)
158162
.orElseThrow(() -> new ServiceException("401-5", "존재하지 않는 사용자입니다."));
159163
}
164+
165+
public MenteeMyPageResponse getMenteeMyPage(Member currentUser) {
166+
Mentee mentee = menteeRepository.findByMemberId(currentUser.getId())
167+
.orElseThrow(() -> new ServiceException("404-2", "멘티 정보를 찾을 수 없습니다."));
168+
169+
return MenteeMyPageResponse.from(currentUser, mentee);
170+
}
171+
172+
@Transactional
173+
public void updateMentee(Member currentUser, MenteeUpdateRequest request) {
174+
// 닉네임 중복 체크 (본인 제외)
175+
if (!currentUser.getNickname().equals(request.nickname())) {
176+
memberRepository.findByNickname(request.nickname()).ifPresent(
177+
member -> {
178+
if (!member.getId().equals(currentUser.getId())) {
179+
throw new ServiceException("400-3", "이미 존재하는 닉네임입니다.");
180+
}
181+
}
182+
);
183+
}
184+
185+
// Member 정보 업데이트 (닉네임)
186+
Member member = memberRepository.findById(currentUser.getId())
187+
.orElseThrow(() -> new ServiceException("404-1", "존재하지 않는 회원입니다."));
188+
189+
member.updateNickname(request.nickname());
190+
memberRepository.save(member);
191+
192+
// TODO: interestedField를 jobId로 매핑하는 로직 필요 (현재는 기존 jobId 유지)
193+
}
194+
195+
public MentorMyPageResponse getMentorMyPage(Member currentUser) {
196+
Mentor mentor = mentorRepository.findByMemberId(currentUser.getId())
197+
.orElseThrow(() -> new ServiceException("404-3", "멘토 정보를 찾을 수 없습니다."));
198+
199+
return MentorMyPageResponse.from(currentUser, mentor);
200+
}
201+
202+
@Transactional
203+
public void updateMentor(Member currentUser, MentorUpdateRequest request) {
204+
// 닉네임 중복 체크 (본인 제외)
205+
if (!currentUser.getNickname().equals(request.nickname())) {
206+
memberRepository.findByNickname(request.nickname()).ifPresent(
207+
member -> {
208+
if (!member.getId().equals(currentUser.getId())) {
209+
throw new ServiceException("400-4", "이미 존재하는 닉네임입니다.");
210+
}
211+
}
212+
);
213+
}
214+
215+
Mentor mentor = mentorRepository.findByMemberId(currentUser.getId())
216+
.orElseThrow(() -> new ServiceException("404-3", "멘토 정보를 찾을 수 없습니다."));
217+
218+
// Member 정보 업데이트 (닉네임)
219+
Member member = memberRepository.findById(currentUser.getId())
220+
.orElseThrow(() -> new ServiceException("404-1", "존재하지 않는 회원입니다."));
221+
222+
member.updateNickname(request.nickname());
223+
memberRepository.save(member);
224+
225+
// Mentor 정보 업데이트 (경력연수)
226+
mentor.updateCareerYears(request.careerYears());
227+
mentorRepository.save(mentor);
228+
229+
// TODO: career를 jobId로 매핑하는 로직 필요 (현재는 기존 jobId 유지)
230+
}
160231
}

back/src/main/java/com/back/domain/member/mentor/entity/Mentor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,8 @@ public Mentor(Member member, Long jobId, Double rate, Integer careerYears) {
3131
this.rate = rate;
3232
this.careerYears = careerYears;
3333
}
34+
35+
public void updateCareerYears(Integer careerYears) {
36+
this.careerYears = careerYears;
37+
}
3438
}

0 commit comments

Comments
 (0)