diff --git a/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByAllergy.java b/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByAllergy.java index d105139..c24e000 100644 --- a/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByAllergy.java +++ b/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByAllergy.java @@ -25,11 +25,11 @@ public class RawProhibitedByAllergy { private Long id; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "allergy_id",nullable = false) + @JoinColumn(name = "allergy_id") private Allergy allergy; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "raw_id",nullable = false) + @JoinColumn(name = "raw_id") private Raw raw; @Builder diff --git a/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByDisease.java b/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByDisease.java index d1b76b0..f7fd03d 100644 --- a/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByDisease.java +++ b/src/main/java/com/petplate/petplate/medicalcondition/domain/entity/RawProhibitedByDisease.java @@ -25,11 +25,11 @@ public class RawProhibitedByDisease { private Long id; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "disease_id",nullable = false) + @JoinColumn(name = "disease_id") private Disease disease; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "raw_id",nullable = false) + @JoinColumn(name = "raw_id") private Raw raw; @Builder @@ -39,5 +39,4 @@ public RawProhibitedByDisease(Disease disease, Raw raw) { } - } diff --git a/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedFeedResponseDto.java b/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedFeedResponseDto.java index 0a4a4c2..07ef442 100644 --- a/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedFeedResponseDto.java +++ b/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedFeedResponseDto.java @@ -10,16 +10,16 @@ public class ReadDailyBookMarkedFeedResponseDto { private Long dailyBookMarkedFeedId; private String name; - private double serving; - private double kcal; - private double carbonHydrate; - private double protein; - private double fat; - private double calcium; - private double phosphorus; - private double vitaminA; - private double vitaminD; - private double vitaminE; + private Double serving; + private Double kcal; + private Double carbonHydrate; + private Double protein; + private Double fat; + private Double calcium; + private Double phosphorus; + private Double vitaminA; + private Double vitaminD; + private Double vitaminE; public static ReadDailyBookMarkedFeedResponseDto from(DailyBookMarkedFeed dailybookMarkedFeed) { ReadDailyBookMarkedFeedResponseDto response diff --git a/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedPackagedSnackResponseDto.java b/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedPackagedSnackResponseDto.java index 97ad7df..cfbd900 100644 --- a/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedPackagedSnackResponseDto.java +++ b/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedPackagedSnackResponseDto.java @@ -10,16 +10,16 @@ public class ReadDailyBookMarkedPackagedSnackResponseDto { private Long dailyBookMarkedPackagedSnackId; private String name; - private double serving; - private double kcal; - private double carbonHydrate; - private double protein; - private double fat; - private double calcium; - private double phosphorus; - private double vitaminA; - private double vitaminD; - private double vitaminE; + private Double serving; + private Double kcal; + private Double carbonHydrate; + private Double protein; + private Double fat; + private Double calcium; + private Double phosphorus; + private Double vitaminA; + private Double vitaminD; + private Double vitaminE; public static ReadDailyBookMarkedPackagedSnackResponseDto from(DailyBookMarkedPackagedSnack dailyBookMarkedPackagedSnack) { ReadDailyBookMarkedPackagedSnackResponseDto response diff --git a/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedRawResponseDto.java b/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedRawResponseDto.java index 8ced475..a5ce002 100644 --- a/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedRawResponseDto.java +++ b/src/main/java/com/petplate/petplate/petdailymeal/dto/response/ReadDailyBookMarkedRawResponseDto.java @@ -13,16 +13,16 @@ public class ReadDailyBookMarkedRawResponseDto { private Long dailyBookMarkedRawId; private String name; private String description; - private double serving; - private double kcal; - private double carbonHydrate; - private double protein; - private double fat; - private double calcium; - private double phosphorus; - private double vitaminA; - private double vitaminD; - private double vitaminE; + private Double serving; + private Double kcal; + private Double carbonHydrate; + private Double protein; + private Double fat; + private Double calcium; + private Double phosphorus; + private Double vitaminA; + private Double vitaminD; + private Double vitaminE; public static ReadDailyBookMarkedRawResponseDto from(DailyBookMarkedRaw dailybookMarkedRaw) { ReadDailyBookMarkedRawResponseDto response diff --git a/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedFeedService.java b/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedFeedService.java index 1e23abf..c2652aa 100644 --- a/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedFeedService.java +++ b/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedFeedService.java @@ -16,6 +16,7 @@ import com.petplate.petplate.petfood.repository.BookMarkedFeedRepository; import com.petplate.petplate.utils.PetUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +27,7 @@ @Service @Transactional(readOnly = true) @RequiredArgsConstructor +@Slf4j public class DailyBookMarkedFeedService { private final BookMarkedFeedRepository bookMarkedFeedRepository; private final DailyBookMarkedFeedRepository dailyBookMarkedFeedRepository; @@ -120,14 +122,21 @@ public void deleteDailyBookMarkedFeeds(String username, Long petId, Long dailyMe // 삭제한 만큼 dailyMeal에서 영양소 제거 dailyBookMarkedFeeds.forEach(dailyBookMarkedFeed -> { - dailyMeal.subtractKcal(dailyBookMarkedFeed.getBookMarkedFeed().getKcal()); - dailyMeal.subtractNutrient(dailyBookMarkedFeed.getBookMarkedFeed().getNutrient()); + + // bookMarkedFeed가 제거되지 않은 경우 (= "존재하지 않는 음식입니다"가 아닌 경우)만 dailyBookMarkedFeed를 제거 가능 + if (dailyBookMarkedFeed.getBookMarkedFeed() != null) { + dailyMeal.subtractKcal(dailyBookMarkedFeed.getBookMarkedFeed().getKcal()); + dailyMeal.subtractNutrient(dailyBookMarkedFeed.getBookMarkedFeed().getNutrient()); + + // dailyBookMarkedFeed 제거 + dailyBookMarkedFeedRepository.delete(dailyBookMarkedFeed); + } else { + log.info("원인: dailyBookMarkedFeed.getBookMarkedFeed() 메서드가 null을 반환함\n" + + "결과: 해당 dailyBookMarkedFeed를 제거할 수 없음"); + } }); // 영양소 보정 DailyMealUtil.compensatingNutrient(dailyMeal); - - // 전체 삭제 - dailyBookMarkedFeedRepository.deleteAll(dailyBookMarkedFeeds); } } diff --git a/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedPackagedSnackService.java b/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedPackagedSnackService.java index 6d016b5..038b45b 100644 --- a/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedPackagedSnackService.java +++ b/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedPackagedSnackService.java @@ -16,6 +16,7 @@ import com.petplate.petplate.petfood.repository.BookMarkedPackagedSnackRepository; import com.petplate.petplate.utils.PetUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +27,7 @@ @Service @Transactional(readOnly = true) @RequiredArgsConstructor +@Slf4j public class DailyBookMarkedPackagedSnackService { private final BookMarkedPackagedSnackRepository bookMarkedPackagedSnackRepository; private final DailyBookMarkedPackagedSnackRepository dailyBookMarkedPackagedSnackRepository; @@ -46,7 +48,7 @@ public Long createDailyBookMarkedPackagedSnack(String username, Long petId, Crea BookMarkedPackagedSnack bookMarkedPackagedSnack = bookMarkedPackagedSnackRepository.findById(requestDto.getBookMarkedPackagedSnackId()) .orElseThrow(() -> new NotFoundException(ErrorCode.BOOK_MARK_NOT_FOUND)); - DailyMeal dailyMealToday = DailyMealUtil.getDailyMealToday(pet,dailyMealRepository); + DailyMeal dailyMealToday = DailyMealUtil.getDailyMealToday(pet, dailyMealRepository); DailyBookMarkedPackagedSnack dailyBookMarkedPackagedSnack = DailyBookMarkedPackagedSnack.builder() .bookMarkedPackagedSnack(bookMarkedPackagedSnack) @@ -119,14 +121,21 @@ public void deleteDailyBookMarkedPackagedSnacks(String username, Long petId, Lon // 삭제한 만큼 dailyMeal에서 영양소 제거 dailyBookMarkedPackagedSnacks.forEach(dailyBookMarkedPackagedSnack -> { - dailyMeal.subtractKcal(dailyBookMarkedPackagedSnack.getBookMarkedPackagedSnack().getKcal()); - dailyMeal.subtractNutrient(dailyBookMarkedPackagedSnack.getBookMarkedPackagedSnack().getNutrient()); + + // bookMarkedPackagedSnack이 제거되지 않은 경우 (= "존재하지 않는 음식입니다"가 아닌 경우)만 dailyBookMarkedPackagedSnack을 제거 가능 + if (dailyBookMarkedPackagedSnack.getBookMarkedPackagedSnack() != null) { + dailyMeal.subtractKcal(dailyBookMarkedPackagedSnack.getBookMarkedPackagedSnack().getKcal()); + dailyMeal.subtractNutrient(dailyBookMarkedPackagedSnack.getBookMarkedPackagedSnack().getNutrient()); + + // dailyBookMarkedPackagedSnack 제거 + dailyBookMarkedPackagedSnackRepository.delete(dailyBookMarkedPackagedSnack); + } else { + log.info("원인: dailyBookMarkedPackagedSnack.getBookMarkedPackagedSnack() 메서드가 null을 반환함\n" + + "결과: 해당 dailyBookMarkedPackagedSnack을 제거할 수 없음"); + } }); // 영양소 보정 DailyMealUtil.compensatingNutrient(dailyMeal); - - // 전체 삭제 - dailyBookMarkedPackagedSnackRepository.deleteAll(dailyBookMarkedPackagedSnacks); } } diff --git a/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedRawService.java b/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedRawService.java index 0e9298c..3606771 100644 --- a/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedRawService.java +++ b/src/main/java/com/petplate/petplate/petdailymeal/service/DailyBookMarkedRawService.java @@ -17,6 +17,7 @@ import com.petplate.petplate.petfood.repository.BookMarkedRawRepository; import com.petplate.petplate.utils.PetUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,6 +28,7 @@ @Service @Transactional(readOnly = true) @RequiredArgsConstructor +@Slf4j public class DailyBookMarkedRawService { private final DailyMealRepository dailyMealRepository; private final DailyBookMarkedRawRepository dailyBookMarkedRawRepository; @@ -48,7 +50,7 @@ public Long createDailyBookMarkedRaw(String username, Long petId, CreateDailyBoo new NotFoundException(ErrorCode.BOOK_MARK_NOT_FOUND) ); - DailyMeal dailyMealToday = DailyMealUtil.getDailyMealToday(pet,dailyMealRepository); + DailyMeal dailyMealToday = DailyMealUtil.getDailyMealToday(pet, dailyMealRepository); DailyBookMarkedRaw dailyBookMarkedRaw = DailyBookMarkedRaw.builder() .bookMarkedRaw(bookMarkedRaw) @@ -137,14 +139,21 @@ public void deleteDailyBookMarkedRaws(String username, Long petId, Long dailyMea // 삭제한 만큼 dailyMeal에서 영양소 제거 dailyBookMarkedRaws.forEach(dailyBookMarkedRaw -> { - dailyMeal.subtractKcal(dailyBookMarkedRaw.getBookMarkedRaw().getKcal()); - dailyMeal.subtractNutrient(dailyBookMarkedRaw.getBookMarkedRaw().getNutrient()); + + // bookMarkedRaw가 제거되지 않은 경우 (= "존재하지 않는 음식입니다"가 아닌 경우)만 dailyBookMarkedRaw를 제거 가능 + if (dailyBookMarkedRaw.getBookMarkedRaw() != null) { + dailyMeal.subtractKcal(dailyBookMarkedRaw.getBookMarkedRaw().getKcal()); + dailyMeal.subtractNutrient(dailyBookMarkedRaw.getBookMarkedRaw().getNutrient()); + + // dailyBookMarkedRaw 제거 + dailyBookMarkedRawRepository.delete(dailyBookMarkedRaw); + } else { + log.info("원인: dailyBookMarkedRaw.getBookMarkedRaw() 메서드가 null을 반환함\n" + + "결과: 해당 dailyBookMarkedRaw을 제거할 수 없음"); + } }); // 영양소 보정 DailyMealUtil.compensatingNutrient(dailyMeal); - - // 전체 삭제 - dailyBookMarkedRawRepository.deleteAll(dailyBookMarkedRaws); } }