diff --git a/src/main/java/kusitms/gallae/config/WebConfig.java b/src/main/java/kusitms/gallae/config/WebConfig.java new file mode 100644 index 0000000..cc78c0b --- /dev/null +++ b/src/main/java/kusitms/gallae/config/WebConfig.java @@ -0,0 +1,20 @@ +package kusitms.gallae.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowedMethods("GET", "POST", "PUT", "DELETE") + .allowedHeaders("Authorization", "Content-Type") + .exposedHeaders("Custom-Header") + .allowCredentials(true) + .maxAge(3600); + } +} \ No newline at end of file diff --git a/src/main/java/kusitms/gallae/repository/favorite/FavoriteRepository.java b/src/main/java/kusitms/gallae/repository/favorite/FavoriteRepository.java index eee498f..9e16474 100644 --- a/src/main/java/kusitms/gallae/repository/favorite/FavoriteRepository.java +++ b/src/main/java/kusitms/gallae/repository/favorite/FavoriteRepository.java @@ -16,4 +16,6 @@ public interface FavoriteRepository extends JpaRepository { Optional findByUserAndProgram(User user, Program program); List findAllByUser(User user); + + void deleteAllByProgram(Program program); } diff --git a/src/main/java/kusitms/gallae/repository/favoriteArchiveRepository/FavoriteArchiveRepository.java b/src/main/java/kusitms/gallae/repository/favoriteArchiveRepository/FavoriteArchiveRepository.java index 64b4939..8039d07 100644 --- a/src/main/java/kusitms/gallae/repository/favoriteArchiveRepository/FavoriteArchiveRepository.java +++ b/src/main/java/kusitms/gallae/repository/favoriteArchiveRepository/FavoriteArchiveRepository.java @@ -10,4 +10,6 @@ public interface FavoriteArchiveRepository extends JpaRepository findByUserAndArchive(User user, Archive archive); boolean existsByUserAndArchive(User user, Archive archive); + + void deleteAllByArchive(Archive archive); } diff --git a/src/main/java/kusitms/gallae/repository/favoriteReviewRepository/FavoriteReviewRepository.java b/src/main/java/kusitms/gallae/repository/favoriteReviewRepository/FavoriteReviewRepository.java index 047adbf..62b41b0 100644 --- a/src/main/java/kusitms/gallae/repository/favoriteReviewRepository/FavoriteReviewRepository.java +++ b/src/main/java/kusitms/gallae/repository/favoriteReviewRepository/FavoriteReviewRepository.java @@ -10,4 +10,6 @@ public interface FavoriteReviewRepository extends JpaRepository findByUserAndReview(User user, Review review); boolean existsByUserAndReview(User user, Review review); + + void deleteAllByReview(Review review); } diff --git a/src/main/java/kusitms/gallae/repository/userArchive/UserArchiveRepository.java b/src/main/java/kusitms/gallae/repository/userArchive/UserArchiveRepository.java index 2027211..17a13ae 100644 --- a/src/main/java/kusitms/gallae/repository/userArchive/UserArchiveRepository.java +++ b/src/main/java/kusitms/gallae/repository/userArchive/UserArchiveRepository.java @@ -1,6 +1,7 @@ package kusitms.gallae.repository.userArchive; import kusitms.gallae.domain.Archive; +import kusitms.gallae.domain.Review; import kusitms.gallae.domain.User; import kusitms.gallae.domain.UserArchive; import org.springframework.data.jpa.repository.JpaRepository; @@ -8,4 +9,6 @@ public interface UserArchiveRepository extends JpaRepository { boolean existsByUserAndArchive(User user, Archive archive); + + void deleteAllByArchive(Archive archive); } diff --git a/src/main/java/kusitms/gallae/repository/userReview/UserReviewRepository.java b/src/main/java/kusitms/gallae/repository/userReview/UserReviewRepository.java index 73c5ab0..31048a3 100644 --- a/src/main/java/kusitms/gallae/repository/userReview/UserReviewRepository.java +++ b/src/main/java/kusitms/gallae/repository/userReview/UserReviewRepository.java @@ -8,4 +8,6 @@ public interface UserReviewRepository extends JpaRepository { boolean existsByUserAndReview(User user, Review review); + + void deleteAllByReview(Review review); } diff --git a/src/main/java/kusitms/gallae/service/admin/ManagerServiceImpl.java b/src/main/java/kusitms/gallae/service/admin/ManagerServiceImpl.java index 2781f43..bc67c7d 100644 --- a/src/main/java/kusitms/gallae/service/admin/ManagerServiceImpl.java +++ b/src/main/java/kusitms/gallae/service/admin/ManagerServiceImpl.java @@ -11,6 +11,7 @@ import kusitms.gallae.global.DurationCalcurator; import kusitms.gallae.global.S3Service; import kusitms.gallae.global.jwt.AuthUtil; +import kusitms.gallae.repository.favorite.FavoriteRepository; import kusitms.gallae.repository.program.ProgramRepositoryCustom; import kusitms.gallae.repository.program.ProgramRepositoryImpl; import kusitms.gallae.repository.program.ProgramRespository; @@ -39,6 +40,8 @@ public class ManagerServiceImpl implements ManagerService { private final UserRepository userRepository; + private final FavoriteRepository favoriteRepository; + @Override public PostModelGet getProgramDetail(Long id){ @@ -133,7 +136,10 @@ public Long postTempProgram(ProgramPostReq programPostReq , String username) { } @Override + @Transactional public void deleteTempProgram(Long programId) { + Program program = programRespository.findById(programId).orElse(null); + favoriteRepository.deleteAllByProgram(program); programRespository.deleteByIdAndStatus(programId, Program.ProgramStatus.TEMP); } @@ -156,7 +162,10 @@ public void finishProgram(Long programId) { } @Override + @Transactional public void deleteProgram(Long programId) { + Program program = programRespository.findById(programId).orElse(null); + favoriteRepository.deleteAllByProgram(program); programRespository.deleteById(programId); } diff --git a/src/main/java/kusitms/gallae/service/archive/ArchiveService.java b/src/main/java/kusitms/gallae/service/archive/ArchiveService.java index 23ca6d0..7094cd9 100644 --- a/src/main/java/kusitms/gallae/service/archive/ArchiveService.java +++ b/src/main/java/kusitms/gallae/service/archive/ArchiveService.java @@ -17,12 +17,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalTime; import java.util.List; import java.util.stream.Collectors; @Service +@Transactional public class ArchiveService { @@ -85,6 +87,8 @@ public void deleteArchive(Long archiveId, String username) { if(archive.getFileUrl() != null ){ s3Service.deleteFile(archive.getFileUrl()); } + favoriteArchiveRepository.deleteAllByArchive(archive); + userArchiveRepository.deleteAllByArchive(archive); archiveRepository.deleteById(archiveId); } diff --git a/src/main/java/kusitms/gallae/service/review/ReviewService.java b/src/main/java/kusitms/gallae/service/review/ReviewService.java index 1cd2b85..072f3fd 100644 --- a/src/main/java/kusitms/gallae/service/review/ReviewService.java +++ b/src/main/java/kusitms/gallae/service/review/ReviewService.java @@ -17,6 +17,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalTime; @@ -24,6 +25,7 @@ import java.util.stream.Collectors; @Service +@Transactional public class ReviewService { @Autowired @@ -112,6 +114,7 @@ public Long editReivew(ReviewEditReq reviewEditReq) { return saveReview.getId(); } + public void deleteReivew(Long reviewId, String username) { Review review = reviewRepository.findById(reviewId).orElse(null); User user = userRepository.findById(Long.valueOf(username)).orElse(null); @@ -121,6 +124,8 @@ public void deleteReivew(Long reviewId, String username) { if(review.getFileUrl() != null ){ s3Service.deleteFile(review.getFileUrl()); } + favoriteReviewRepository.deleteAllByReview(review); + userReviewRepository.deleteAllByReview(review); reviewRepository.deleteById(reviewId); }