From 88a31cc47e522eaab3495b65e7033aafaaa94b1e Mon Sep 17 00:00:00 2001 From: yunjaeeun Date: Fri, 13 Dec 2024 17:48:48 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Feat:=20=EC=9E=AC=EB=A3=8C=20=EC=A6=90?= =?UTF-8?q?=EA=B2=A8=EC=B0=BE=EA=B8=B0=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. UserPk를 받아 사용자가 즐겨찾기 한 재료 조회 Related to: #3 --- .../controller/ingredient/IngredientController.java | 12 ++++++++++++ .../request/RequestIngredientBookmarkLists.java | 8 ++++++++ .../ResponseUsersIngredientBookmarkLists.java | 9 +++++++++ .../ingredient/IngredientBookmarkRepository.java | 3 +++ .../service/ingredient/IngredientService.java | 4 ++++ .../service/ingredient/IngredientServiceImpl.java | 13 +++++++++++++ 6 files changed, 49 insertions(+) create mode 100644 refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestIngredientBookmarkLists.java create mode 100644 refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseUsersIngredientBookmarkLists.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 19bf7af..a02373b 100644 --- a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java +++ b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java @@ -2,9 +2,11 @@ import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; +import moja.refrigerator.dto.ingredient.request.RequestIngredientBookmarkLists; import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; +import moja.refrigerator.dto.ingredient.response.ResponseUsersIngredientBookmarkLists; import moja.refrigerator.service.ingredient.IngredientService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -59,4 +61,14 @@ public ResponseEntity createIngredientBookmark return ResponseEntity.status(HttpStatus.CREATED).body(responseBookmark); } + @GetMapping("/bookmark") + public ResponseEntity> getUsersIngredientBookmarkList( + @RequestBody RequestIngredientBookmarkLists requestBookmarkLists + ) { + List responseBookmarkLists = + ingredientService.getUsersIngredientBookmarkLists(requestBookmarkLists); + + return ResponseEntity.status(HttpStatus.OK).body(responseBookmarkLists); + } + } diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestIngredientBookmarkLists.java b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestIngredientBookmarkLists.java new file mode 100644 index 0000000..7bafd4a --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestIngredientBookmarkLists.java @@ -0,0 +1,8 @@ +package moja.refrigerator.dto.ingredient.request; + +import lombok.Data; + +@Data +public class RequestIngredientBookmarkLists { + private long userPk; +} diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseUsersIngredientBookmarkLists.java b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseUsersIngredientBookmarkLists.java new file mode 100644 index 0000000..868338c --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseUsersIngredientBookmarkLists.java @@ -0,0 +1,9 @@ +package moja.refrigerator.dto.ingredient.response; + +import lombok.Data; +import moja.refrigerator.aggregate.ingredient.IngredientManagement; + +@Data +public class ResponseUsersIngredientBookmarkLists { + private IngredientManagement ingredientManagement; +} diff --git a/refrigerator/src/main/java/moja/refrigerator/repository/ingredient/IngredientBookmarkRepository.java b/refrigerator/src/main/java/moja/refrigerator/repository/ingredient/IngredientBookmarkRepository.java index 90c2e54..987536f 100644 --- a/refrigerator/src/main/java/moja/refrigerator/repository/ingredient/IngredientBookmarkRepository.java +++ b/refrigerator/src/main/java/moja/refrigerator/repository/ingredient/IngredientBookmarkRepository.java @@ -3,5 +3,8 @@ import moja.refrigerator.aggregate.ingredient.IngredientBookmark; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface IngredientBookmarkRepository extends JpaRepository { + List findAllByUser_UserPk(long userPk); } 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 61ba28f..0d54763 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java @@ -2,9 +2,11 @@ import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; +import moja.refrigerator.dto.ingredient.request.RequestIngredientBookmarkLists; import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; +import moja.refrigerator.dto.ingredient.response.ResponseUsersIngredientBookmarkLists; import java.util.List; @@ -18,4 +20,6 @@ public interface IngredientService { List getIngredient(); // 재료 조회 메서드 void updateIngredient(IngredientUpdateRequest request); void deleteIngredient(long ingredientManagementPk); + + List getUsersIngredientBookmarkLists(RequestIngredientBookmarkLists requestBookmarkLists); } 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 5b7b9e1..ebef862 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java @@ -8,9 +8,11 @@ import moja.refrigerator.aggregate.user.User; import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; +import moja.refrigerator.dto.ingredient.request.RequestIngredientBookmarkLists; import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; +import moja.refrigerator.dto.ingredient.response.ResponseUsersIngredientBookmarkLists; import moja.refrigerator.repository.ingredient.IngredientBookmarkRepository; import moja.refrigerator.repository.ingredient.IngredientCategoryRepository; import moja.refrigerator.repository.ingredient.IngredientManagementRepository; @@ -134,5 +136,16 @@ public ResponseRegistIngredientBookmark createIngredientBookmark(RequestRegistIn return mapper.map(ingredientBookmark, ResponseRegistIngredientBookmark.class); } + @Override + public List getUsersIngredientBookmarkLists( + RequestIngredientBookmarkLists requestBookmarkLists) { + List ingredientBookmarkLists = ingredientBookmarkRepository + .findAllByUser_UserPk(requestBookmarkLists.getUserPk()); + + mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + return ingredientBookmarkLists.stream().map(ingredientBookmark -> mapper + .map(ingredientBookmark, ResponseUsersIngredientBookmarkLists.class)) + .collect(Collectors.toList()); + } } From 0b7bb4164c18ff5fba96516a1ea8e609acafa3c9 Mon Sep 17 00:00:00 2001 From: yunjaeeun Date: Fri, 13 Dec 2024 18:06:58 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Feat:=20=EC=9E=AC=EB=A3=8C=20=EC=A6=90?= =?UTF-8?q?=EA=B2=A8=EC=B0=BE=EA=B8=B0=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. ingredientBookmarkPk를 받아 사용자가 즐겨찾기 한 재료 삭제 Resolves: #3 --- .../ingredient/IngredientController.java | 21 ++++++++---- .../RequestDeleteIngredientBookmark.java | 8 +++++ .../ResponseDeleteIngredientBookmark.java | 8 +++++ .../service/ingredient/IngredientService.java | 14 ++++---- .../ingredient/IngredientServiceImpl.java | 34 +++++++++++++++---- 5 files changed, 63 insertions(+), 22 deletions(-) create mode 100644 refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestDeleteIngredientBookmark.java create mode 100644 refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseDeleteIngredientBookmark.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 a02373b..a938468 100644 --- a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java +++ b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java @@ -1,12 +1,7 @@ package moja.refrigerator.controller.ingredient; -import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; -import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; -import moja.refrigerator.dto.ingredient.request.RequestIngredientBookmarkLists; -import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; -import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; -import moja.refrigerator.dto.ingredient.response.ResponseUsersIngredientBookmarkLists; +import moja.refrigerator.dto.ingredient.request.*; +import moja.refrigerator.dto.ingredient.response.*; import moja.refrigerator.service.ingredient.IngredientService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -71,4 +66,16 @@ public ResponseEntity> getUsersIngred return ResponseEntity.status(HttpStatus.OK).body(responseBookmarkLists); } + @DeleteMapping("/bookmark/delete") + public ResponseEntity deleteIngredientBookmark( + @RequestBody RequestDeleteIngredientBookmark requestDeleteBookmark + ) { + + ResponseDeleteIngredientBookmark responseDeleteIngredientBookmark = + ingredientService.deleteIngredientBookmark(requestDeleteBookmark); + + System.out.println(responseDeleteIngredientBookmark.getMessage()); + return ResponseEntity.status(HttpStatus.OK).body(responseDeleteIngredientBookmark); + } + } diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestDeleteIngredientBookmark.java b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestDeleteIngredientBookmark.java new file mode 100644 index 0000000..0d7732d --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/request/RequestDeleteIngredientBookmark.java @@ -0,0 +1,8 @@ +package moja.refrigerator.dto.ingredient.request; + +import lombok.Data; + +@Data +public class RequestDeleteIngredientBookmark { + private long ingredientBookmarkPk; +} diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseDeleteIngredientBookmark.java b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseDeleteIngredientBookmark.java new file mode 100644 index 0000000..6feed8e --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/ingredient/response/ResponseDeleteIngredientBookmark.java @@ -0,0 +1,8 @@ +package moja.refrigerator.dto.ingredient.response; + +import lombok.Data; + +@Data +public class ResponseDeleteIngredientBookmark { + String message; +} 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 0d54763..a69f1e3 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java @@ -1,12 +1,7 @@ package moja.refrigerator.service.ingredient; -import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; -import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; -import moja.refrigerator.dto.ingredient.request.RequestIngredientBookmarkLists; -import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; -import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; -import moja.refrigerator.dto.ingredient.response.ResponseUsersIngredientBookmarkLists; +import moja.refrigerator.dto.ingredient.request.*; +import moja.refrigerator.dto.ingredient.response.*; import java.util.List; @@ -21,5 +16,8 @@ public interface IngredientService { void updateIngredient(IngredientUpdateRequest request); void deleteIngredient(long ingredientManagementPk); - List getUsersIngredientBookmarkLists(RequestIngredientBookmarkLists requestBookmarkLists); + List getUsersIngredientBookmarkLists( + RequestIngredientBookmarkLists requestBookmarkLists); + + ResponseDeleteIngredientBookmark deleteIngredientBookmark(RequestDeleteIngredientBookmark requestDeleteBookmark); } 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 ebef862..ea05b5e 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java @@ -6,13 +6,8 @@ import moja.refrigerator.aggregate.ingredient.IngredientManagement; import moja.refrigerator.aggregate.ingredient.IngredientStorage; import moja.refrigerator.aggregate.user.User; -import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; -import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; -import moja.refrigerator.dto.ingredient.request.RequestIngredientBookmarkLists; -import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; -import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; -import moja.refrigerator.dto.ingredient.response.ResponseUsersIngredientBookmarkLists; +import moja.refrigerator.dto.ingredient.request.*; +import moja.refrigerator.dto.ingredient.response.*; import moja.refrigerator.repository.ingredient.IngredientBookmarkRepository; import moja.refrigerator.repository.ingredient.IngredientCategoryRepository; import moja.refrigerator.repository.ingredient.IngredientManagementRepository; @@ -25,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -148,4 +144,28 @@ public List getUsersIngredientBookmarkList .map(ingredientBookmark, ResponseUsersIngredientBookmarkLists.class)) .collect(Collectors.toList()); } + + @Override + public ResponseDeleteIngredientBookmark deleteIngredientBookmark( + RequestDeleteIngredientBookmark requestDeleteBookmark) { + IngredientBookmark ingredientBookmark = ingredientBookmarkRepository + .findById(requestDeleteBookmark.getIngredientBookmarkPk()) + .orElseThrow(() -> new EntityNotFoundException("즐겨찾기를 찾을 수 없습니다.")); + + ResponseDeleteIngredientBookmark response = new ResponseDeleteIngredientBookmark(); + + try { + ingredientBookmarkRepository.deleteById(requestDeleteBookmark.getIngredientBookmarkPk()); + String message = ingredientBookmark.getIngredientManagement() + .getIngredientName() + " 재료의 즐겨찾기를 삭제했습니다"; + response.setMessage(message); + return response; + } catch (Exception e) { + String message = + ingredientBookmark.getIngredientManagement() + .getIngredientName() + " 재료의 즐겨찾기를 삭제 실패했습니다"; + response.setMessage(message); + return response; + } + } }