Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.back.domain.member.member.controller;

import com.back.domain.member.member.dto.LoginRequest;
import com.back.domain.member.member.dto.MenteeSignupRequest;
import com.back.domain.member.member.dto.MentorVerificationRequest;
import com.back.domain.member.member.dto.MentorSignupVerifyRequest;
import com.back.domain.member.member.dto.*;
import com.back.domain.member.member.entity.Member;
import com.back.domain.member.member.service.MemberService;
import com.back.global.rq.Rq;
Expand Down Expand Up @@ -113,4 +110,36 @@ public RsData<Void> deleteMember() {

return new RsData<>("200-7", "ํšŒ์› ํƒˆํ‡ด๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
}

@GetMapping("/me/mentee")
@Operation(summary = "๋ฉ˜ํ‹ฐ ๋งˆ์ดํŽ˜์ด์ง€ ์กฐํšŒ")
public RsData<MenteeMyPageResponse> getMenteeMyPage() {
Member currentUser = rq.getActor();
MenteeMyPageResponse response = memberService.getMenteeMyPage(currentUser);
return new RsData<>("200-9", "๋ฉ˜ํ‹ฐ ์ •๋ณด ์กฐํšŒ ์„ฑ๊ณต", response);
}

@PutMapping("/me/mentee")
@Operation(summary = "๋ฉ˜ํ‹ฐ ์ •๋ณด ์ˆ˜์ •")
public RsData<Void> updateMentee(@RequestBody MenteeUpdateRequest request) {
Member currentUser = rq.getActor();
memberService.updateMentee(currentUser, request);
return new RsData<>("200-10", "๋ฉ˜ํ‹ฐ ์ •๋ณด ์ˆ˜์ • ์„ฑ๊ณต");
}

@GetMapping("/me/mentor")
@Operation(summary = "๋ฉ˜ํ†  ๋งˆ์ดํŽ˜์ด์ง€ ์กฐํšŒ")
public RsData<MentorMyPageResponse> getMentorMyPage() {
Member currentUser = rq.getActor();
MentorMyPageResponse response = memberService.getMentorMyPage(currentUser);
return new RsData<>("200-11", "๋ฉ˜ํ†  ์ •๋ณด ์กฐํšŒ ์„ฑ๊ณต", response);
}

@PutMapping("/me/mentor")
@Operation(summary = "๋ฉ˜ํ†  ์ •๋ณด ์ˆ˜์ •")
public RsData<Void> updateMentor(@RequestBody MentorUpdateRequest request) {
Member currentUser = rq.getActor();
memberService.updateMentor(currentUser, request);
return new RsData<>("200-12", "๋ฉ˜ํ†  ์ •๋ณด ์ˆ˜์ • ์„ฑ๊ณต");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.back.domain.member.member.dto;

import com.back.domain.member.member.entity.Member;
import com.back.domain.member.mentee.entity.Mentee;

public record MenteeMyPageResponse(
Long id,
String email,
String name,
String nickname,
Long jobId
) {
public static MenteeMyPageResponse from(Member member, Mentee mentee) {
return new MenteeMyPageResponse(
member.getId(),
member.getEmail(),
member.getName(),
member.getNickname(),
mentee.getJobId()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.back.domain.member.member.dto;

public record MenteeUpdateRequest(
String nickname,
String interestedField
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.back.domain.member.member.dto;

import com.back.domain.member.member.entity.Member;
import com.back.domain.member.mentor.entity.Mentor;

public record MentorMyPageResponse(
Long id,
String email,
String name,
String nickname,
Long jobId,
Double rate,
Integer careerYears
) {
public static MentorMyPageResponse from(Member member, Mentor mentor) {
return new MentorMyPageResponse(
member.getId(),
member.getEmail(),
member.getName(),
member.getNickname(),
mentor.getJobId(),
mentor.getRate(),
mentor.getCareerYears()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.back.domain.member.member.dto;

public record MentorUpdateRequest(
String nickname,
String career,
Integer careerYears
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ public enum Role {
MENTOR, MENTEE, ADMIN
}

public void updateNickname(String nickname) {
this.nickname = nickname;
}

public Member(String email, String password, String name, String nickname, Role role) {
this.email = email;
this.password = password;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.back.domain.member.member.service;

import com.back.domain.member.member.dto.MenteeMyPageResponse;
import com.back.domain.member.member.dto.MenteeUpdateRequest;
import com.back.domain.member.member.dto.MentorMyPageResponse;
import com.back.domain.member.member.dto.MentorUpdateRequest;
import com.back.domain.member.member.entity.Member;
import com.back.domain.member.member.repository.MemberRepository;
import com.back.domain.member.mentee.entity.Mentee;
Expand Down Expand Up @@ -157,4 +161,71 @@ public Member refreshAccessToken(String refreshToken) {
return memberRepository.findByEmail(email)
.orElseThrow(() -> new ServiceException("401-5", "์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค."));
}

public MenteeMyPageResponse getMenteeMyPage(Member currentUser) {
Mentee mentee = menteeRepository.findByMemberId(currentUser.getId())
.orElseThrow(() -> new ServiceException("404-2", "๋ฉ˜ํ‹ฐ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."));

return MenteeMyPageResponse.from(currentUser, mentee);
}

@Transactional
public void updateMentee(Member currentUser, MenteeUpdateRequest request) {
// ๋‹‰๋„ค์ž„ ์ค‘๋ณต ์ฒดํฌ (๋ณธ์ธ ์ œ์™ธ)
if (!currentUser.getNickname().equals(request.nickname())) {
memberRepository.findByNickname(request.nickname()).ifPresent(
member -> {
if (!member.getId().equals(currentUser.getId())) {
throw new ServiceException("400-3", "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋‹‰๋„ค์ž„์ž…๋‹ˆ๋‹ค.");
}
}
);
}

// Member ์ •๋ณด ์—…๋ฐ์ดํŠธ (๋‹‰๋„ค์ž„)
Member member = memberRepository.findById(currentUser.getId())
.orElseThrow(() -> new ServiceException("404-1", "์กด์žฌํ•˜์ง€ ์•Š๋Š” ํšŒ์›์ž…๋‹ˆ๋‹ค."));

member.updateNickname(request.nickname());
memberRepository.save(member);

// TODO: interestedField๋ฅผ jobId๋กœ ๋งคํ•‘ํ•˜๋Š” ๋กœ์ง ํ•„์š” (ํ˜„์žฌ๋Š” ๊ธฐ์กด jobId ์œ ์ง€)
}

public MentorMyPageResponse getMentorMyPage(Member currentUser) {
Mentor mentor = mentorRepository.findByMemberId(currentUser.getId())
.orElseThrow(() -> new ServiceException("404-3", "๋ฉ˜ํ†  ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."));

return MentorMyPageResponse.from(currentUser, mentor);
}

@Transactional
public void updateMentor(Member currentUser, MentorUpdateRequest request) {
// ๋‹‰๋„ค์ž„ ์ค‘๋ณต ์ฒดํฌ (๋ณธ์ธ ์ œ์™ธ)
if (!currentUser.getNickname().equals(request.nickname())) {
memberRepository.findByNickname(request.nickname()).ifPresent(
member -> {
if (!member.getId().equals(currentUser.getId())) {
throw new ServiceException("400-4", "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋‹‰๋„ค์ž„์ž…๋‹ˆ๋‹ค.");
}
}
);
}

Mentor mentor = mentorRepository.findByMemberId(currentUser.getId())
.orElseThrow(() -> new ServiceException("404-3", "๋ฉ˜ํ†  ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."));

// Member ์ •๋ณด ์—…๋ฐ์ดํŠธ (๋‹‰๋„ค์ž„)
Member member = memberRepository.findById(currentUser.getId())
.orElseThrow(() -> new ServiceException("404-1", "์กด์žฌํ•˜์ง€ ์•Š๋Š” ํšŒ์›์ž…๋‹ˆ๋‹ค."));

member.updateNickname(request.nickname());
memberRepository.save(member);

// Mentor ์ •๋ณด ์—…๋ฐ์ดํŠธ (๊ฒฝ๋ ฅ์—ฐ์ˆ˜)
mentor.updateCareerYears(request.careerYears());
mentorRepository.save(mentor);

// TODO: career๋ฅผ jobId๋กœ ๋งคํ•‘ํ•˜๋Š” ๋กœ์ง ํ•„์š” (ํ˜„์žฌ๋Š” ๊ธฐ์กด jobId ์œ ์ง€)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,8 @@ public Mentor(Member member, Long jobId, Double rate, Integer careerYears) {
this.rate = rate;
this.careerYears = careerYears;
}

public void updateCareerYears(Integer careerYears) {
this.careerYears = careerYears;
}
}
Loading