From c85200997613eacd6102b13e8196db0eafcc004f Mon Sep 17 00:00:00 2001 From: yunjaeeun Date: Mon, 16 Dec 2024 12:11:02 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Feat:=20=EC=9C=A0=ED=86=B5=EA=B8=B0?= =?UTF-8?q?=ED=95=9C=20=EC=95=8C=EB=9E=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 남은 유통기한 알람 세팅 - 서비스 기능 구현중 - 기능구현 후 로그인에서 비즈니스 로직 이어가도록 수정 Related to: #17 --- .../controller/ingredient/IngredientController.java | 10 ++++++++++ .../ingredient/request/RequestAlertExpirationDate.java | 8 ++++++++ .../response/ResponseAlertExpirationDate.java | 7 +++++++ .../service/ingredient/IngredientService.java | 2 ++ .../service/ingredient/IngredientServiceImpl.java | 10 ++++++++++ 5 files changed, 37 insertions(+) create mode 100644 refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestAlertExpirationDate.java create mode 100644 refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java 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..06b3dff 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 + ) { + ResponseAlertExpirationDate 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..f2c05d3 --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java @@ -0,0 +1,7 @@ +package moja.refrigerator.dto.ingredient.response; + +import lombok.Data; + +@Data +public class ResponseAlertExpirationDate { +} 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..e163085 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); + + ResponseAlertExpirationDate 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..adf985a 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java @@ -180,4 +180,14 @@ public ResponseDeleteIngredientBookmark deleteIngredientBookmark( return response; } } + + @Override + public ResponseAlertExpirationDate alertExpirationDate( + RequestAlertExpirationDate requestAlertExpirationDate) { + // 1. 현재일 찾기 + // 2. 내 냉장고 전채 조회 + // 3. 남은 유통기한 계산 + // 4. 리턴 + return null; + } } From c4e27f31dd7a67148b694e9353ec328223813985 Mon Sep 17 00:00:00 2001 From: yunjaeeun Date: Mon, 16 Dec 2024 17:37:54 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Feat:=20=EC=9C=A0=ED=86=B5=EA=B8=B0?= =?UTF-8?q?=ED=95=9C=20=EC=95=8C=EB=9E=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 남은 유통기한 알람 구현 완료 유통기한이 7일, 3일 남은 상품에 대해서 알람 발송 2. 로그인 시 작동되도록 수정 필요 Related to: #17 --- .../ingredient/IngredientController.java | 4 +- .../response/ResponseAlertExpirationDate.java | 14 +++++++ .../service/ingredient/IngredientService.java | 2 +- .../ingredient/IngredientServiceImpl.java | 37 ++++++++++++++++--- 4 files changed, 49 insertions(+), 8 deletions(-) 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 06b3dff..0333c74 100644 --- a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java +++ b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java @@ -89,10 +89,10 @@ public ResponseEntity deleteIngredientBookmark } @GetMapping("/alert") - public ResponseEntity alertExpirationDate( + public ResponseEntity> alertExpirationDate( @RequestBody RequestAlertExpirationDate requestAlertExpirationDate ) { - ResponseAlertExpirationDate responseAlertExpirationDate = + List responseAlertExpirationDate = ingredientService.alertExpirationDate(requestAlertExpirationDate); return ResponseEntity.status(HttpStatus.OK).body(responseAlertExpirationDate); 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 index f2c05d3..e69430d 100644 --- a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseAlertExpirationDate.java @@ -1,7 +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 e163085..882ac06 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java @@ -21,5 +21,5 @@ List getUsersIngredientBookmarkLists( ResponseDeleteIngredientBookmark deleteIngredientBookmark(RequestDeleteIngredientBookmark requestDeleteBookmark); - ResponseAlertExpirationDate alertExpirationDate(RequestAlertExpirationDate requestAlertExpirationDate); + 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 adf985a..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 @@ -182,12 +181,40 @@ public ResponseDeleteIngredientBookmark deleteIngredientBookmark( } @Override - public ResponseAlertExpirationDate alertExpirationDate( + 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 null; + return responseAlertExpirationDates; } }