diff --git a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java index 7e78ac9..0333c74 100644 --- a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java +++ b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java @@ -88,4 +88,14 @@ public ResponseEntity deleteIngredientBookmark return ResponseEntity.status(HttpStatus.OK).body(responseDeleteIngredientBookmark); } + @GetMapping("/alert") + public ResponseEntity> alertExpirationDate( + @RequestBody RequestAlertExpirationDate requestAlertExpirationDate + ) { + List responseAlertExpirationDate = + ingredientService.alertExpirationDate(requestAlertExpirationDate); + + return ResponseEntity.status(HttpStatus.OK).body(responseAlertExpirationDate); + } + } diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestAlertExpirationDate.java b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestAlertExpirationDate.java new file mode 100644 index 0000000..dec0816 --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestAlertExpirationDate.java @@ -0,0 +1,8 @@ +package moja.refrigerator.dto.ingredient.request; + +import lombok.Data; + +@Data +public class RequestAlertExpirationDate { + private long userPk; +} diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java new file mode 100644 index 0000000..e69430d --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java @@ -0,0 +1,21 @@ +package moja.refrigerator.dto.ingredient.response; + +import lombok.Data; +import moja.refrigerator.aggregate.ingredient.IngredientManagement; + +@Data +public class ResponseAlertExpirationDate { + private long ingredientMyRefrigeratorPk; + private IngredientManagement ingredientManagement; + private float ingredientAmount; + private String expirationDate; + private int remainDate; + + public ResponseAlertExpirationDate(long ingredientMyRefrigeratorPk, IngredientManagement ingredientManagement, float ingredientAmount, String expirationDate, int remainDate) { + this.ingredientMyRefrigeratorPk = ingredientMyRefrigeratorPk; + this.ingredientManagement = ingredientManagement; + this.ingredientAmount = ingredientAmount; + this.expirationDate = expirationDate; + this.remainDate = remainDate; + } +} diff --git a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java index c73c9aa..882ac06 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java @@ -20,4 +20,6 @@ List getUsersIngredientBookmarkLists( RequestIngredientBookmarkLists requestBookmarkLists); ResponseDeleteIngredientBookmark deleteIngredientBookmark(RequestDeleteIngredientBookmark requestDeleteBookmark); + + List alertExpirationDate(RequestAlertExpirationDate requestAlertExpirationDate); } diff --git a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java index 3b25f4f..9842b63 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java @@ -16,11 +16,10 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.Comparator; -import java.util.List; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; -import java.util.Optional; import java.util.stream.Collectors; @Service @@ -180,4 +179,42 @@ public ResponseDeleteIngredientBookmark deleteIngredientBookmark( return response; } } + + @Override + public List alertExpirationDate( + RequestAlertExpirationDate requestAlertExpirationDate) { + // 1. 현재일 찾기 + LocalDate currentDate = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 원하는 포맷 지정 + String dateString = currentDate.format(formatter); + + // 2. 내 냉장고 전채 조회 + List refrigeratorList = ingredientMyRefrigeratorRepository + .findByUserUserPk(requestAlertExpirationDate.getUserPk()); + + List responseAlertExpirationDates = new ArrayList<>(); + // 3. 남은 유통기한 계산 + for (IngredientMyRefrigerator ingredientMyRefrigerator : refrigeratorList) { + LocalDate expirationDate = LocalDate.parse(ingredientMyRefrigerator.getExpirationDate(), formatter); + + long daysUntilExpiration = ChronoUnit.DAYS.between(currentDate, expirationDate); + + if (daysUntilExpiration == 7 || daysUntilExpiration == 3) { + // ResponseAlertExpirationDate 객체 생성 + ResponseAlertExpirationDate response = new ResponseAlertExpirationDate( + ingredientMyRefrigerator.getIngredientMyRefrigeratorPk(), + ingredientMyRefrigerator.getIngredientManagement(), + ingredientMyRefrigerator.getIngredientAmount(), + ingredientMyRefrigerator.getExpirationDate(), + (int) daysUntilExpiration // daysUntilExpiration을 int로 변환 + ); + + // 리스트에 추가 + responseAlertExpirationDates.add(response); + } + + } + // 4. 리턴 + return responseAlertExpirationDates; + } }