Skip to content

Commit 5455f0e

Browse files
committed
merge : origin develop pulled
2 parents 813896b + 8221780 commit 5455f0e

9 files changed

+196
-23
lines changed

src/main/java/muit/backend/controller/MemberController.java

+44-4
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,57 @@ public ApiResponse<MyPageResponseDTO> myPage(@RequestHeader("Authorization") Str
7070
return ApiResponse.onSuccess(myPageResponseDTO);
7171
}
7272

73-
@PatchMapping("/{memberId}")
73+
@PatchMapping("/{memberId}/deActive")
7474
@Operation(summary = "회원 탈퇴(비활성화) api", description = "회원 비활성화 하는 기능입니다.")
7575
public ApiResponse<MyPageResponseDTO> deactivateMember(@RequestHeader("Authorization") String authorizationHeader, @PathVariable("memberId") Long memberId) {
7676
Member member = memberService.getMemberByToken(authorizationHeader);
7777
MyPageResponseDTO myPageResponseDTO = memberService.deactivateMember(member.getId(), memberId);
7878
return ApiResponse.onSuccess(myPageResponseDTO);
7979
}
8080

81-
@PostMapping("/checkPassword")
82-
@Operation(summary = "회원 정보 변경 전 비밀 번호 확인하는 api")
83-
public ApiResponse<Boolean> checkPassword(@RequestHeader("Authorization") String authorizationHeader, @RequestBody PasswordCheckRequestDTO dto) {
81+
@PatchMapping("{memberId}/changePhone")
82+
@Operation(summary = "회원 정보 수정 - 핸드폰")
83+
public ApiResponse<MyPageResponseDTO> changePhone(@RequestHeader("Authorization") String authorizationHeader,
84+
@PathVariable("memberId") Long memberId,
85+
@RequestBody PhoneChangeRequestDTO dto) {
86+
Member member = memberService.getMemberByToken(authorizationHeader);
87+
MyPageResponseDTO myPageResponseDTO = memberService.changePhoneNumber(member.getId(), memberId, dto);
88+
return ApiResponse.onSuccess(myPageResponseDTO);
89+
}
90+
91+
@PatchMapping("{memberId}/changeUsername")
92+
@Operation(summary = "회원 정보 수정 - 아이디")
93+
public ApiResponse<MyPageResponseDTO> changeUsername(@RequestHeader("Authorization") String authorizationHeader,
94+
@PathVariable("memberId") Long memberId,
95+
@RequestBody UserNameChangeRequestDTO dto) {
96+
Member member = memberService.getMemberByToken(authorizationHeader);
97+
MyPageResponseDTO myPageResponseDTO = memberService.changeUsername(member.getId(), memberId, dto);
98+
return ApiResponse.onSuccess(myPageResponseDTO);
99+
}
100+
101+
@PatchMapping("{memberId}/changeEmail")
102+
@Operation(summary = "회원 정보 수정 - 이메일", description = "이메일로 회원을 구분 하기 때문에, 반드시 재로그인을 해야합니다. redirect 를 로그인 페이지로 해야합니다.")
103+
public ApiResponse<MyPageResponseDTO> changeEmail(@RequestHeader("Authorization") String authorizationHeader,
104+
@PathVariable("memberId") Long memberId,
105+
@RequestBody EmailVerifyRequestDTO dto) {
106+
Member member = memberService.getMemberByToken(authorizationHeader);
107+
MyPageResponseDTO myPageResponseDTO = memberService.changeEmail(member.getId(), memberId, dto);
108+
return ApiResponse.onSuccess(myPageResponseDTO);
109+
}
110+
111+
@PatchMapping("{memberId}/changePassword")
112+
@Operation(summary = "회원 정보 수정 - 비밀번호")
113+
public ApiResponse<MyPageResponseDTO> changePassword(@RequestHeader("Authorization") String authorizationHeader,
114+
@PathVariable("memberId") Long memberId,
115+
@RequestBody PasswordChangeRequestDTO dto) {
116+
Member member = memberService.getMemberByToken(authorizationHeader);
117+
MyPageResponseDTO myPageResponseDTO = memberService.changePassword(member.getId(), memberId, dto);
118+
return ApiResponse.onSuccess(myPageResponseDTO);
119+
}
120+
121+
@PostMapping("{memberId}/checkPassword")
122+
@Operation(summary = "회원 정보 변경 전 + 소극장 등록 전 비밀 번호 확인하는 api")
123+
public ApiResponse<Boolean> checkPassword(@RequestHeader("Authorization") String authorizationHeader, @RequestBody PasswordRequestDTO dto) {
84124
Member member = memberService.getMemberByToken(authorizationHeader);
85125
boolean isValid = memberService.CheckPassword(member, dto);
86126
if (!isValid) {

src/main/java/muit/backend/domain/entity/member/Member.java

+13
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class Member extends BaseEntity {
3939
private String phone;
4040

4141
private String birthDate;
42+
// 생년월일 없음
4243

4344
@Enumerated(EnumType.STRING)
4445
private Gender gender;
@@ -101,6 +102,18 @@ public void deactivateMember(Member member) {
101102
this.activeStatus = ActiveStatus.INACTIVE;
102103
}
103104

105+
public void changePhoneNumber(String newPhone) {
106+
this.phone = newPhone;
107+
}
108+
109+
public void changeUsername(String newUsername) {
110+
this.username = newUsername;
111+
}
112+
113+
public void changeEmail(String newEmail) {
114+
this.email = newEmail;
115+
}
116+
104117
public void updateMember(ManageMemberRequestDTO.UpdateMemberRequestDTO requestDTO) {
105118
if (requestDTO.getUsername() != null) {
106119
this.username = requestDTO.getUsername();

src/main/java/muit/backend/dto/memberDTO/MyPageResponseDTO.java

+2
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,7 @@ public class MyPageResponseDTO {
1414
private Long id;
1515
private String name;
1616
private String username;
17+
private String email;
18+
private String phone;
1719
private ActiveStatus status;
1820
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package muit.backend.dto.memberDTO;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
@Getter
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
public class PasswordChangeRequestDTO {
13+
private String newPassword;
14+
private String newPasswordConfirm;
15+
}

src/main/java/muit/backend/dto/memberDTO/PasswordCheckRequestDTO.java src/main/java/muit/backend/dto/memberDTO/PasswordRequestDTO.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
@Builder
1010
@NoArgsConstructor
1111
@AllArgsConstructor
12-
public class PasswordCheckRequestDTO {
13-
String password;
12+
public class PasswordRequestDTO {
13+
private String password;
1414
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package muit.backend.dto.memberDTO;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
@Builder
9+
@AllArgsConstructor
10+
@NoArgsConstructor
11+
@Getter
12+
public class PhoneChangeRequestDTO {
13+
private String newPhoneNumber;
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package muit.backend.dto.memberDTO;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
@Builder
9+
@AllArgsConstructor
10+
@NoArgsConstructor
11+
@Getter
12+
public class UserNameChangeRequestDTO {
13+
private String newUsername;
14+
}

src/main/java/muit/backend/service/MemberService.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ public interface MemberService {
1616

1717
public MyPageResponseDTO deactivateMember(Long tokenId, Long memberId);
1818

19-
public boolean CheckPassword(Member member,PasswordCheckRequestDTO dto);
19+
public boolean CheckPassword(Member member, PasswordRequestDTO dto);
20+
21+
public MyPageResponseDTO changePhoneNumber(Long tokenId, Long memberId, PhoneChangeRequestDTO dto);
22+
public MyPageResponseDTO changeUsername(Long tokenId, Long memberId, UserNameChangeRequestDTO dto);
23+
public MyPageResponseDTO changeEmail(Long tokenId, Long memberId, EmailVerifyRequestDTO dto);
24+
public MyPageResponseDTO changePassword(Long tokenId, Long memberId, PasswordChangeRequestDTO dto);
25+
2026

2127
public List<MusicalResponseDTO.MusicalHomeDTO> getLikeMusicals(Member member);
2228

src/main/java/muit/backend/service/MemberServiceImpl.java

+85-16
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,10 @@
88
import muit.backend.config.jwt.TokenDTO;
99
import muit.backend.config.jwt.TokenProvider;
1010
import muit.backend.converter.MemberConverter;
11-
import muit.backend.converter.MusicalConverter;
12-
import muit.backend.domain.entity.member.Likes;
1311
import muit.backend.domain.entity.member.Member;
14-
import muit.backend.domain.entity.musical.Musical;
1512
import muit.backend.domain.enums.ActiveStatus;
1613
import muit.backend.domain.enums.Role;
1714
import muit.backend.dto.memberDTO.*;
18-
import muit.backend.dto.musicalDTO.MusicalResponseDTO;
19-
import muit.backend.repository.LikesRepository;
2015
import muit.backend.repository.MemberRepository;
2116

2217
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -25,8 +20,6 @@
2520
import org.springframework.stereotype.Service;
2621
import org.springframework.transaction.annotation.Transactional;
2722

28-
import java.util.List;
29-
3023
@Slf4j
3124
@Service
3225
@RequiredArgsConstructor
@@ -35,7 +28,6 @@ public class MemberServiceImpl implements MemberService {
3528
private final MemberRepository memberRepository;
3629
private final BCryptPasswordEncoder encoder;
3730
private final TokenProvider tokenProvider;
38-
private final LikesRepository likesRepository;
3931

4032
//== 개인회원 가입 - 이메일 ==//
4133
@Override
@@ -166,26 +158,103 @@ public MyPageResponseDTO deactivateMember(Long tokenId, Long memberId){
166158
member.deactivateMember(member);
167159
return MyPageResponseDTO.builder()
168160
.id(memberId)
161+
.phone(member.getPhone())
162+
.email(member.getEmail())
169163
.name(member.getName())
170-
.username(member.getUsername()).build();
164+
.username(member.getUsername())
165+
.status(member.getActiveStatus()).build();
171166

172167
}
173168

174169
@Override
175-
public boolean CheckPassword(Member member,PasswordCheckRequestDTO dto){
170+
public boolean CheckPassword(Member member, PasswordRequestDTO dto){
176171
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
177-
178172
return passwordEncoder.matches(dto.getPassword(), member.getPassword());
179173
}
180174

175+
@Transactional
181176
@Override
182-
public List<MusicalResponseDTO.MusicalHomeDTO> getLikeMusicals(Member member){
183-
Long memberId = member.getId();
184-
List<Likes> likesList = likesRepository.findAllByMemberId(memberId);
185-
return likesList.stream()
186-
.map(likes->MusicalConverter.toMusicalHomeDTO(likes.getMusical())).toList();
177+
public MyPageResponseDTO changePhoneNumber(Long tokenId, Long memberId, PhoneChangeRequestDTO dto){
178+
Member member = memberRepository.findById(memberId).orElseThrow(() -> new GeneralException(ErrorStatus.MEMBER_NOT_FOUND));
179+
if (!tokenId.equals(memberId)) {
180+
throw new GeneralException(ErrorStatus.MEMBER_NOT_AUTHORIZED);
181+
}
182+
183+
member.changePhoneNumber(dto.getNewPhoneNumber());
184+
return MyPageResponseDTO.builder()
185+
.id(memberId)
186+
.phone(member.getPhone())
187+
.email(member.getEmail())
188+
.name(member.getName())
189+
.username(member.getUsername())
190+
.status(member.getActiveStatus()).build();
187191
}
188192

193+
@Transactional
194+
@Override
195+
public MyPageResponseDTO changeUsername(Long tokenId, Long memberId, UserNameChangeRequestDTO dto){
196+
Member member = memberRepository.findById(memberId).orElseThrow(() -> new GeneralException(ErrorStatus.MEMBER_NOT_FOUND));
197+
if (!tokenId.equals(memberId)) {
198+
throw new GeneralException(ErrorStatus.MEMBER_NOT_AUTHORIZED);
199+
}
200+
201+
member.changeUsername(dto.getNewUsername());
202+
return MyPageResponseDTO.builder()
203+
.id(memberId)
204+
.phone(member.getPhone())
205+
.email(member.getEmail())
206+
.name(member.getName())
207+
.username(member.getUsername())
208+
.status(member.getActiveStatus()).build();
209+
}
210+
@Transactional
211+
@Override
212+
public MyPageResponseDTO changeEmail(Long tokenId, Long memberId, EmailVerifyRequestDTO dto){
213+
Member member = memberRepository.findById(memberId).orElseThrow(() -> new GeneralException(ErrorStatus.MEMBER_NOT_FOUND));
214+
if (!tokenId.equals(memberId)) {
215+
throw new GeneralException(ErrorStatus.MEMBER_NOT_AUTHORIZED);
216+
}
217+
218+
member.changeEmail(dto.getEmail());
219+
return MyPageResponseDTO.builder()
220+
.id(memberId)
221+
.phone(member.getPhone())
222+
.email(member.getEmail())
223+
.name(member.getName())
224+
.username(member.getUsername())
225+
.status(member.getActiveStatus()).build();
226+
}
227+
@Transactional
228+
@Override
229+
public MyPageResponseDTO changePassword(Long tokenId, Long memberId, PasswordChangeRequestDTO dto){
230+
Member member = memberRepository.findById(memberId).orElseThrow(() -> new GeneralException(ErrorStatus.MEMBER_NOT_FOUND));
231+
if (!tokenId.equals(memberId)) {
232+
throw new GeneralException(ErrorStatus.MEMBER_NOT_AUTHORIZED);
233+
}
234+
235+
if(!dto.getNewPassword().equals(dto.getNewPasswordConfirm())){
236+
throw new GeneralException(ErrorStatus.PASSWORD_NOT_MATCH);
237+
}
238+
239+
String encodedPw = encoder.encode(dto.getNewPassword());
240+
241+
member.encodePassword(encodedPw);
242+
243+
244+
return MyPageResponseDTO.builder()
245+
.id(memberId)
246+
.phone(member.getPhone())
247+
.email(member.getEmail())
248+
.name(member.getName())
249+
.username(member.getUsername())
250+
.status(member.getActiveStatus()).build();
251+
}
252+
253+
254+
255+
256+
257+
189258

190259

191260
}

0 commit comments

Comments
 (0)