Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package umc.th.juinjang.repository.limjang;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import umc.th.juinjang.model.entity.Limjang;
import umc.th.juinjang.model.entity.LimjangPrice;

public interface LimjangPriceRepository extends JpaRepository<LimjangPrice, Long> {

@Transactional
@Modifying
void deleteAllByLimjang(Limjang limjang);

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import umc.th.juinjang.model.entity.Image;
import umc.th.juinjang.model.entity.Limjang;
import umc.th.juinjang.model.entity.Record;

Expand All @@ -23,4 +24,5 @@ public interface RecordRepository extends JpaRepository<Record, Long> {
@Modifying
@Query(value = "DELETE FROM record r WHERE r.limjang_id = :limjangId", nativeQuery = true)
void deleteByLimjangId(@Param("limjangId") Long limjangId);

}
42 changes: 38 additions & 4 deletions src/main/java/umc/th/juinjang/service/auth/OAuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import umc.th.juinjang.apiPayload.ExceptionHandler;
import umc.th.juinjang.apiPayload.code.status.SuccessStatus;
import umc.th.juinjang.apiPayload.exception.handler.MemberHandler;
import umc.th.juinjang.controller.KakaoUnlinkClient;
import umc.th.juinjang.external.discord.DiscordAlertProvider;
Expand All @@ -17,27 +16,34 @@
import umc.th.juinjang.model.dto.auth.apple.*;
import umc.th.juinjang.model.dto.auth.kakao.KakaoLoginRequestDto;
import umc.th.juinjang.model.dto.auth.kakao.KakaoSignUpRequestDto;
import umc.th.juinjang.model.entity.Image;
import umc.th.juinjang.model.entity.Limjang;
import umc.th.juinjang.model.entity.Member;
import umc.th.juinjang.model.entity.Record;
import umc.th.juinjang.model.entity.enums.MemberProvider;
import umc.th.juinjang.repository.checklist.ChecklistAnswerRepository;
import umc.th.juinjang.repository.checklist.ReportRepository;
import umc.th.juinjang.repository.image.ImageRepository;
import umc.th.juinjang.repository.limjang.LimjangPriceRepository;
import umc.th.juinjang.repository.limjang.LimjangRepository;
import umc.th.juinjang.repository.limjang.MemberRepository;
import umc.th.juinjang.repository.limjang.ScrapRepository;
import umc.th.juinjang.repository.record.RecordRepository;
import umc.th.juinjang.service.JwtService;
import umc.th.juinjang.service.S3Service;

import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import static umc.th.juinjang.apiPayload.code.status.ErrorStatus.*;

@Slf4j
@Service
@RequiredArgsConstructor
@Transactional
public class OAuthService {

private final MemberRepository memberRepository;
Expand All @@ -51,6 +57,8 @@ public class OAuthService {
private final RecordRepository recordRepository;
private final ImageRepository imageRepository;
private final ReportRepository reportRepository;
private final S3Service s3Service;
private final LimjangPriceRepository limjangPriceRepository;

@Autowired
private KakaoUnlinkClient kakaoUnlinkClient;
Expand Down Expand Up @@ -331,16 +339,33 @@ public void appleWithdraw(Member member, String code) {

deleteMemberData(member);
}

private void deleteAllByLimjangId(Limjang limjang) {
@Transactional
public void deleteAllByLimjangId(Limjang limjang) {
scrapRepository.deleteByLimjangId(limjang.getLimjangId());
checklistAnswerRepository.deleteByLimjangId(limjang.getLimjangId());
limjangPriceRepository.deleteAllByLimjang(limjang);
List<String> imageList = limjang.getImageList()
.stream()
.map(Image::getImageUrl)
.collect(Collectors.toList());
List<String> recordList = limjang.getRecordList()
.stream()
.map(Record::getRecordUrl)
.collect(Collectors.toList());


deleteFromS3(imageList);
deleteFromS3(recordList);

imageRepository.deleteByLimjangId(limjang.getLimjangId());
recordRepository.deleteByLimjangId(limjang.getLimjangId());
reportRepository.deleteByLimjangId(limjang.getLimjangId());

}

private void deleteMemberData(Member member) {

@Transactional
public void deleteMemberData(Member member) {
List<Limjang> limjangList = limjangRepository.findLimjangByMemberIdIgnoreDeleted(member.getMemberId());

for (Limjang limjang : limjangList) {
Expand All @@ -349,6 +374,15 @@ private void deleteMemberData(Member member) {

limjangRepository.deleteAllByMemberId(member.getMemberId());
memberRepository.deleteById(member.getMemberId());
deleteFromS3(Collections.singletonList(member.getImageUrl()));
}

@Transactional
public void deleteFromS3(List<String> urlList){
for (String url : urlList) {
s3Service.deleteFile(url);
}
}


}