2121import fitfit .global .enums .MemberStatus ;
2222import fitfit .global .enums .Provider ;
2323import fitfit .global .enums .Style ;
24+ import fitfit .global .s3 .S3Service ;
2425import lombok .RequiredArgsConstructor ;
2526import lombok .extern .slf4j .Slf4j ;
27+ import org .springframework .beans .factory .annotation .Value ;
2628import org .springframework .stereotype .Service ;
2729import org .springframework .transaction .annotation .Transactional ;
2830
@@ -40,8 +42,10 @@ public class MemberCommandServiceImpl implements MemberCommandService{
4042 private final MemberTermRepository memberTermRepository ;
4143 private final TermRepository termRepository ;
4244 private final AccountCommandService accountCommandService ; // 의존성 추가
45+ private final S3Service s3Service ;
4346
44- private static final String DEFAULT_BODY_IMG_URL = "https://fitfit-profile-img.s3.ap-northeast-2.amazonaws.com/default_body_img.jpg" ;
47+ @ Value ("${cloud.aws.s3.profile-bucket}" )
48+ private String profileBucket ;
4549
4650 @ Override
4751 @ Transactional
@@ -115,8 +119,9 @@ public MemberResponseDTO.MyProfileDetailDto updateProfile(String authorization,
115119
116120 member .updateNickname (req .nickname ());
117121
118- if (req .profileImgUrl () !=null ){
119- member .updateProfileImgUrl (req .profileImgUrl ());
122+ if (req .profileImgUrl () != null && !req .profileImgUrl ().isBlank () && req .profileImgUrl ().startsWith ("data:image" )){
123+ String profileImgUrl = s3Service .upload (req .profileImgUrl (), "profile_images" , profileBucket );
124+ member .updateProfileImgUrl (profileImgUrl );
120125 }
121126
122127 if (req .preferredStyles ()!=null ) {
@@ -147,8 +152,9 @@ public MemberResponseDTO.BodyInfoResDTO updateBodyInfo(String authorization, Mem
147152
148153 member .updateHeight (req .height ());
149154 member .updateWeight (req .weight ());
150- if (req .bodyImgUrl ()!=null ){
151- member .updateFullBodyImgUrl (req .bodyImgUrl ());
155+ if (req .bodyImgUrl () != null && !req .bodyImgUrl ().isBlank () && req .bodyImgUrl ().startsWith ("data:image" )){
156+ String bodyImgUrl = s3Service .upload (req .bodyImgUrl (), "fitting_member_images" , profileBucket );
157+ member .updateFullBodyImgUrl (bodyImgUrl );
152158 }
153159 return MemberConverter .toMemberBodyInfoResDTO (member );
154160 }
@@ -161,6 +167,14 @@ public void withdrawMember(String authorization) {
161167 Member findMember = memberRepository .findById (memberId )
162168 .orElseThrow (() -> new MemberHandler (ErrorStatus .MEMBER_NOT_FOUND ));
163169
170+ // S3에 저장된 이미지 삭제
171+ if (findMember .getProfileImgUrl () != null && !findMember .getProfileImgUrl ().isBlank ()) {
172+ s3Service .deleteFile (findMember .getProfileImgUrl ());
173+ }
174+ if (findMember .getFullBodyImgUrl () != null && !findMember .getFullBodyImgUrl ().isBlank ()) {
175+ s3Service .deleteFile (findMember .getFullBodyImgUrl ());
176+ }
177+
164178 findMember .updateStatus (MemberStatus .INACTIVE );
165179
166180 memberTokenRepository .deleteByMember (findMember );
@@ -299,11 +313,7 @@ private void updateMemberInfo(Member member, MemberRequestDTO.MemberSignupReques
299313 if (request .getStyleList () != null ) {
300314 member .updatePreferredStyle (request .getStyleList ());
301315 }
302- if (request .getFullBodyImgUrl () != null ) {
303- member .updateFullBodyImgUrl (request .getFullBodyImgUrl ());
304- } else {
305- member .updateFullBodyImgUrl (DEFAULT_BODY_IMG_URL );
306- }
307-
316+ member .updateFullBodyImgUrl (request .getFullBodyImgUrl ());
308317 }
309318}
319+
0 commit comments