1+ package com .example .FixLog .controller ;
2+
3+ import com .example .FixLog .dto .PresignResponseDto ;
4+ import com .example .FixLog .dto .Response ;
5+ import com .example .FixLog .dto .member .edit .EditNicknameRequestDto ;
6+ import com .example .FixLog .dto .member .edit .EditPasswordRequestDto ;
7+ import com .example .FixLog .dto .member .edit .EditBioRequestDto ;
8+ import com .example .FixLog .exception .CustomException ;
9+ import com .example .FixLog .exception .ErrorCode ;
10+ import com .example .FixLog .service .S3Service ;
11+ import com .example .FixLog .service .MemberService ;
12+ import com .example .FixLog .domain .member .Member ;
13+ import lombok .RequiredArgsConstructor ;
14+ import org .springframework .http .ResponseEntity ;
15+ import jakarta .validation .Valid ;
16+ import org .springframework .security .core .annotation .AuthenticationPrincipal ;
17+ import org .springframework .web .bind .annotation .*;
18+
19+ import java .util .Map ;
20+
21+ @ RestController
22+ @ RequiredArgsConstructor
23+ @ RequestMapping ("/mypage" )
24+ public class MypageMemberController {
25+
26+ private final MemberService memberService ;
27+ private final S3Service s3Service ;
28+
29+ @ PatchMapping ("/members/nickname" )
30+ public ResponseEntity <Response <String >> editNickname (
31+ @ RequestBody @ Valid EditNicknameRequestDto requestDto
32+ ) {
33+ Member member = memberService .getCurrentMemberInfo ();
34+ memberService .editNickname (member , requestDto .getNickname ());
35+ return ResponseEntity .ok (Response .success ("닉네임 수정 성공" , "SUCCESS" ));
36+ }
37+
38+ @ PatchMapping ("/members/password" )
39+ public ResponseEntity <Response <String >> editPassword (
40+ @ RequestBody @ Valid EditPasswordRequestDto requestDto
41+ ) {
42+ Member member = memberService .getCurrentMemberInfo ();
43+ memberService .editPassword (member , requestDto );
44+ return ResponseEntity .ok (Response .success ("비밀번호 변경 성공" , "SUCCESS" ));
45+ }
46+
47+ @ GetMapping ("/members/profile-image/presign" )
48+ public ResponseEntity <Response <PresignResponseDto >> presignProfileImage (
49+ @ AuthenticationPrincipal Member member ,
50+ @ RequestParam String filename
51+ ) {
52+ if (member == null ) throw new CustomException (ErrorCode .UNAUTHORIZED );
53+
54+ String key = s3Service .generateKey ("profile" , filename );
55+ String uploadUrl = s3Service .generatePresignedUrl ("profile" , filename , 15 );
56+ String fileUrl = s3Service .getObjectUrl (key );
57+
58+ PresignResponseDto dto = new PresignResponseDto (uploadUrl , fileUrl );
59+ return ResponseEntity .ok (Response .success ("Presigned URL 발급 성공" , dto ));
60+ }
61+
62+ @ PatchMapping ("/members/profile-image" )
63+ public ResponseEntity <Response <String >> updateProfileImageUrl (
64+ @ AuthenticationPrincipal Member member ,
65+ @ RequestBody Map <String , String > body
66+ ) {
67+ String imageUrl = body .get ("imageUrl" );
68+ if (imageUrl == null || imageUrl .isBlank ()) {
69+ throw new CustomException (ErrorCode .INVALID_REQUEST );
70+ }
71+ memberService .editProfileImage (member , imageUrl );
72+ return ResponseEntity .ok (Response .success ("프로필 이미지 저장 성공" , "SUCCESS" ));
73+ }
74+
75+ @ PatchMapping ("/members/bio" )
76+ public ResponseEntity <Response <String >> editBio (
77+ @ RequestBody @ Valid EditBioRequestDto requestDto
78+ ) {
79+ Member member = memberService .getCurrentMemberInfo ();
80+ memberService .editBio (member , requestDto .getBio ());
81+ return ResponseEntity .ok (Response .success ("소개글 수정 성공" , "SUCCESS" ));
82+ }
83+ }
0 commit comments