Skip to content

Commit 23961f5

Browse files
committed
INFLUY#63 feat : 회원 이미지 수정, 회원 탈퇴 시 모든 관련 사진 삭제
1 parent a1493d4 commit 23961f5

3 files changed

Lines changed: 61 additions & 0 deletions

File tree

src/main/java/com/influy/domain/item/repository/ItemRepository.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,11 @@ WHERE i.id IN (:itemIds)
131131
""")
132132
List<ItemJPQLResponse.ItemWithSellerInfo> findAllWithSellerInfoById(@Param("itemIds") List<Long> itemIds);
133133

134+
@Query(value = """
135+
SELECT ii.image_url
136+
FROM item i
137+
JOIN item_image ii on ii.item_id = i.id
138+
WHERE i.seller_id = :sellerId
139+
""", nativeQuery = true)
140+
List<String> findAllItemImagesBySellerId(@Param("sellerId") Long sellerId);
134141
}

src/main/java/com/influy/domain/member/service/MemberServiceImpl.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.influy.domain.category.entity.Category;
44
import com.influy.domain.category.repository.CategoryRepository;
5+
import com.influy.domain.image.service.ImageService;
6+
import com.influy.domain.item.repository.ItemRepository;
57
import com.influy.domain.member.converter.MemberConverter;
68
import com.influy.domain.member.dto.MemberRequestDTO;
79
import com.influy.domain.member.entity.Member;
@@ -25,6 +27,7 @@
2527

2628
import java.util.ArrayList;
2729
import java.util.List;
30+
import java.util.Objects;
2831

2932
@Service
3033
@RequiredArgsConstructor
@@ -36,6 +39,8 @@ public class MemberServiceImpl implements MemberService {
3639
private final SellerProfileRepository sellerProfileRepository;
3740
private final AuthService authService;
3841
private final CategoryRepository categoryRepository;
42+
private final ImageService imageService;
43+
private final ItemRepository itemRepository;
3944

4045
@Override
4146
public Member findByKakaoId(Long kakaoId) {
@@ -108,13 +113,39 @@ public Member joinSeller(MemberRequestDTO.SellerJoin requestBody) {
108113
@Override
109114
@Transactional
110115
public void deleteMember(Member member) {
116+
117+
List<String> images = new ArrayList<>();
118+
if(member.getProfileImg()!=null){
119+
images.add(member.getProfileImg());
120+
}
121+
122+
123+
if(member.getSellerProfile()!=null){
124+
SellerProfile seller = member.getSellerProfile();
125+
if(seller.getBackgroundImg()!=null) images.add(seller.getBackgroundImg());
126+
images.addAll(itemRepository.findAllItemImagesBySellerId(seller.getId()));
127+
}
128+
129+
//관련 이미지 먼저 삭제
130+
if(!images.isEmpty()){
131+
imageService.deleteImg(images);
132+
}
133+
134+
135+
111136
memberRepository.delete(member);
112137
}
113138

114139
@Override
115140
@Transactional
116141
public Member updateMemeber(Member member, MemberRequestDTO.UpdateProfile request) {
117142

143+
//변경이 생기면 기존 이미지 삭제
144+
if(!Objects.equals(request.getProfileUrl(),member.getProfileImg())){
145+
String img = member.getProfileImg();
146+
if(img!=null) imageService.deleteImg(new ArrayList<>(List.of(member.getProfileImg())));
147+
}
148+
118149
return member.updateProfile(request);
119150
}
120151

src/main/java/com/influy/domain/sellerProfile/service/SellerProfileServiceImpl.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.influy.domain.home.converter.HomeConverter;
44
import com.influy.domain.home.dto.HomeResponseDto;
5+
import com.influy.domain.image.service.ImageService;
56
import com.influy.domain.item.dto.jpql.ItemJPQLResponse.IsArchivedItemCount;
67
import com.influy.domain.item.repository.ItemRepository;
78
import com.influy.domain.like.entity.LikeStatus;
@@ -19,7 +20,9 @@
1920
import org.springframework.stereotype.Service;
2021
import org.springframework.transaction.annotation.Transactional;
2122

23+
import java.util.ArrayList;
2224
import java.util.List;
25+
import java.util.Objects;
2326

2427
@Service
2528
@Transactional(readOnly = true)
@@ -29,6 +32,7 @@ public class SellerProfileServiceImpl implements SellerProfileService {
2932
private final ItemRepository itemRepository;
3033
private final SellerProfileRepository sellerProfileRepository;
3134
private final LikeRepository likeRepository;
35+
private final ImageService imageService;
3236

3337
public SellerProfile getSellerProfile(Long sellerId){
3438
return sellerProfileRepository.findById(sellerId).orElseThrow(()->new GeneralException(ErrorStatus.SELLER_NOT_FOUND));
@@ -37,10 +41,29 @@ public SellerProfile getSellerProfile(Long sellerId){
3741
@Override
3842
@Transactional
3943
public SellerProfile updateSeller(SellerProfile sellerProfile, SellerProfileRequestDTO.UpdateProfile request) {
44+
45+
List<String> images = new ArrayList<>();
46+
4047
if(request.getProfile()!=null){
4148
Member member = sellerProfile.getMember();
49+
//프사 변경 검사
50+
if(!Objects.equals(request.getProfile().getProfileUrl(),member.getProfileImg())){
51+
String img = member.getProfileImg();
52+
if(img!=null) images.add(img);
53+
}
4254
member.updateProfile(request.getProfile());
4355
}
56+
57+
//배경사진 변경 검사
58+
if(!Objects.equals(request.getBackgroundImg(),sellerProfile.getBackgroundImg())){
59+
String bgImg = sellerProfile.getBackgroundImg();
60+
if(bgImg!=null) images.add(bgImg);
61+
}
62+
63+
if(!images.isEmpty()){
64+
imageService.deleteImg(images);
65+
}
66+
4467
return sellerProfile.setProfile(request);
4568
}
4669

0 commit comments

Comments
 (0)