@@ -26,6 +26,13 @@ public class ProfileService {
2626 private final MemberTagRepository tagRepo ;
2727 private final S3Service s3Service ;
2828
29+ private static final String DEFAULT_PROFILE_IMAGE_URL =
30+ "https://journeybucket0.s3.ap-northeast-2.amazonaws.com/USER/0089e5c3-05c3-466b-8fd5-56c41f14acc9.png" ;
31+
32+ private String resolveProfileImage (String imageUrl ) {
33+ return (imageUrl == null || imageUrl .isBlank ()) ? DEFAULT_PROFILE_IMAGE_URL : imageUrl ;
34+ }
35+
2936 @ Transactional (readOnly = true )
3037 public ProfileResponseDTO getMyProfile (Long memberId ) {
3138
@@ -41,7 +48,7 @@ public ProfileResponseDTO getMyProfile(Long memberId) {
4148 .region (m .getRegion ())
4249 .homepage (m .getHomepage ())
4350 .bio (m .getBio ())
44- .profileImage ((m .getProfileImage ()))
51+ .profileImage (resolveProfileImage (m .getProfileImage ()))
4552 .tags (tagRepo .findByMember (m )
4653 .stream ().map (MemberTag ::getTag ).toList ())
4754 .build ();
@@ -58,6 +65,13 @@ public ProfileResponseDTO updateProfile(Long memberId,
5865 m .updateProfile (dto .getNickname (), dto .getAge (), dto .getGender (),
5966 dto .getRegion (), dto .getHomepage (), dto .getBio ());
6067
68+ String imageUrl = dto .getProfileImage ();
69+ if (imageUrl == null || imageUrl .isBlank ()) {
70+ m .setProfileImage (DEFAULT_PROFILE_IMAGE_URL );
71+ } else {
72+ m .setProfileImage (imageUrl );
73+ }
74+
6175 tagRepo .deleteByMember (m );
6276 if (dto .getTags () != null && !dto .getTags ().isEmpty ()) {
6377 if (dto .getTags ().size () > 3 )
@@ -90,7 +104,7 @@ public ProfileImageResponseDTO getProfileImage(Long memberId) {
90104 return ProfileImageResponseDTO .builder ()
91105 .memberId (member .getId ())
92106 .nickname (member .getDisplayName ())
93- .profileImage (member .getProfileImage ())
107+ .profileImage (resolveProfileImage ( member .getProfileImage () ))
94108 .build ();
95109 }
96110
@@ -102,9 +116,27 @@ public ProfileImageResponseDTO updateProfileImage(Long memberId,
102116 Member member = memberRepo .findById (memberId )
103117 .orElseThrow (() -> new EntityNotFoundException ("회원 없음" ));
104118
105- if (member .getProfileImage () != null )
106- s3Service .deleteS3Image (member .getProfileImage ());
119+ // 파일이 없거나 비어 있으면 → 기본 이미지로
120+ if (file == null || file .isEmpty ()) {
121+ if (member .getProfileImage () != null && !member .getProfileImage ().isBlank ()) {
122+ s3Service .deleteS3Image (member .getProfileImage ());
123+ }
124+
125+ // 기본 이미지로 리셋
126+ member .setProfileImage (DEFAULT_PROFILE_IMAGE_URL );
127+ syncPrincipalIfPresent (memberId , member );
128+
129+ return ProfileImageResponseDTO .builder ()
130+ .memberId (member .getId ())
131+ .nickname (member .getDisplayName ())
132+ .profileImage (DEFAULT_PROFILE_IMAGE_URL )
133+ .build ();
134+ }
107135
136+ // 기존 이미지 삭제
137+ if (member .getProfileImage () != null && !member .getProfileImage ().isBlank ()) {
138+ s3Service .deleteS3Image (member .getProfileImage ());
139+ }
108140 String imageUrl = s3Service .uploadProfileImage (file , member .getRole ());
109141 member .setProfileImage (imageUrl );
110142
@@ -128,7 +160,7 @@ private ProfileResponseDTO toProfileDTO(Member m) {
128160 .region (m .getRegion ())
129161 .homepage (m .getHomepage ())
130162 .bio (m .getBio ())
131- .profileImage (m .getProfileImage ())
163+ .profileImage (resolveProfileImage ( m .getProfileImage () ))
132164 .tags (tagRepo .findByMember (m )
133165 .stream ()
134166 .map (MemberTag ::getTag )
0 commit comments