diff --git a/src/main/java/com/assu/server/domain/partnership/repository/PaperRepository.java b/src/main/java/com/assu/server/domain/partnership/repository/PaperRepository.java index 4f9fdf3..d312543 100644 --- a/src/main/java/com/assu/server/domain/partnership/repository/PaperRepository.java +++ b/src/main/java/com/assu/server/domain/partnership/repository/PaperRepository.java @@ -37,8 +37,19 @@ Optional findTopByAdmin_IdAndPartner_IdAndIsActivatedOrderByIdDesc( Optional findTopByAdmin_IdAndPartner_IdAndIsActivatedInOrderByIdDesc(Long adminId, Long partnerId, List statuses); // Admin 기준 (SUSPEND) - @Query("select p from Paper p join fetch p.partner where p.isActivated = :status order by p.createdAt desc") - List findAllByIsActivatedWithPartner(@Param("status") ActivationStatus status); + @Query(""" +select p +from Paper p +left join fetch p.partner pt +left join fetch p.store s +where p.isActivated = :status + and p.admin.id = :adminId +order by p.createdAt desc +""") + List findAllSuspendedByAdminWithPartner( + @Param("status") ActivationStatus status, + @Param("adminId") Long adminId + ); // Partner 기준 (ACTIVE) List findByPartner_IdAndIsActivated(Long partnerId, ActivationStatus status, Sort sort); diff --git a/src/main/java/com/assu/server/domain/partnership/service/PartnershipServiceImpl.java b/src/main/java/com/assu/server/domain/partnership/service/PartnershipServiceImpl.java index 8418f44..b189af0 100644 --- a/src/main/java/com/assu/server/domain/partnership/service/PartnershipServiceImpl.java +++ b/src/main/java/com/assu/server/domain/partnership/service/PartnershipServiceImpl.java @@ -252,12 +252,17 @@ public PartnershipResponseDTO.WritePartnershipResponseDTO getPartnership(Long pa @Override @Transactional public List getSuspendedPapers(Long adminId) { - List suspendedPapers = paperRepository.findAllByIsActivatedWithPartner(ActivationStatus.SUSPEND); + List suspendedPapers = + paperRepository.findAllSuspendedByAdminWithPartner(ActivationStatus.SUSPEND, adminId); return suspendedPapers.stream() .map(paper -> PartnershipResponseDTO.SuspendedPaperDTO.builder() .paperId(paper.getId()) - .partnerName(paper.getPartner().getName()) + .partnerName( + paper.getPartner() != null + ? paper.getPartner().getName() + : (paper.getStore() != null ? paper.getStore().getName() : "미등록") + ) .createdAt(paper.getCreatedAt()) .build()) .toList(); @@ -400,16 +405,25 @@ public void deletePartnership(Long paperId) { Paper paper = paperRepository.findById(paperId) .orElseThrow(() -> new DatabaseException(ErrorStatus.NO_SUCH_PAPER)); + // 1. paperContent + goods 삭제 List contentsToDelete = paperContentRepository.findByPaperId(paperId); - if (contentsToDelete != null && !contentsToDelete.isEmpty()) { - List contentIds = contentsToDelete.stream().map(PaperContent::getId).toList(); - goodsRepository.deleteAllByContentIds(contentIds); + List contentIds = contentsToDelete.stream() + .map(PaperContent::getId) + .toList(); + goodsRepository.deleteAllByContentIds(contentIds); paperContentRepository.deleteAll(contentsToDelete); } + // 2. paper 삭제 paperRepository.delete(paper); + + // 3. 임시 store 삭제 (partner가 null인 경우만) + Store store = paper.getStore(); + if (store != null && paper.getPartner() == null) { + storeRepository.delete(store); + } } @Override