From ff7d41c318ec7ab4cd339581a00cb46a1e4e3e53 Mon Sep 17 00:00:00 2001 From: lilloo04 Date: Sun, 18 May 2025 04:18:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20consumeFood=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/food/controller/FoodController.java | 7 +++++-- .../hackathon/domain/food/service/FoodService.java | 2 +- .../domain/food/service/FoodServiceImpl.java | 11 ++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/hackathon/src/main/java/nerdinary/hackathon/domain/food/controller/FoodController.java b/hackathon/src/main/java/nerdinary/hackathon/domain/food/controller/FoodController.java index 5b335a9..37e5994 100644 --- a/hackathon/src/main/java/nerdinary/hackathon/domain/food/controller/FoodController.java +++ b/hackathon/src/main/java/nerdinary/hackathon/domain/food/controller/FoodController.java @@ -104,10 +104,13 @@ public ResponseEntity searchFood( @Operation(summary = "음식 소비(사용)") @PutMapping("/consume") public ResponseEntity consumeFood( - @Parameter(hidden = true) @RequestParam Long foodRegisterId + @Parameter(hidden = true) @JwtValidation Long userId, + @RequestParam Long foodRegisterId ) { - foodService.consumeFood(foodRegisterId); + foodService.consumeFood(userId, foodRegisterId); return ResponseEntity.ok().build(); } + + } \ No newline at end of file diff --git a/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodService.java b/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodService.java index 10d98b2..39bef87 100644 --- a/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodService.java +++ b/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodService.java @@ -13,7 +13,7 @@ public interface FoodService { //List getAllFoodsWithDday(Long userId); 필터링 기능 추가해서 getFilteredFoods로 대체 FoodSearchResponse searchFood(Long userId, String query); - void consumeFood(Long foodRegisterId); + void consumeFood(Long userId, Long foodRegisterId); List getFilteredFoods(Long userId, String storageMethod, boolean isExpiringSoon); } diff --git a/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java b/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java index db2a47f..b013db8 100644 --- a/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java +++ b/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java @@ -96,16 +96,21 @@ public FoodSearchResponse searchFood(Long userId, String query){ @Transactional @Override - public void consumeFood(Long foodRegisterId) { + public void consumeFood(Long userId, Long foodRegisterId) { FoodRegister foodRegister = foodRegisterRepository.findById(foodRegisterId) .orElseThrow(() -> new CustomException(ErrorCode.FOOD_REGISTER_NOT_FOUND)); - foodRegister.consume(); //상태 변경 - //유저 사용 개수 증가 + if (!foodRegister.getUser().getId().equals(userId)) { + throw new CustomException(ErrorCode.FORBIDDEN); // 403 권한 없음 + } + + foodRegister.consume(); + User user = foodRegister.getUser(); user.plusUsedCount(); } + @Transactional public List getAllFoodsWithDday(Long userId) { // User 객체 조회 From 6d59da606aa6048e5f9f77d63470111c396c4e8f Mon Sep 17 00:00:00 2001 From: lilloo04 Date: Sun, 18 May 2025 05:46:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EC=A0=84=EC=B2=B4=20Food=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EC=97=90=EC=84=9C=20id=EB=A5=BC=20response?= =?UTF-8?q?=EB=A1=9C=20=EB=84=98=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hackathon/domain/food/dto/AllFoodListResponse.java | 1 + .../hackathon/domain/food/service/FoodServiceImpl.java | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/hackathon/src/main/java/nerdinary/hackathon/domain/food/dto/AllFoodListResponse.java b/hackathon/src/main/java/nerdinary/hackathon/domain/food/dto/AllFoodListResponse.java index 0547154..510d81b 100644 --- a/hackathon/src/main/java/nerdinary/hackathon/domain/food/dto/AllFoodListResponse.java +++ b/hackathon/src/main/java/nerdinary/hackathon/domain/food/dto/AllFoodListResponse.java @@ -8,6 +8,7 @@ @Getter @AllArgsConstructor public class AllFoodListResponse { + private long foodRegisterId; private String foodName; private String foodCategory; private LocalDate expirationDate; diff --git a/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java b/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java index b013db8..de4f60d 100644 --- a/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java +++ b/hackathon/src/main/java/nerdinary/hackathon/domain/food/service/FoodServiceImpl.java @@ -123,13 +123,14 @@ public List getAllFoodsWithDday(Long userId) { // 응답 DTO 변환 return foodList.stream() .map(foodRegister -> { + long id = foodRegister.getFoodRegisterId(); String name = foodRegister.getFood().getFoodName(); String category = foodRegister.getFood().getFoodCategory(); LocalDate expiration = foodRegister.getExpirationDate(); long daysLeft = expiration != null ? ChronoUnit.DAYS.between(LocalDate.now(), expiration) : -1; - return new AllFoodListResponse(name, category, expiration, daysLeft); + return new AllFoodListResponse(id, name, category, expiration, daysLeft); }) .toList(); } @@ -156,13 +157,14 @@ public List getFilteredFoods(Long userId, String storageMet // 응답 변환 .map(fr -> { + long id = fr.getFoodRegisterId(); String name = fr.getFood().getFoodName(); String category = fr.getFood().getFoodCategory(); LocalDate expiration = fr.getExpirationDate(); long daysLeft = expiration != null ? ChronoUnit.DAYS.between(LocalDate.now(), expiration) : -1; - return new AllFoodListResponse(name, category, expiration, daysLeft); + return new AllFoodListResponse(id, name, category, expiration, daysLeft); }) .toList(); }