From 467273b51639fe3dd5175db76b8f5770938bd7d7 Mon Sep 17 00:00:00 2001 From: sojungpp Date: Sun, 7 Jul 2024 23:55:35 +0900 Subject: [PATCH 1/9] =?UTF-8?q?#325=20refactor:=20food=20exception=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/dto/assembler/AdminAssembler.java | 6 ++++-- .../food/controller/FoodController.java | 4 ++-- .../icebutler_server/food/entity/FoodCategory.java | 5 +++-- .../food/entity/FoodDeleteStatus.java | 6 ++++-- .../food/exception/BarcodeFoodNotFoundException.java | 7 ------- .../food/exception/DuplicateFoodNameException.java | 5 ----- .../exception/FoodCategoryNotFoundException.java | 7 ------- .../exception/FoodDeleteStatusNotFoundException.java | 7 ------- .../food/exception/FoodNameNotFoundException.java | 5 ----- .../food/service/FoodServiceImpl.java | 8 ++++---- .../global/exception/ReturnCode.java | 12 ++++++++++++ 11 files changed, 29 insertions(+), 43 deletions(-) delete mode 100644 src/main/java/com/example/icebutler_server/food/exception/BarcodeFoodNotFoundException.java delete mode 100644 src/main/java/com/example/icebutler_server/food/exception/DuplicateFoodNameException.java delete mode 100644 src/main/java/com/example/icebutler_server/food/exception/FoodCategoryNotFoundException.java delete mode 100644 src/main/java/com/example/icebutler_server/food/exception/FoodDeleteStatusNotFoundException.java delete mode 100644 src/main/java/com/example/icebutler_server/food/exception/FoodNameNotFoundException.java diff --git a/src/main/java/com/example/icebutler_server/admin/dto/assembler/AdminAssembler.java b/src/main/java/com/example/icebutler_server/admin/dto/assembler/AdminAssembler.java index 93e6ad77..bf4b4475 100644 --- a/src/main/java/com/example/icebutler_server/admin/dto/assembler/AdminAssembler.java +++ b/src/main/java/com/example/icebutler_server/admin/dto/assembler/AdminAssembler.java @@ -3,9 +3,11 @@ import com.example.icebutler_server.admin.dto.request.ModifyFoodRequest; import com.example.icebutler_server.food.entity.Food; import com.example.icebutler_server.food.entity.FoodCategory; -import com.example.icebutler_server.food.exception.DuplicateFoodNameException; +import com.example.icebutler_server.global.exception.BaseException; import org.springframework.stereotype.Component; +import static com.example.icebutler_server.global.exception.ReturnCode.ALREADY_EXIST_FOOD_NAME; + @Component public class AdminAssembler { public Food toUpdateFoodInfo(Food food, ModifyFoodRequest request) { @@ -16,6 +18,6 @@ public Food toUpdateFoodInfo(Food food, ModifyFoodRequest request) { } public void validateFoodName(Food checkFood, String foodName) { - if(checkFood.getFoodName().equals(foodName)) throw new DuplicateFoodNameException(); + if (checkFood.getFoodName().equals(foodName)) throw new BaseException(ALREADY_EXIST_FOOD_NAME); } } diff --git a/src/main/java/com/example/icebutler_server/food/controller/FoodController.java b/src/main/java/com/example/icebutler_server/food/controller/FoodController.java index 4aafe0ad..814ea62e 100644 --- a/src/main/java/com/example/icebutler_server/food/controller/FoodController.java +++ b/src/main/java/com/example/icebutler_server/food/controller/FoodController.java @@ -42,7 +42,7 @@ public class FoodController { @Operation(summary = "식품 검색", description = "식품을 검색한다.") @SwaggerApiSuccess(implementation = FoodRes.class) - @ApiResponse(responseCode = "400", description = "존재하지 않는 카테고리입니다.", + @ApiResponse(responseCode = "404", description = "(F0000)존재하지 않는 카테고리입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) @GetMapping("") public ResponseCustom> searchFood(@Parameter(name = "category", description = "식품 카테고리") @RequestParam(required = false) String category, @@ -55,7 +55,7 @@ public ResponseCustom> searchFood(@Parameter(name = "category", de @Operation(summary = "식품 바코드 조회", description = "바코드 번호로 식품을 조회한다.") @SwaggerApiSuccess(implementation = BarcodeFoodRes.class) - @ApiResponse(responseCode = "400", description = "해당 바코드의 상품을 찾을 수 없습니다.", + @ApiResponse(responseCode = "404", description = "(F00001)해당 바코드의 상품을 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) @GetMapping("/barcode") public ResponseCustom searchByBarcode(@RequestParam String code_num) throws IOException, org.json.simple.parser.ParseException { diff --git a/src/main/java/com/example/icebutler_server/food/entity/FoodCategory.java b/src/main/java/com/example/icebutler_server/food/entity/FoodCategory.java index 54e81881..3e7a5228 100644 --- a/src/main/java/com/example/icebutler_server/food/entity/FoodCategory.java +++ b/src/main/java/com/example/icebutler_server/food/entity/FoodCategory.java @@ -1,10 +1,11 @@ package com.example.icebutler_server.food.entity; -import com.example.icebutler_server.food.exception.FoodCategoryNotFoundException; +import com.example.icebutler_server.global.exception.BaseException; import lombok.Getter; import java.util.Arrays; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_FOOD_CATEGORY; import static com.example.icebutler_server.global.util.Constant.Food.ICON_EXTENSION; import static com.example.icebutler_server.global.util.Constant.Food.IMG_FOLDER; @@ -33,7 +34,7 @@ public String getImage() { public static FoodCategory getFoodCategoryByName(String name){ return Arrays.stream(FoodCategory.values()) .filter(r -> r.getName().equals(name)) - .findAny().orElseThrow(FoodCategoryNotFoundException::new); + .findAny().orElseThrow(() -> new BaseException(NOT_FOUND_FOOD_CATEGORY)); } } diff --git a/src/main/java/com/example/icebutler_server/food/entity/FoodDeleteStatus.java b/src/main/java/com/example/icebutler_server/food/entity/FoodDeleteStatus.java index e5325957..46faa532 100644 --- a/src/main/java/com/example/icebutler_server/food/entity/FoodDeleteStatus.java +++ b/src/main/java/com/example/icebutler_server/food/entity/FoodDeleteStatus.java @@ -1,10 +1,12 @@ package com.example.icebutler_server.food.entity; -import com.example.icebutler_server.food.exception.FoodDeleteStatusNotFoundException; +import com.example.icebutler_server.global.exception.BaseException; import lombok.Getter; import java.util.Arrays; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_FOOD_DELETE_STATUS; + @Getter public enum FoodDeleteStatus { DISCARD("폐기"), @@ -19,6 +21,6 @@ private FoodDeleteStatus(String name) { public static FoodDeleteStatus getFoodDeleteStatusByName(String name){ return Arrays.stream(FoodDeleteStatus.values()) .filter(r -> r.getName().equals(name)) - .findAny().orElseThrow(FoodDeleteStatusNotFoundException::new); + .findAny().orElseThrow(() -> new BaseException(NOT_FOUND_FOOD_DELETE_STATUS)); } } diff --git a/src/main/java/com/example/icebutler_server/food/exception/BarcodeFoodNotFoundException.java b/src/main/java/com/example/icebutler_server/food/exception/BarcodeFoodNotFoundException.java deleted file mode 100644 index 4df93761..00000000 --- a/src/main/java/com/example/icebutler_server/food/exception/BarcodeFoodNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.food.exception; - -public class BarcodeFoodNotFoundException extends RuntimeException { - public BarcodeFoodNotFoundException(){ - super("해당 바코드의 상품을 찾을 수 없습니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/food/exception/DuplicateFoodNameException.java b/src/main/java/com/example/icebutler_server/food/exception/DuplicateFoodNameException.java deleted file mode 100644 index 186eec6c..00000000 --- a/src/main/java/com/example/icebutler_server/food/exception/DuplicateFoodNameException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.food.exception; - -public class DuplicateFoodNameException extends RuntimeException { - public DuplicateFoodNameException() {super("중복된 음식 이름입니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/food/exception/FoodCategoryNotFoundException.java b/src/main/java/com/example/icebutler_server/food/exception/FoodCategoryNotFoundException.java deleted file mode 100644 index b859dcdf..00000000 --- a/src/main/java/com/example/icebutler_server/food/exception/FoodCategoryNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.food.exception; - -public class FoodCategoryNotFoundException extends RuntimeException { - public FoodCategoryNotFoundException(){ - super("존재하지 않는 카테고리입니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/food/exception/FoodDeleteStatusNotFoundException.java b/src/main/java/com/example/icebutler_server/food/exception/FoodDeleteStatusNotFoundException.java deleted file mode 100644 index f831f61a..00000000 --- a/src/main/java/com/example/icebutler_server/food/exception/FoodDeleteStatusNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.food.exception; - -public class FoodDeleteStatusNotFoundException extends RuntimeException { - public FoodDeleteStatusNotFoundException(){ - super("존재하지 않는 식품삭제 타입입니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/food/exception/FoodNameNotFoundException.java b/src/main/java/com/example/icebutler_server/food/exception/FoodNameNotFoundException.java deleted file mode 100644 index abc7aae9..00000000 --- a/src/main/java/com/example/icebutler_server/food/exception/FoodNameNotFoundException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.food.exception; - -public class FoodNameNotFoundException extends RuntimeException { - public FoodNameNotFoundException() {super("잘못된 음식 이름 입력값입니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java b/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java index 9f1e1dac..d06afec2 100644 --- a/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java @@ -5,8 +5,8 @@ import com.example.icebutler_server.food.dto.response.BarcodeFoodRes; import com.example.icebutler_server.food.dto.response.FoodRes; import com.example.icebutler_server.food.entity.FoodCategory; -import com.example.icebutler_server.food.exception.BarcodeFoodNotFoundException; import com.example.icebutler_server.food.repository.FoodRepository; +import com.example.icebutler_server.global.exception.BaseException; import lombok.RequiredArgsConstructor; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -21,11 +21,11 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.stream.Collectors; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_BARCODE_FOOD; + @RequiredArgsConstructor @Transactional(readOnly = true) @Service @@ -82,7 +82,7 @@ private String callBarcodeApi(String barcodeNum) throws IOException, ParseExcept JSONObject obj = getJsonObjectByParser(sb); JSONObject result = (JSONObject) obj.get("I2570"); JSONArray row = (JSONArray) result.get("row"); - if (row == null) throw new BarcodeFoodNotFoundException(); + if (row == null) throw new BaseException(NOT_FOUND_BARCODE_FOOD); JSONObject data = (JSONObject) row.get(0); return (String) data.get("PRDT_NM"); } diff --git a/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java b/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java index 9e25177d..33e77670 100644 --- a/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java +++ b/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java @@ -12,6 +12,18 @@ public enum ReturnCode { // 성공 SUCCESS("S0000", HttpStatus.OK, "요청에 성공했습니다."), + // Food + NOT_FOUND_FOOD_CATEGORY("F0000", HttpStatus.NOT_FOUND, "존재하지 않는 카테고리입니다."), + NOT_FOUND_BARCODE_FOOD("F0001", HttpStatus.NOT_FOUND, "해당 바코드의 상품을 찾을 수 없습니다."), + ALREADY_EXIST_FOOD_NAME("F0002", HttpStatus.CONFLICT, "중복된 음식 이름입니다."), + NOT_FOUND_FOOD_DELETE_STATUS("F0003", HttpStatus.NOT_FOUND, "존재하지 않는 식품삭제 타입입니다."), + + + + + + + // 서버 에러 INTERNAL_SERVER_ERROR("E0000", HttpStatus.INTERNAL_SERVER_ERROR, "서버 에레입니다."), ; From e2960eb9716ccc35abee080771bd7d93f2474685 Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:03:28 +0900 Subject: [PATCH 2/9] =?UTF-8?q?#325=20refactor:=20foodAssembler=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/service/CartServiceImpl.java | 7 ++- .../food/controller/FoodController.java | 4 +- .../food/dto/assembler/FoodAssembler.java | 50 ------------------- .../icebutler_server/food/entity/Food.java | 38 ++++++++++++++ .../food/service/FoodServiceImpl.java | 5 +- .../fridge/service/FridgeServiceImpl.java | 6 +-- 6 files changed, 46 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/com/example/icebutler_server/food/dto/assembler/FoodAssembler.java diff --git a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java index 9c1cf780..d36258b4 100644 --- a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java @@ -10,7 +10,6 @@ import com.example.icebutler_server.cart.exception.CartNotFoundException; import com.example.icebutler_server.cart.repository.CartFoodRepository; import com.example.icebutler_server.cart.repository.CartRepository; -import com.example.icebutler_server.food.dto.assembler.FoodAssembler; import com.example.icebutler_server.food.entity.Food; import com.example.icebutler_server.food.entity.FoodCategory; import com.example.icebutler_server.food.repository.FoodRepository; @@ -28,7 +27,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; @@ -43,7 +43,6 @@ public class CartServiceImpl implements CartService { private final FridgeRepository fridgeRepository; private final FridgeUserRepository fridgeUserRepository; private final CartRepository cartRepository; - private final FoodAssembler foodAssembler; private final CartFoodAssembler cartFoodAssembler; private final AmazonSQSSender amazonSQSSender; @@ -74,7 +73,7 @@ public void addCartFoods(Long fridgeIdx, AddFoodToCartRequest request, Long user for(AddFoodRequest foodRequest : request.getFoodRequests()) { Food food = this.foodRepository.findByFoodNameAndFoodCategory(foodRequest.getFoodName(), FoodCategory.getFoodCategoryByName(foodRequest.getFoodCategory())); if(food == null) { - food = this.foodRepository.save(foodAssembler.toEntity(foodRequest)); + food = this.foodRepository.save(Food.toEntity(foodRequest)); amazonSQSSender.sendMessage(FoodData.toDto(food)); } foodRequests.add(food); diff --git a/src/main/java/com/example/icebutler_server/food/controller/FoodController.java b/src/main/java/com/example/icebutler_server/food/controller/FoodController.java index 814ea62e..1fbfac09 100644 --- a/src/main/java/com/example/icebutler_server/food/controller/FoodController.java +++ b/src/main/java/com/example/icebutler_server/food/controller/FoodController.java @@ -1,7 +1,6 @@ package com.example.icebutler_server.food.controller; import com.example.icebutler_server.cart.dto.request.AddFoodRequest; -import com.example.icebutler_server.food.dto.assembler.FoodAssembler; import com.example.icebutler_server.food.dto.response.BarcodeFoodRes; import com.example.icebutler_server.food.dto.response.FoodRes; import com.example.icebutler_server.food.entity.Food; @@ -38,7 +37,6 @@ public class FoodController { private final AmazonSQSSender amazonSQSSender; private final FoodRepository foodRepository; - private final FoodAssembler foodAssembler; @Operation(summary = "식품 검색", description = "식품을 검색한다.") @SwaggerApiSuccess(implementation = FoodRes.class) @@ -69,7 +67,7 @@ public void hihiTest() { addFoodRequest.setFoodName("맛없는 고기"); addFoodRequest.setFoodCategory("육류"); - Food food = this.foodRepository.save(foodAssembler.toEntity(addFoodRequest)); + Food food = this.foodRepository.save(Food.toEntity(addFoodRequest)); FoodData foodData = FoodData.toDto(food); amazonSQSSender.sendMessage(FoodData.toDto(food)); } diff --git a/src/main/java/com/example/icebutler_server/food/dto/assembler/FoodAssembler.java b/src/main/java/com/example/icebutler_server/food/dto/assembler/FoodAssembler.java deleted file mode 100644 index 76a538a5..00000000 --- a/src/main/java/com/example/icebutler_server/food/dto/assembler/FoodAssembler.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.example.icebutler_server.food.dto.assembler; - -import com.example.icebutler_server.cart.dto.request.AddFoodRequest; -import com.example.icebutler_server.food.dto.request.FoodReq; -import com.example.icebutler_server.food.entity.Food; -import com.example.icebutler_server.food.entity.FoodCategory; -import com.example.icebutler_server.fridge.dto.request.FridgeFoodReq; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.UUID; - -import static com.example.icebutler_server.global.util.Constant.Food.*; - -@Component -@RequiredArgsConstructor -public class FoodAssembler { - - public Food toEntity(FoodReq food){ - return Food.builder() - .foodName(food.getFoodName()) - .foodImgKey(food.getFoodImgKey()) - // TODO 큐에서 전달 받을 때 category value 값을 받아서 우선 변경, 해당 부분 통일 필요 - .foodCategory(FoodCategory.valueOf(food.getFoodCategory())) - .uuid(food.getUuid()) - .build(); - } - - public Food toEntity(FridgeFoodReq request) { - FoodCategory foodCategory = FoodCategory.getFoodCategoryByName(request.getFoodCategory()); - String foodImageKey = IMG_FOLDER + foodCategory.toString() + ICON_EXTENSION; - return Food.builder() - .foodName(request.getFoodName()) - .foodCategory(FoodCategory.getFoodCategoryByName(request.getFoodCategory())) - .foodImgKey(foodImageKey) - .uuid(UUID.randomUUID()) - .build(); - } - - public Food toEntity(AddFoodRequest request) { - FoodCategory foodCategory = FoodCategory.getFoodCategoryByName(request.getFoodCategory()); - String foodImageKey = IMG_FOLDER + foodCategory.toString() + ICON_EXTENSION; - return Food.builder() - .foodName(request.getFoodName()) - .foodImgKey(foodImageKey) - .foodCategory(foodCategory) - .uuid(UUID.randomUUID()) - .build(); - } -} diff --git a/src/main/java/com/example/icebutler_server/food/entity/Food.java b/src/main/java/com/example/icebutler_server/food/entity/Food.java index 65be8d8a..eee17065 100644 --- a/src/main/java/com/example/icebutler_server/food/entity/Food.java +++ b/src/main/java/com/example/icebutler_server/food/entity/Food.java @@ -1,6 +1,9 @@ package com.example.icebutler_server.food.entity; import com.example.icebutler_server.admin.dto.request.ModifyFoodRequest; +import com.example.icebutler_server.cart.dto.request.AddFoodRequest; +import com.example.icebutler_server.food.dto.request.FoodReq; +import com.example.icebutler_server.fridge.dto.request.FridgeFoodReq; import com.example.icebutler_server.global.entity.BaseEntity; import com.example.icebutler_server.global.entityListener.FoodEntityListener; import com.example.icebutler_server.global.util.AwsS3ImageUrlUtil; @@ -15,6 +18,9 @@ import javax.persistence.*; import java.util.UUID; +import static com.example.icebutler_server.global.util.Constant.Food.ICON_EXTENSION; +import static com.example.icebutler_server.global.util.Constant.Food.IMG_FOLDER; + @NoArgsConstructor(access= AccessLevel.PROTECTED) @Getter @Entity @@ -60,5 +66,37 @@ public void toUpdateName(String foodName) { public void toUpdateCategory(FoodCategory foodCategory) { this.foodCategory = foodCategory; } + + public static Food toEntity(FoodReq request) { + return Food.builder() + .foodName(request.getFoodName()) + .foodImgKey(request.getFoodImgKey()) + // TODO 큐에서 전달 받을 때 category value 값을 받아서 우선 변경, 해당 부분 통일 필요 + .foodCategory(FoodCategory.valueOf(request.getFoodCategory())) + .uuid(request.getUuid()) + .build(); + } + + public static Food toEntity(FridgeFoodReq request) { + FoodCategory foodCategory = FoodCategory.getFoodCategoryByName(request.getFoodCategory()); + String foodImageKey = IMG_FOLDER + foodCategory.toString() + ICON_EXTENSION; + return Food.builder() + .foodName(request.getFoodName()) + .foodCategory(FoodCategory.getFoodCategoryByName(request.getFoodCategory())) + .foodImgKey(foodImageKey) + .uuid(UUID.randomUUID()) + .build(); + } + + public static Food toEntity(AddFoodRequest request) { + FoodCategory foodCategory = FoodCategory.getFoodCategoryByName(request.getFoodCategory()); + String foodImageKey = IMG_FOLDER + foodCategory.toString() + ICON_EXTENSION; + return Food.builder() + .foodName(request.getFoodName()) + .foodImgKey(foodImageKey) + .foodCategory(foodCategory) + .uuid(UUID.randomUUID()) + .build(); + } } diff --git a/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java b/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java index d06afec2..9e06a6d4 100644 --- a/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/food/service/FoodServiceImpl.java @@ -1,9 +1,9 @@ package com.example.icebutler_server.food.service; -import com.example.icebutler_server.food.dto.assembler.FoodAssembler; import com.example.icebutler_server.food.dto.request.FoodReq; import com.example.icebutler_server.food.dto.response.BarcodeFoodRes; import com.example.icebutler_server.food.dto.response.FoodRes; +import com.example.icebutler_server.food.entity.Food; import com.example.icebutler_server.food.entity.FoodCategory; import com.example.icebutler_server.food.repository.FoodRepository; import com.example.icebutler_server.global.exception.BaseException; @@ -35,12 +35,11 @@ public class FoodServiceImpl implements FoodService{ String serviceKey; private final FoodRepository foodRepository; - private final FoodAssembler foodAssembler; @Transactional @Override public void addFood(FoodReq foodReq) { - this.foodRepository.save(this.foodAssembler.toEntity(foodReq)); + this.foodRepository.save(Food.toEntity(foodReq)); } @Override diff --git a/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java b/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java index 65506ad1..8fa4e85a 100644 --- a/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java @@ -3,7 +3,6 @@ import com.example.icebutler_server.alarm.service.NotificationServiceImpl; import com.example.icebutler_server.cart.dto.assembler.CartAssembler; import com.example.icebutler_server.cart.repository.CartRepository; -import com.example.icebutler_server.food.dto.assembler.FoodAssembler; import com.example.icebutler_server.food.entity.Food; import com.example.icebutler_server.food.entity.FoodCategory; import com.example.icebutler_server.food.entity.FoodDeleteStatus; @@ -51,7 +50,6 @@ public class FridgeServiceImpl implements FridgeService { private final FridgeAssembler fridgeAssembler; private final FridgeFoodAssembler fridgeFoodAssembler; - private final FoodAssembler foodAssembler; private final CartAssembler cartAssembler; private final AmazonSQSSender amazonSQSSender; @@ -211,7 +209,7 @@ public void addFridgeFood(FridgeFoodsReq fridgeFoodsReq, Long fridgeIdx, Long us } Food food = foodRepository.findByFoodName(fridgeFoodReq.getFoodName()) .orElseGet(() -> { - Food save = foodRepository.save(foodAssembler.toEntity(fridgeFoodReq)); + Food save = foodRepository.save(Food.toEntity(fridgeFoodReq)); amazonSQSSender.sendMessage(FoodData.toDto(save)); return save; }); @@ -236,7 +234,7 @@ public void modifyFridgeFood(Long fridgeIdx, Long fridgeFoodIdx, FridgeFoodReq f if (!modifyFridgeFood.getFood().getFoodName().equals(fridgeFoodReq.getFoodName())) { Food food = this.foodRepository.findByFoodName(fridgeFoodReq.getFoodName()) .orElseGet(() -> { - Food save = foodRepository.save(foodAssembler.toEntity(fridgeFoodReq)); + Food save = foodRepository.save(Food.toEntity(fridgeFoodReq)); amazonSQSSender.sendMessage(FoodData.toDto(save)); return save; }); From 7233f6ee65089eb161b8f0f465bcc49ed5334925 Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:06:11 +0900 Subject: [PATCH 3/9] =?UTF-8?q?#325=20refactor:=20cart=20exception=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/exception/CartFoodNotFoundException.java | 7 ------- .../cart/exception/CartNotFoundException.java | 8 -------- .../icebutler_server/cart/service/CartServiceImpl.java | 6 ++++-- .../icebutler_server/global/exception/ReturnCode.java | 3 +++ 4 files changed, 7 insertions(+), 17 deletions(-) delete mode 100644 src/main/java/com/example/icebutler_server/cart/exception/CartFoodNotFoundException.java delete mode 100644 src/main/java/com/example/icebutler_server/cart/exception/CartNotFoundException.java diff --git a/src/main/java/com/example/icebutler_server/cart/exception/CartFoodNotFoundException.java b/src/main/java/com/example/icebutler_server/cart/exception/CartFoodNotFoundException.java deleted file mode 100644 index 51f2e68b..00000000 --- a/src/main/java/com/example/icebutler_server/cart/exception/CartFoodNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.cart.exception; - -public class CartFoodNotFoundException extends RuntimeException { - public CartFoodNotFoundException(){ - super("요청한 idx를 가진 CartFood를 찾을 수 없습니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/cart/exception/CartNotFoundException.java b/src/main/java/com/example/icebutler_server/cart/exception/CartNotFoundException.java deleted file mode 100644 index 4264e8a5..00000000 --- a/src/main/java/com/example/icebutler_server/cart/exception/CartNotFoundException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.icebutler_server.cart.exception; - - -public class CartNotFoundException extends RuntimeException { - public CartNotFoundException(){ - super("요청한 idx를 가진 장바구니를 찾을 수 없습니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java index d36258b4..6d898895 100644 --- a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java @@ -7,7 +7,6 @@ import com.example.icebutler_server.cart.dto.response.CartResponse; import com.example.icebutler_server.cart.entity.Cart; import com.example.icebutler_server.cart.entity.CartFood; -import com.example.icebutler_server.cart.exception.CartNotFoundException; import com.example.icebutler_server.cart.repository.CartFoodRepository; import com.example.icebutler_server.cart.repository.CartRepository; import com.example.icebutler_server.food.entity.Food; @@ -18,6 +17,7 @@ import com.example.icebutler_server.fridge.exception.FridgeUserNotFoundException; import com.example.icebutler_server.fridge.repository.FridgeRepository; import com.example.icebutler_server.fridge.repository.FridgeUserRepository; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.sqs.AmazonSQSSender; import com.example.icebutler_server.global.sqs.FoodData; import com.example.icebutler_server.user.entity.User; @@ -31,6 +31,8 @@ import java.util.List; import java.util.stream.Collectors; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_CART; + @RequiredArgsConstructor @Transactional(readOnly = true) @@ -107,6 +109,6 @@ private Cart getCart(Long userIdx, Long fridgeIdx) { User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); Fridge fridge = fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); fridgeUserRepository.findByUserAndFridgeAndIsEnable(user, fridge, true).orElseThrow(FridgeUserNotFoundException::new); - return cartRepository.findByFridge_IdAndIsEnable(fridgeIdx, true).orElseThrow(CartNotFoundException::new); + return cartRepository.findByFridge_IdAndIsEnable(fridgeIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_CART)); } } diff --git a/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java b/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java index 33e77670..a770f149 100644 --- a/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java +++ b/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java @@ -18,6 +18,9 @@ public enum ReturnCode { ALREADY_EXIST_FOOD_NAME("F0002", HttpStatus.CONFLICT, "중복된 음식 이름입니다."), NOT_FOUND_FOOD_DELETE_STATUS("F0003", HttpStatus.NOT_FOUND, "존재하지 않는 식품삭제 타입입니다."), + // Cart + NOT_FOUND_CART("C0000", HttpStatus.NOT_FOUND, "장바구니를 찾을 수 없습니다."), + From e0101225b13aa00dcaaac7b86f7149ea44b2c79f Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:10:12 +0900 Subject: [PATCH 4/9] =?UTF-8?q?#325=20refactor:=20cartAssembler=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/dto/assembler/CartAssembler.java | 15 --------------- .../cart/dto/assembler/CartFoodAssembler.java | 17 ----------------- .../icebutler_server/cart/entity/Cart.java | 5 +++++ .../icebutler_server/cart/entity/CartFood.java | 6 ++++++ .../cart/service/CartServiceImpl.java | 4 +--- .../fridge/service/FridgeServiceImpl.java | 5 ++--- 6 files changed, 14 insertions(+), 38 deletions(-) delete mode 100644 src/main/java/com/example/icebutler_server/cart/dto/assembler/CartAssembler.java delete mode 100644 src/main/java/com/example/icebutler_server/cart/dto/assembler/CartFoodAssembler.java diff --git a/src/main/java/com/example/icebutler_server/cart/dto/assembler/CartAssembler.java b/src/main/java/com/example/icebutler_server/cart/dto/assembler/CartAssembler.java deleted file mode 100644 index eb18c46f..00000000 --- a/src/main/java/com/example/icebutler_server/cart/dto/assembler/CartAssembler.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.icebutler_server.cart.dto.assembler; - -import com.example.icebutler_server.cart.entity.Cart; -import com.example.icebutler_server.fridge.entity.Fridge; -import org.springframework.stereotype.Component; - -@Component -public class CartAssembler { - - public Cart toEntity(Fridge fridge) { - return Cart.builder() - .fridge(fridge) - .build(); - } -} diff --git a/src/main/java/com/example/icebutler_server/cart/dto/assembler/CartFoodAssembler.java b/src/main/java/com/example/icebutler_server/cart/dto/assembler/CartFoodAssembler.java deleted file mode 100644 index 9dd360de..00000000 --- a/src/main/java/com/example/icebutler_server/cart/dto/assembler/CartFoodAssembler.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.icebutler_server.cart.dto.assembler; - -import com.example.icebutler_server.cart.entity.Cart; -import com.example.icebutler_server.cart.entity.CartFood; -import com.example.icebutler_server.food.entity.Food; -import org.springframework.stereotype.Component; - -@Component -public class CartFoodAssembler { - - public CartFood toEntity(Cart cart, Food food) { - return CartFood.builder() - .cart(cart) - .food(food) - .build(); - } -} diff --git a/src/main/java/com/example/icebutler_server/cart/entity/Cart.java b/src/main/java/com/example/icebutler_server/cart/entity/Cart.java index 0e9317ea..822eca5e 100644 --- a/src/main/java/com/example/icebutler_server/cart/entity/Cart.java +++ b/src/main/java/com/example/icebutler_server/cart/entity/Cart.java @@ -31,4 +31,9 @@ public Cart(Fridge fridge) { this.fridge = fridge; } + public static Cart toEntity(Fridge fridge) { + return Cart.builder() + .fridge(fridge) + .build(); + } } diff --git a/src/main/java/com/example/icebutler_server/cart/entity/CartFood.java b/src/main/java/com/example/icebutler_server/cart/entity/CartFood.java index 648484e4..e6ca99dd 100644 --- a/src/main/java/com/example/icebutler_server/cart/entity/CartFood.java +++ b/src/main/java/com/example/icebutler_server/cart/entity/CartFood.java @@ -34,4 +34,10 @@ public CartFood(Food food, Cart cart) { this.cart = cart; } + public static CartFood toEntity(Cart cart, Food food) { + return CartFood.builder() + .cart(cart) + .food(food) + .build(); + } } diff --git a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java index 6d898895..b7b52212 100644 --- a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java @@ -1,6 +1,5 @@ package com.example.icebutler_server.cart.service; -import com.example.icebutler_server.cart.dto.assembler.CartFoodAssembler; import com.example.icebutler_server.cart.dto.request.AddFoodRequest; import com.example.icebutler_server.cart.dto.request.AddFoodToCartRequest; import com.example.icebutler_server.cart.dto.request.RemoveFoodFromCartRequest; @@ -45,7 +44,6 @@ public class CartServiceImpl implements CartService { private final FridgeRepository fridgeRepository; private final FridgeUserRepository fridgeUserRepository; private final CartRepository cartRepository; - private final CartFoodAssembler cartFoodAssembler; private final AmazonSQSSender amazonSQSSender; // 장바구니 식품 조회 @@ -90,7 +88,7 @@ public void addCartFoods(Long fridgeIdx, AddFoodToCartRequest request, Long user for (Long foodInIdx : foodsInNowCart) if(foodInIdx.equals(f.getId())) return false; return true; }) - .map((food) -> cartFoodAssembler.toEntity(cart, food)) + .map((food) -> CartFood.toEntity(cart, food)) .collect(Collectors.toList()); cartFoodRepository.saveAll(cartFoods); diff --git a/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java b/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java index 8fa4e85a..7285fb7f 100644 --- a/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java @@ -1,7 +1,7 @@ package com.example.icebutler_server.fridge.service; import com.example.icebutler_server.alarm.service.NotificationServiceImpl; -import com.example.icebutler_server.cart.dto.assembler.CartAssembler; +import com.example.icebutler_server.cart.entity.Cart; import com.example.icebutler_server.cart.repository.CartRepository; import com.example.icebutler_server.food.entity.Food; import com.example.icebutler_server.food.entity.FoodCategory; @@ -50,7 +50,6 @@ public class FridgeServiceImpl implements FridgeService { private final FridgeAssembler fridgeAssembler; private final FridgeFoodAssembler fridgeFoodAssembler; - private final CartAssembler cartAssembler; private final AmazonSQSSender amazonSQSSender; private final NotificationServiceImpl alarmService; @@ -88,7 +87,7 @@ public Long registerFridge(FridgeRegisterReq registerFridgeReq, Long ownerIdx) { fridgeUserRepository.saveAll(fridgeUsers); // fridge - cart 연관관계 추가 - cartRepository.save(cartAssembler.toEntity(fridge)); + cartRepository.save(Cart.toEntity(fridge)); users.forEach(f -> { try { From 0534feb09f071099492a7e245be2a5b941190a64 Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:40:37 +0900 Subject: [PATCH 5/9] =?UTF-8?q?#325=20refactor:=20user=20exception=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/AdminServiceImpl.java | 25 ++++++------ .../cart/service/CartServiceImpl.java | 4 +- .../fridge/service/FridgeServiceImpl.java | 38 ++++++++++--------- .../global/exception/ReturnCode.java | 16 +++++++- .../global/resolver/AdminResolver.java | 6 ++- .../global/resolver/LoginResolver.java | 6 ++- .../global/util/TokenUtils.java | 11 +++--- .../user/controller/UserAuthController.java | 22 +++++------ .../user/controller/UserController.java | 16 ++++---- .../exception/AccessDeniedUserException.java | 5 --- .../AlreadyExistNickNameException.java | 5 --- .../AlreadyWithdrawUserException.java | 7 ---- .../AuthAnnotationIsNowhereException.java | 6 --- .../InvalidUserNickNameException.java | 7 ---- .../InvalidUserProfileImgKeyException.java | 5 --- .../ProviderMissingValueException.java | 5 --- .../exception/TokenExpirationException.java | 8 ---- .../UserEmailMissingValueException.java | 5 --- .../UserNicknameNotFoundException.java | 8 ---- .../user/exception/UserNotFoundException.java | 7 ---- .../user/service/UserServiceImpl.java | 25 ++++++------ 21 files changed, 98 insertions(+), 139 deletions(-) delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/AccessDeniedUserException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/AlreadyExistNickNameException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/AlreadyWithdrawUserException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/AuthAnnotationIsNowhereException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/InvalidUserNickNameException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/InvalidUserProfileImgKeyException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/ProviderMissingValueException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/TokenExpirationException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/UserEmailMissingValueException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/UserNicknameNotFoundException.java delete mode 100644 src/main/java/com/example/icebutler_server/user/exception/UserNotFoundException.java diff --git a/src/main/java/com/example/icebutler_server/admin/service/AdminServiceImpl.java b/src/main/java/com/example/icebutler_server/admin/service/AdminServiceImpl.java index a460c3a3..8b195d34 100644 --- a/src/main/java/com/example/icebutler_server/admin/service/AdminServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/admin/service/AdminServiceImpl.java @@ -2,37 +2,40 @@ import com.example.icebutler_server.admin.dto.assembler.AdminAssembler; -import com.example.icebutler_server.admin.dto.request.*; +import com.example.icebutler_server.admin.dto.request.JoinRequest; +import com.example.icebutler_server.admin.dto.request.LoginRequest; +import com.example.icebutler_server.admin.dto.request.ModifyFoodRequest; import com.example.icebutler_server.admin.dto.response.AdminResponse; -import com.example.icebutler_server.admin.dto.response.SearchFoodsResponse; -import com.example.icebutler_server.admin.exception.AlreadyExistEmailException; -import com.example.icebutler_server.admin.exception.FoodNotFoundException; -import com.example.icebutler_server.food.entity.Food; -import com.example.icebutler_server.food.repository.FoodRepository; import com.example.icebutler_server.admin.dto.response.PostAdminRes; +import com.example.icebutler_server.admin.dto.response.SearchFoodsResponse; import com.example.icebutler_server.admin.dto.response.UserResponse; import com.example.icebutler_server.admin.entity.Admin; import com.example.icebutler_server.admin.exception.AdminNotFoundException; +import com.example.icebutler_server.admin.exception.AlreadyExistEmailException; +import com.example.icebutler_server.admin.exception.FoodNotFoundException; import com.example.icebutler_server.admin.exception.PasswordNotMatchException; import com.example.icebutler_server.admin.repository.AdminRepository; +import com.example.icebutler_server.food.entity.Food; +import com.example.icebutler_server.food.repository.FoodRepository; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.feign.dto.AdminReq; import com.example.icebutler_server.global.feign.feignClient.RecipeServerClient; import com.example.icebutler_server.global.feign.publisher.RecipeServerEventPublisherImpl; -import com.example.icebutler_server.global.util.redis.RedisTemplateService; import com.example.icebutler_server.global.util.TokenUtils; +import com.example.icebutler_server.global.util.redis.RedisTemplateService; import com.example.icebutler_server.user.entity.User; -import com.example.icebutler_server.user.exception.UserNotFoundException; import com.example.icebutler_server.user.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.HashMap; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_USER; @RequiredArgsConstructor @Service @@ -73,7 +76,7 @@ public PostAdminRes login(LoginRequest request) @Override public void logout(Long adminIdx) { - Admin admin = adminRepository.findByIdAndIsEnable(adminIdx, true).orElseThrow(UserNotFoundException::new); + Admin admin = adminRepository.findByIdAndIsEnable(adminIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); admin.logout(); redisTemplateService.deleteUserRefreshToken(admin.getId().toString()); } @@ -92,7 +95,7 @@ public Page search( public void withdraw(Long userIdx, Long adminIdx, String authorization) { adminRepository.findByIdAndIsEnable(adminIdx,true).orElseThrow(AdminNotFoundException::new); - User user = userRepository.findById(userIdx).orElseThrow(UserNotFoundException::new); + User user = userRepository.findById(userIdx).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); HashMap requestHeaders = new HashMap<>(); requestHeaders.put("Authorization", authorization); recipeServerClient.withdrawUser(userIdx, requestHeaders); diff --git a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java index b7b52212..7bb7e957 100644 --- a/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/cart/service/CartServiceImpl.java @@ -20,7 +20,6 @@ import com.example.icebutler_server.global.sqs.AmazonSQSSender; import com.example.icebutler_server.global.sqs.FoodData; import com.example.icebutler_server.user.entity.User; -import com.example.icebutler_server.user.exception.UserNotFoundException; import com.example.icebutler_server.user.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -31,6 +30,7 @@ import java.util.stream.Collectors; import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_CART; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_USER; @RequiredArgsConstructor @@ -104,7 +104,7 @@ public void deleteCartFoods(Long fridgeIdx, RemoveFoodFromCartRequest request, L } private Cart getCart(Long userIdx, Long fridgeIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); fridgeUserRepository.findByUserAndFridgeAndIsEnable(user, fridge, true).orElseThrow(FridgeUserNotFoundException::new); return cartRepository.findByFridge_IdAndIsEnable(fridgeIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_CART)); diff --git a/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java b/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java index 7285fb7f..7865a8e0 100644 --- a/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java @@ -19,10 +19,10 @@ import com.example.icebutler_server.fridge.repository.FridgeRepository; import com.example.icebutler_server.fridge.repository.FridgeUserRepository; import com.example.icebutler_server.global.entity.FridgeRole; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.sqs.AmazonSQSSender; import com.example.icebutler_server.global.sqs.FoodData; import com.example.icebutler_server.user.entity.User; -import com.example.icebutler_server.user.exception.UserNotFoundException; import com.example.icebutler_server.user.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -36,6 +36,8 @@ import java.util.Map; import java.util.stream.Collectors; +import static com.example.icebutler_server.global.exception.ReturnCode.NOT_FOUND_USER; + @Transactional(readOnly = true) @Service @RequiredArgsConstructor @@ -56,7 +58,7 @@ public class FridgeServiceImpl implements FridgeService { @Override public FridgeMainRes getFoods(Long fridgeIdx, Long userIdx, String category) { - User user = this.userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = this.userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = this.fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); if (category == null) { @@ -76,8 +78,8 @@ public Long registerFridge(FridgeRegisterReq registerFridgeReq, Long ownerIdx) { fridgeRepository.save(fridge); List fridgeUsers = new ArrayList<>(); - List users = registerFridgeReq.getMembers().stream().map(m -> userRepository.findByIdAndIsEnable(m.getUserIdx(), true).orElseThrow(UserNotFoundException::new)).collect(Collectors.toList()); - User owner = userRepository.findByIdAndIsEnable(ownerIdx, true).orElseThrow(UserNotFoundException::new); + List users = registerFridgeReq.getMembers().stream().map(m -> userRepository.findByIdAndIsEnable(m.getUserIdx(), true).orElseThrow(() -> new BaseException(NOT_FOUND_USER))).collect(Collectors.toList()); + User owner = userRepository.findByIdAndIsEnable(ownerIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); // fridge - fridgeUser 연관관계 추가 for (User user : users) { @@ -103,7 +105,7 @@ public Long registerFridge(FridgeRegisterReq registerFridgeReq, Long ownerIdx) { @Override @Transactional public void modifyFridge(Long fridgeIdx, FridgeModifyReq updateFridgeReq, Long userIdx) { - User user = this.userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = this.userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = this.fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); FridgeUser owner = this.fridgeUserRepository.findByFridgeAndUserAndRoleAndIsEnable(fridge, user, FridgeRole.OWNER, true).orElseThrow(InvalidFridgeUserRoleException::new); @@ -120,7 +122,7 @@ public void modifyFridge(Long fridgeIdx, FridgeModifyReq updateFridgeReq, Long u if (updateFridgeReq.getMembers() != null) { List members = this.fridgeUserRepository.findByFridgeAndIsEnable(fridge, true); List newMembers = updateFridgeReq.getMembers().stream() - .map(m -> this.userRepository.findByIdAndIsEnable(m.getUserIdx(), true).orElseThrow(UserNotFoundException::new)).collect(Collectors.toList()); + .map(m -> this.userRepository.findByIdAndIsEnable(m.getUserIdx(), true).orElseThrow(() -> new BaseException(NOT_FOUND_USER))).collect(Collectors.toList()); UpdateMembersRes updateMembers = this.fridgeAssembler.toUpdateFridgeMembers(newMembers, members); if (!updateMembers.getCheckNewMember().isEmpty()) { @@ -149,7 +151,7 @@ public void modifyFridge(Long fridgeIdx, FridgeModifyReq updateFridgeReq, Long u // 냉장고 자체 삭제 @Transactional public Long removeFridge(Long fridgeIdx, Long userId) { - User user = userRepository.findByIdAndIsEnable(userId, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userId, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); FridgeUser owner = (FridgeUser) fridgeUserRepository.findByUserAndFridgeAndIsEnable(user, fridge, true).orElseThrow(FridgeUserNotFoundException::new); List fridgeUsers = fridgeUserRepository.findByFridgeAndIsEnable(fridge, true); @@ -165,7 +167,7 @@ public Long removeFridge(Long fridgeIdx, Long userId) { @Override @Transactional public Long removeFridgeUser(Long fridgeIdx, Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); FridgeUser fridgeUser = (FridgeUser) fridgeUserRepository.findByUserAndFridgeAndIsEnable(user, fridge, true).orElseThrow(FridgeUserNotFoundException::new); @@ -184,7 +186,7 @@ public List searchFridgeFood(Long fridgeIdx, Long userIdx, Strin @Override public FridgeFoodRes getFridgeFood(Long fridgeIdx, Long fridgeFoodIdx, Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); fridgeUserRepository.findByUserAndFridgeAndIsEnable(user, fridge, true).orElseThrow(FridgeUserNotFoundException::new); FridgeFood fridgeFood = fridgeFoodRepository.findByIdAndFridgeAndIsEnable(fridgeFoodIdx, fridge, true).orElseThrow(FridgeFoodNotFoundException::new); @@ -195,7 +197,7 @@ public FridgeFoodRes getFridgeFood(Long fridgeIdx, Long fridgeFoodIdx, Long user @Override @Transactional public void addFridgeFood(FridgeFoodsReq fridgeFoodsReq, Long fridgeIdx, Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); fridgeUserRepository.findByUserAndFridgeAndIsEnable(user, fridge, true).orElseThrow(FridgeUserNotFoundException::new); @@ -203,7 +205,7 @@ public void addFridgeFood(FridgeFoodsReq fridgeFoodsReq, Long fridgeIdx, Long us for (FridgeFoodReq fridgeFoodReq : fridgeFoodsReq.getFridgeFoods()) { User owner = null; if (fridgeFoodReq.getOwnerIdx() != null) { - owner = userRepository.findByIdAndIsEnable(fridgeFoodReq.getOwnerIdx(), true).orElseThrow(UserNotFoundException::new); + owner = userRepository.findByIdAndIsEnable(fridgeFoodReq.getOwnerIdx(), true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); fridgeUserRepository.findByUserAndFridgeAndIsEnable(owner, fridge, true).orElseThrow(FridgeUserNotFoundException::new); } Food food = foodRepository.findByFoodName(fridgeFoodReq.getFoodName()) @@ -222,7 +224,7 @@ public void addFridgeFood(FridgeFoodsReq fridgeFoodsReq, Long fridgeIdx, Long us @Transactional public void modifyFridgeFood(Long fridgeIdx, Long fridgeFoodIdx, FridgeFoodReq fridgeFoodReq, Long userIdx) { User user = this.userRepository.findByIdAndIsEnable(userIdx, true) - .orElseThrow(UserNotFoundException::new); + .orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = this.fridgeRepository.findByIdAndIsEnable(fridgeIdx, true) .orElseThrow(FridgeNotFoundException::new); this.fridgeUserRepository.findByFridgeAndUserAndIsEnable(fridge, user, true) @@ -246,7 +248,7 @@ public void modifyFridgeFood(Long fridgeIdx, Long fridgeFoodIdx, FridgeFoodReq f this.fridgeFoodAssembler.toUpdateFridgeFoodOwner(modifyFridgeFood, null); else { User newOwner = this.userRepository.findByIdAndIsEnable(fridgeFoodReq.getOwnerIdx(), true) - .orElseThrow(UserNotFoundException::new); + .orElseThrow(() -> new BaseException(NOT_FOUND_USER)); this.fridgeUserRepository.findByFridgeAndUserAndIsEnable(fridge, newOwner, true) .orElseThrow(FridgeUserNotFoundException::new); if (!newOwner.equals(modifyFridgeFood.getOwner())) @@ -259,7 +261,7 @@ public void modifyFridgeFood(Long fridgeIdx, Long fridgeFoodIdx, FridgeFoodReq f public void deleteFridgeFood(DeleteFridgeFoodsReq deleteFridgeFoodsReq, String type, Long fridgeIdx, Long userIdx) { FoodDeleteStatus deleteStatus = FoodDeleteStatus.getFoodDeleteStatusByName(type); User user = this.userRepository.findByIdAndIsEnable(userIdx, true) - .orElseThrow(UserNotFoundException::new); + .orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = this.fridgeRepository.findByIdAndIsEnable(fridgeIdx, true) .orElseThrow(FridgeNotFoundException::new); this.fridgeUserRepository.findByFridgeAndUserAndIsEnable(fridge, user, true) @@ -283,7 +285,7 @@ public FridgeUserMainRes searchMembers(Long fridgeIdx, Long userIdx){ @Override public FridgeFoodsStatistics getFridgeFoodStatistics(Long fridgeIdx, String deleteCategory, Long userIdx, Integer year, Integer month) { - User user = this.userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = this.userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = this.fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); this.fridgeUserRepository.findByFridgeAndUserAndIsEnable(fridge, user, true).orElseThrow(FridgeUserNotFoundException::new); @@ -298,12 +300,12 @@ public FridgeFoodsStatistics getFridgeFoodStatistics(Long fridgeIdx, String dele } public SelectFridgesMainRes selectFridges(Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); return SelectFridgesMainRes.toDto(fridgeUserRepository.findByUserAndIsEnable(user, true)); } public GetFridgesMainRes myFridge(Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); // 가정용 냉장고 조회 List fridgeUsers = fridgeUserRepository.findByUserAndIsEnable(user, true); @@ -316,7 +318,7 @@ public GetFridgesMainRes myFridge(Long userIdx) { // 사용자가 속한 가정용/공용 냉장고 food list public RecipeFridgeFoodListsRes getFridgeUserFoodList(Long fridgeIdx, Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); Fridge fridge = this.fridgeRepository.findByIdAndIsEnable(fridgeIdx, true).orElseThrow(FridgeNotFoundException::new); diff --git a/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java b/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java index a770f149..52eb057d 100644 --- a/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java +++ b/src/main/java/com/example/icebutler_server/global/exception/ReturnCode.java @@ -12,6 +12,20 @@ public enum ReturnCode { // 성공 SUCCESS("S0000", HttpStatus.OK, "요청에 성공했습니다."), + // Auth + EXPIRED_TOKEN("A0001", HttpStatus.UNAUTHORIZED, "만료된 토큰입니다. 다시 발급해주세요."), + + + + // User + INVALID_PROVIDER("U0000", HttpStatus.BAD_REQUEST, "부적절한 소셜로그인 provider 입력입니다."), + UNAUTHORIZED_USER("U0001", HttpStatus.UNAUTHORIZED, "관리자에 의해 서비스 이용이 제한되었습니다."), + NOT_FOUND_EMAIL("U0002", HttpStatus.NOT_FOUND, "사용자 이메일 값을 찾아올 수 없습니다."), + ALREADY_WITHDRAWN_USER("U0003", HttpStatus.NOT_FOUND, "이미 탈퇴한 회원입니다."), + INVALID_NICKNAME("U0004", HttpStatus.BAD_REQUEST, "올바르지 않은 닉네임 형식입니다."), + NOT_FOUND_USER("U0005", HttpStatus.NOT_FOUND, "해당 유저를 찾을 수 없습니다."), + + // Food NOT_FOUND_FOOD_CATEGORY("F0000", HttpStatus.NOT_FOUND, "존재하지 않는 카테고리입니다."), NOT_FOUND_BARCODE_FOOD("F0001", HttpStatus.NOT_FOUND, "해당 바코드의 상품을 찾을 수 없습니다."), @@ -28,7 +42,7 @@ public enum ReturnCode { // 서버 에러 - INTERNAL_SERVER_ERROR("E0000", HttpStatus.INTERNAL_SERVER_ERROR, "서버 에레입니다."), + INTERNAL_SERVER_ERROR("E0000", HttpStatus.INTERNAL_SERVER_ERROR, "서버 에러입니다."), ; public final String code; diff --git a/src/main/java/com/example/icebutler_server/global/resolver/AdminResolver.java b/src/main/java/com/example/icebutler_server/global/resolver/AdminResolver.java index f6ebf95d..3abe4dfb 100644 --- a/src/main/java/com/example/icebutler_server/global/resolver/AdminResolver.java +++ b/src/main/java/com/example/icebutler_server/global/resolver/AdminResolver.java @@ -1,7 +1,7 @@ package com.example.icebutler_server.global.resolver; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.util.TokenUtils; -import com.example.icebutler_server.user.exception.AuthAnnotationIsNowhereException; import com.sun.istack.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -15,6 +15,8 @@ import java.util.Objects; +import static com.example.icebutler_server.global.exception.ReturnCode.INTERNAL_SERVER_ERROR; + @RequiredArgsConstructor @Component @@ -41,7 +43,7 @@ public Object resolveArgument(@NotNull MethodParameter parameter, Admin admin = parameter.getMethodAnnotation(Admin.class); if (admin == null) - throw new AuthAnnotationIsNowhereException(); + throw new BaseException(INTERNAL_SERVER_ERROR); String accessToken = webRequest.getHeader(Objects.requireNonNull(env.getProperty("jwt.auth-header"))); if(accessToken == null || !tokenUtils.isValidToken(tokenUtils.parseJustTokenFromFullToken(accessToken))) diff --git a/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java b/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java index b0658f81..b8efa915 100644 --- a/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java +++ b/src/main/java/com/example/icebutler_server/global/resolver/LoginResolver.java @@ -1,7 +1,7 @@ package com.example.icebutler_server.global.resolver; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.util.TokenUtils; -import com.example.icebutler_server.user.exception.AuthAnnotationIsNowhereException; import com.sun.istack.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -15,6 +15,8 @@ import java.util.Objects; +import static com.example.icebutler_server.global.exception.ReturnCode.INTERNAL_SERVER_ERROR; + @RequiredArgsConstructor @Component @@ -41,7 +43,7 @@ public Object resolveArgument(@NotNull MethodParameter parameter, Auth auth = parameter.getMethodAnnotation(Auth.class); if (auth == null) - throw new AuthAnnotationIsNowhereException(); + throw new BaseException(INTERNAL_SERVER_ERROR); String accessToken = webRequest.getHeader(Objects.requireNonNull(env.getProperty("jwt.auth-header"))); if(accessToken == null || !tokenUtils.isValidToken(tokenUtils.parseJustTokenFromFullToken(accessToken))) diff --git a/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java b/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java index b1d19924..da066c15 100644 --- a/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java +++ b/src/main/java/com/example/icebutler_server/global/util/TokenUtils.java @@ -1,9 +1,8 @@ package com.example.icebutler_server.global.util; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.util.redis.RedisTemplateService; -import com.example.icebutler_server.user.dto.request.UserAuthTokenReq; import com.example.icebutler_server.user.entity.User; -import com.example.icebutler_server.user.exception.TokenExpirationException; import io.jsonwebtoken.*; import io.netty.handler.codec.compression.CompressionException; import lombok.RequiredArgsConstructor; @@ -16,6 +15,8 @@ import java.util.Date; import java.util.Objects; +import static com.example.icebutler_server.global.exception.ReturnCode.EXPIRED_TOKEN; + @Slf4j @RequiredArgsConstructor @Component @@ -201,7 +202,7 @@ private Claims getJwtBodyFromJustToken(String justToken) { .parseClaimsJws(justToken) .getBody(); } catch (ExpiredJwtException e) { - throw new TokenExpirationException(); + throw new BaseException(EXPIRED_TOKEN); } } @@ -240,9 +241,9 @@ public String parseJustTokenFromFullToken(String fullToken) { @Transactional public String accessExpiration(Long userIdx) { String userRefreshToken = redisTemplateService.getUserRefreshToken(userIdx.toString()); - if (userRefreshToken == null) throw new TokenExpirationException(); + if (userRefreshToken == null) throw new BaseException(EXPIRED_TOKEN); String refreshNickname = getNicknameFromFullToken(userRefreshToken); - if (refreshNickname.isEmpty()) throw new TokenExpirationException(); + if (refreshNickname.isEmpty()) throw new BaseException(EXPIRED_TOKEN); //토큰이 만료되었을 경우. return createAccessToken(userIdx, refreshNickname); diff --git a/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java b/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java index 1eeff254..433cb4bf 100644 --- a/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java +++ b/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java @@ -29,7 +29,7 @@ @RequestMapping(value = "/users") @RestController @Tag(name = "User", description = "유저 API (인증 필요)") - @SecurityRequirement(name = "Bearer") +@SecurityRequirement(name = "Bearer") public class UserAuthController { private final TokenUtils tokenUtils; @@ -46,8 +46,8 @@ public ResponseCustom accessToken(@Parameter(hidden = true) @IsLogin Log @Operation(summary = "유저 프로필 수정", description = "유저 프로필을 수정한다.") @SwaggerApiSuccess(implementation = ResponseCustom.class) @ApiResponses(value = { - @ApiResponse(responseCode = "404", description = "요청한 idx를 가진 유저를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class)))}) + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) + }) @Auth @ResponseBody @PatchMapping("/profile") @@ -62,8 +62,8 @@ public ResponseCustom modifyProfile(@RequestBody PatchProfileReq patchProfile @ApiResponses(value = { @ApiResponse(responseCode = "400", description = "해당 냉장고에 멤버가 있어서 삭제할 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), - @ApiResponse(responseCode = "404", description = "요청한 idx를 가진 유저를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class)))}) + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) + }) @Auth @DeleteMapping("/delete") public ResponseCustom deleteUser( @@ -75,8 +75,8 @@ public ResponseCustom deleteUser( @Operation(summary = "유저 로그아웃", description = "유저를 로그아웃한다.") @SwaggerApiSuccess(implementation = ResponseCustom.class) @ApiResponses(value = { - @ApiResponse(responseCode = "404", description = "요청한 idx를 가진 유저를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class)))}) + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), + }) @Auth @PostMapping("/logout") public ResponseCustom logout( @@ -88,8 +88,8 @@ public ResponseCustom logout( @Operation(summary = "유저 프로필 조회", description = "유저 프로필을 조회한다.") @SwaggerApiSuccess(implementation = MyProfileRes.class) @ApiResponses(value = { - @ApiResponse(responseCode = "404", description = "요청한 idx를 가진 유저를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class)))}) + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) + }) @Auth @GetMapping("") public ResponseCustom profile( @@ -100,8 +100,8 @@ public ResponseCustom profile( @Operation(summary = "유저 알림 목록", description = "유저 알림 목록을 조회한다.") @SwaggerApiSuccess(implementation = MyNotificationRes.class) @ApiResponses(value = { - @ApiResponse(responseCode = "404", description = "요청한 idx를 가진 유저를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class)))}) + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), + }) @Auth @GetMapping("/notification") public ResponseCustom> getUserNotification( diff --git a/src/main/java/com/example/icebutler_server/user/controller/UserController.java b/src/main/java/com/example/icebutler_server/user/controller/UserController.java index 97faad77..311ae4dc 100644 --- a/src/main/java/com/example/icebutler_server/user/controller/UserController.java +++ b/src/main/java/com/example/icebutler_server/user/controller/UserController.java @@ -32,9 +32,10 @@ public class UserController { @Operation(summary = "유저 회원가입", description = "유저가 회원가입한다.") @SwaggerApiSuccess(implementation = PostUserRes.class) @ApiResponses(value = { - @ApiResponse(responseCode = "400", description = "부적절한 소셜로그인 provider 입력입니다.\t\n " + - "사용자 이메일 값을 찾아올 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class)))}) + @ApiResponse(responseCode = "400", description = "(U0000)부적절한 소셜로그인 provider 입력입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), + @ApiResponse(responseCode = "401", description = "(U0001)관리자에 의해 서비스 이용이 제한되었습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), + @ApiResponse(responseCode = "404", description = "(U0002)사용자 이메일 값을 찾아올 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) + }) @ResponseBody @PostMapping("/join") public ResponseCustom join(@RequestBody PostUserReq postUserReq) { @@ -44,10 +45,9 @@ public ResponseCustom join(@RequestBody PostUserReq postUserReq) { @Operation(summary = "유저 로그인", description = "유저가 로그인한다.") @SwaggerApiSuccess(implementation = PostUserRes.class) @ApiResponses(value = { - @ApiResponse(responseCode = "400", description = "부적절한 소셜로그인 provider 입력입니다.\t\n " + - "사용자 이메일 값을 찾아올 수 없습니다.", - content = @Content(schema = @Schema(implementation = ResponseCustom.class))), - @ApiResponse(responseCode = "403", description = "이미 탈퇴한 회원입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) + @ApiResponse(responseCode = "400", description = "(U0000)부적절한 소셜로그인 provider 입력입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), + @ApiResponse(responseCode = "404", description = "(U0002)사용자 이메일 값을 찾아올 수 없습니다." + + "(U0003)이미 탈퇴한 회원입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) }) @ResponseBody @PostMapping("/login") @@ -58,7 +58,7 @@ public ResponseCustom login(@RequestBody LoginUserReq loginUserReq) @Operation(summary = "유저 닉네임 중복 조회", description = "닉네임 중복 여부를 조회한다.") @SwaggerApiSuccess(implementation = PostNickNameRes.class) @ApiResponses(value = { - @ApiResponse(responseCode = "400", description = "올바르지 않은 닉네임 형식입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) + @ApiResponse(responseCode = "400", description = "(U0004)올바르지 않은 닉네임 형식입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))) }) @ResponseBody @PostMapping("/nickname") diff --git a/src/main/java/com/example/icebutler_server/user/exception/AccessDeniedUserException.java b/src/main/java/com/example/icebutler_server/user/exception/AccessDeniedUserException.java deleted file mode 100644 index 575df7eb..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/AccessDeniedUserException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class AccessDeniedUserException extends RuntimeException{ - public AccessDeniedUserException() {super("관리자에 의해 서비스 이용이 제한되었습니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/AlreadyExistNickNameException.java b/src/main/java/com/example/icebutler_server/user/exception/AlreadyExistNickNameException.java deleted file mode 100644 index 1c1c7e89..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/AlreadyExistNickNameException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class AlreadyExistNickNameException extends RuntimeException { - public AlreadyExistNickNameException() {super("이미 존재하는 닉네임입니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/AlreadyWithdrawUserException.java b/src/main/java/com/example/icebutler_server/user/exception/AlreadyWithdrawUserException.java deleted file mode 100644 index bc69420e..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/AlreadyWithdrawUserException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class AlreadyWithdrawUserException extends RuntimeException { - public AlreadyWithdrawUserException() { - super("이미 탈퇴한 회원입니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/AuthAnnotationIsNowhereException.java b/src/main/java/com/example/icebutler_server/user/exception/AuthAnnotationIsNowhereException.java deleted file mode 100644 index c13adbed..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/AuthAnnotationIsNowhereException.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class AuthAnnotationIsNowhereException extends RuntimeException { - public AuthAnnotationIsNowhereException() { super("토큰을 통해 userId를 추출하는 메서드에는 @Auth 어노테이션을 붙여주세요."); - } -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/InvalidUserNickNameException.java b/src/main/java/com/example/icebutler_server/user/exception/InvalidUserNickNameException.java deleted file mode 100644 index 0bd928fb..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/InvalidUserNickNameException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class InvalidUserNickNameException extends RuntimeException { - public InvalidUserNickNameException() { - super("올바르지 않은 닉네임 형식입니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/InvalidUserProfileImgKeyException.java b/src/main/java/com/example/icebutler_server/user/exception/InvalidUserProfileImgKeyException.java deleted file mode 100644 index 3971a40b..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/InvalidUserProfileImgKeyException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class InvalidUserProfileImgKeyException extends RuntimeException { - public InvalidUserProfileImgKeyException() {super("올바르지 않은 데이터 형식입니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/ProviderMissingValueException.java b/src/main/java/com/example/icebutler_server/user/exception/ProviderMissingValueException.java deleted file mode 100644 index 429414f3..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/ProviderMissingValueException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class ProviderMissingValueException extends RuntimeException { - public ProviderMissingValueException() {super("부적절한 소셜로그인 provider 입력입니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/TokenExpirationException.java b/src/main/java/com/example/icebutler_server/user/exception/TokenExpirationException.java deleted file mode 100644 index cae65fc4..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/TokenExpirationException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class TokenExpirationException extends RuntimeException { - public TokenExpirationException() { - super("만료된 토큰입니다. 다시 발급해주세요."); - } - -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/UserEmailMissingValueException.java b/src/main/java/com/example/icebutler_server/user/exception/UserEmailMissingValueException.java deleted file mode 100644 index fd7c5bd7..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/UserEmailMissingValueException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class UserEmailMissingValueException extends RuntimeException { - public UserEmailMissingValueException() {super("사용자 이메일 값을 찾아올 수 없습니다.");} -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/UserNicknameNotFoundException.java b/src/main/java/com/example/icebutler_server/user/exception/UserNicknameNotFoundException.java deleted file mode 100644 index d713726b..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/UserNicknameNotFoundException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class UserNicknameNotFoundException extends RuntimeException{ - public UserNicknameNotFoundException(){ - super("요청한 닉네임을 가진 유저를 찾을 수 없습니다."); - } - -} diff --git a/src/main/java/com/example/icebutler_server/user/exception/UserNotFoundException.java b/src/main/java/com/example/icebutler_server/user/exception/UserNotFoundException.java deleted file mode 100644 index 07a98ba1..00000000 --- a/src/main/java/com/example/icebutler_server/user/exception/UserNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.icebutler_server.user.exception; - -public class UserNotFoundException extends RuntimeException { - public UserNotFoundException(){ - super("요청한 idx를 가진 유저를 찾을 수 없습니다."); - } -} diff --git a/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java b/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java index 999d4229..8e4bda61 100644 --- a/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java @@ -3,9 +3,11 @@ import com.example.icebutler_server.alarm.repository.PushNotificationRepository; import com.example.icebutler_server.fridge.entity.Fridge; import com.example.icebutler_server.fridge.entity.FridgeUser; +import com.example.icebutler_server.fridge.exception.CannotDeleteFridgeException; import com.example.icebutler_server.fridge.repository.FridgeRepository; import com.example.icebutler_server.fridge.repository.FridgeUserRepository; import com.example.icebutler_server.global.entity.FridgeRole; +import com.example.icebutler_server.global.exception.BaseException; import com.example.icebutler_server.global.feign.publisher.RecipeServerEventPublisherImpl; import com.example.icebutler_server.global.resolver.IsLogin; import com.example.icebutler_server.global.util.TokenUtils; @@ -19,7 +21,6 @@ import com.example.icebutler_server.user.dto.response.*; import com.example.icebutler_server.user.entity.Provider; import com.example.icebutler_server.user.entity.User; -import com.example.icebutler_server.user.exception.*; import com.example.icebutler_server.user.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; @@ -31,6 +32,8 @@ import java.util.List; import java.util.stream.Collectors; +import static com.example.icebutler_server.global.exception.ReturnCode.*; + @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { @@ -51,7 +54,7 @@ public PostUserRes join(PostUserReq postUserReq) { User user = checkUserInfo(postUserReq.getEmail(), postUserReq.getProvider()); if (user == null) user = saveUser(postUserReq); // 정지된 회원은 재가입 불가 - if (user.getIsDenied().equals(true)) throw new AccessDeniedUserException(); + if (user.getIsDenied().equals(true)) throw new BaseException(UNAUTHORIZED_USER); // 자진 탈퇴 회원은 재가입 처리 if (user.getIsEnable().equals(false)) user=saveUser(postUserReq); // 새로운 행 추가 @@ -65,7 +68,7 @@ public PostUserRes login(LoginUserReq loginUserReq) { User user = checkUserInfo(loginUserReq.getEmail(), loginUserReq.getProvider()); if (user != null) { - if (user.getIsEnable().equals(false)) throw new AlreadyWithdrawUserException(); + if (user.getIsEnable().equals(false)) throw new BaseException(ALREADY_WITHDRAWN_USER); user.login(loginUserReq.getFcmToken()); return PostUserRes.toDto(tokenUtils.createToken(user)); } @@ -74,8 +77,8 @@ public PostUserRes login(LoginUserReq loginUserReq) { public User checkUserInfo(String email, String provider) { - if (Provider.getProviderByName(provider) == null) throw new ProviderMissingValueException(); - if (!StringUtils.hasText(email)) throw new UserEmailMissingValueException(); + if (Provider.getProviderByName(provider) == null) throw new BaseException(INVALID_PROVIDER); + if (!StringUtils.hasText(email)) throw new BaseException(NOT_FOUND_EMAIL); return userRepository.findByEmailAndProvider(email, Provider.getProviderByName(provider)); } @@ -94,7 +97,7 @@ public User saveUser(PostUserReq postUserReq) { // 프로필 설정 @Transactional public void modifyProfile(@IsLogin Long userIdx, PatchProfileReq patchProfileReq) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); if (StringUtils.hasText(patchProfileReq.getNickname())) user.modifyProfileNickName(patchProfileReq.getNickname()); if (StringUtils.hasText(patchProfileReq.getProfileImgKey())) user.modifyProfileImgKey(patchProfileReq.getProfileImgKey()); @@ -105,7 +108,7 @@ public void modifyProfile(@IsLogin Long userIdx, PatchProfileReq patchProfileReq // 닉네임 중복 확인 public PostNickNameRes checkNickname(PostNicknameReq postNicknameReq) { - if (!userAssembler.isValidNickname(postNicknameReq.getNickname())) throw new InvalidUserNickNameException(); + if (!userAssembler.isValidNickname(postNicknameReq.getNickname())) throw new BaseException(INVALID_NICKNAME); Boolean existence = userRepository.existsByNickname(postNicknameReq.getNickname()); return PostNickNameRes.toDto(postNicknameReq.getNickname(), existence); @@ -115,7 +118,7 @@ public PostNickNameRes checkNickname(PostNicknameReq postNicknameReq) { @Override @Transactional public void deleteUser(Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); List fridgeOwners = fridgeUserRepository.findByUserAndRoleAndIsEnable(user, FridgeRole.OWNER, true); for (FridgeUser fridgeOwner : fridgeOwners) { Fridge fridge = fridgeOwner.getFridge(); @@ -135,7 +138,7 @@ public void deleteUser(Long userIdx) { @Override @Transactional public void logout(Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); redisTemplateService.deleteUserRefreshToken(userIdx.toString()); user.logout(); } @@ -143,7 +146,7 @@ public void logout(Long userIdx) { //마이페이지 조회 @Override public MyProfileRes checkProfile(Long userIdx) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); return MyProfileRes.toDto(user); @@ -158,7 +161,7 @@ public List searchNickname(String nickname) { @Override public Page getUserNotification(Long userIdx, Pageable pageable) { - User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(UserNotFoundException::new); + User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); return this.userAssembler.toUserNotificationList(this.pushNotificationRepository.findByUserOrderByCreatedAtDesc(user, pageable)); } From 919d7553cfffb83551907e20db1cc7eead26aceb Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:40:53 +0900 Subject: [PATCH 6/9] =?UTF-8?q?#325=20refactor:=20fridge=20exception=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{user => fridge}/exception/CannotDeleteFridgeException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/com/example/icebutler_server/{user => fridge}/exception/CannotDeleteFridgeException.java (78%) diff --git a/src/main/java/com/example/icebutler_server/user/exception/CannotDeleteFridgeException.java b/src/main/java/com/example/icebutler_server/fridge/exception/CannotDeleteFridgeException.java similarity index 78% rename from src/main/java/com/example/icebutler_server/user/exception/CannotDeleteFridgeException.java rename to src/main/java/com/example/icebutler_server/fridge/exception/CannotDeleteFridgeException.java index 0d0257ae..07153764 100644 --- a/src/main/java/com/example/icebutler_server/user/exception/CannotDeleteFridgeException.java +++ b/src/main/java/com/example/icebutler_server/fridge/exception/CannotDeleteFridgeException.java @@ -1,4 +1,4 @@ -package com.example.icebutler_server.user.exception; +package com.example.icebutler_server.fridge.exception; public class CannotDeleteFridgeException extends RuntimeException { public CannotDeleteFridgeException() { super("해당 냉장고에 멤버가 있어서 삭제할 수 없습니다."); From 59526f10e73688e026113aa821c4bcf148b21e1c Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:43:58 +0900 Subject: [PATCH 7/9] =?UTF-8?q?#325=20refactor:=20userAssembler=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/dto/assembler/UserAssembler.java | 44 ------------------- .../user/dto/response/MyNotificationRes.java | 10 +++++ .../user/service/UserServiceImpl.java | 19 ++++++-- 3 files changed, 25 insertions(+), 48 deletions(-) delete mode 100644 src/main/java/com/example/icebutler_server/user/dto/assembler/UserAssembler.java diff --git a/src/main/java/com/example/icebutler_server/user/dto/assembler/UserAssembler.java b/src/main/java/com/example/icebutler_server/user/dto/assembler/UserAssembler.java deleted file mode 100644 index 2073ad35..00000000 --- a/src/main/java/com/example/icebutler_server/user/dto/assembler/UserAssembler.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.example.icebutler_server.user.dto.assembler; - -import com.example.icebutler_server.alarm.entity.PushNotification; -import com.example.icebutler_server.user.dto.request.PostUserReq; -import com.example.icebutler_server.user.dto.response.MyNotificationRes; -import com.example.icebutler_server.user.entity.User; -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Component; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -@Component -@RequiredArgsConstructor -public class UserAssembler { - - public User signUpOrLogin(User user, PostUserReq postUserReq) { - user.login(postUserReq.getFcmToken()); - return user; - } - -// 2자 이상 8자 이하, 영어 또는 숫자 또는 한글로 구성 -// 특이사항 : 한글 초성 및 모음은 허가하지 않는다. - public Boolean isValidNickname(String nickname) { - boolean err = false; - String regex = "^(?=.*[a-z0-9가-힣])[a-z0-9가-힣]{2,8}$"; - Pattern p = Pattern.compile(regex); - Matcher m = p.matcher(nickname); - if(m.matches()) { - err = true; - } - return err; - } - - // 알림 list return - public Page toUserNotificationList(Page notifications){ - return notifications.map(n -> MyNotificationRes.builder() - .pushNotificationType(n.getPushNotificationType()) - .notificationInfo(n.getNotificationInfo()) - .createdAt(n.getCreatedAt()) - .build()); - } -} diff --git a/src/main/java/com/example/icebutler_server/user/dto/response/MyNotificationRes.java b/src/main/java/com/example/icebutler_server/user/dto/response/MyNotificationRes.java index be62bbfe..c5bd7288 100644 --- a/src/main/java/com/example/icebutler_server/user/dto/response/MyNotificationRes.java +++ b/src/main/java/com/example/icebutler_server/user/dto/response/MyNotificationRes.java @@ -1,9 +1,11 @@ package com.example.icebutler_server.user.dto.response; +import com.example.icebutler_server.alarm.entity.PushNotification; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; import lombok.Data; +import org.springframework.data.domain.Page; import java.time.LocalDateTime; @@ -24,4 +26,12 @@ public MyNotificationRes(String pushNotificationType, String notificationInfo, L this.notificationInfo = notificationInfo; this.createdAt = createdAt; } + + public static Page toUserNotificationList(Page notifications) { + return notifications.map(n -> MyNotificationRes.builder() + .pushNotificationType(n.getPushNotificationType()) + .notificationInfo(n.getNotificationInfo()) + .createdAt(n.getCreatedAt()) + .build()); + } } diff --git a/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java b/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java index 8e4bda61..394bf17d 100644 --- a/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java +++ b/src/main/java/com/example/icebutler_server/user/service/UserServiceImpl.java @@ -14,7 +14,6 @@ import com.example.icebutler_server.global.util.redis.RedisTemplateService; import com.example.icebutler_server.global.util.redis.RedisUtils; import com.example.icebutler_server.user.dto.LoginUserReq; -import com.example.icebutler_server.user.dto.assembler.UserAssembler; import com.example.icebutler_server.user.dto.request.PatchProfileReq; import com.example.icebutler_server.user.dto.request.PostNicknameReq; import com.example.icebutler_server.user.dto.request.PostUserReq; @@ -30,6 +29,8 @@ import org.springframework.util.StringUtils; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import static com.example.icebutler_server.global.exception.ReturnCode.*; @@ -41,7 +42,6 @@ public class UserServiceImpl implements UserService { private final UserRepository userRepository; private final FridgeUserRepository fridgeUserRepository; private final FridgeRepository fridgeRepository; - private final UserAssembler userAssembler; private final TokenUtils tokenUtils; private final RedisUtils redisUtils; @@ -108,12 +108,23 @@ public void modifyProfile(@IsLogin Long userIdx, PatchProfileReq patchProfileReq // 닉네임 중복 확인 public PostNickNameRes checkNickname(PostNicknameReq postNicknameReq) { - if (!userAssembler.isValidNickname(postNicknameReq.getNickname())) throw new BaseException(INVALID_NICKNAME); + if (!isValidNickname(postNicknameReq.getNickname())) throw new BaseException(INVALID_NICKNAME); Boolean existence = userRepository.existsByNickname(postNicknameReq.getNickname()); return PostNickNameRes.toDto(postNicknameReq.getNickname(), existence); } + private Boolean isValidNickname(String nickname) { + boolean err = false; + String regex = "^(?=.*[a-z0-9가-힣])[a-z0-9가-힣]{2,8}$"; + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(nickname); + if(m.matches()) { + err = true; + } + return err; + } + //유저 탈퇴 @Override @Transactional @@ -162,7 +173,7 @@ public List searchNickname(String nickname) { @Override public Page getUserNotification(Long userIdx, Pageable pageable) { User user = userRepository.findByIdAndIsEnable(userIdx, true).orElseThrow(() -> new BaseException(NOT_FOUND_USER)); - return this.userAssembler.toUserNotificationList(this.pushNotificationRepository.findByUserOrderByCreatedAtDesc(user, pageable)); + return MyNotificationRes.toUserNotificationList(this.pushNotificationRepository.findByUserOrderByCreatedAtDesc(user, pageable)); } } From bef53866439f7b8dc470337a7ef37f31db40ca87 Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:46:59 +0900 Subject: [PATCH 8/9] =?UTF-8?q?#325=20refactor:=20cart=20=EC=8A=A4?= =?UTF-8?q?=EC=9B=A8=EA=B1=B0=20=EC=8B=A4=ED=8C=A8=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/controller/CartController.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/example/icebutler_server/cart/controller/CartController.java b/src/main/java/com/example/icebutler_server/cart/controller/CartController.java index e724595e..baa90578 100644 --- a/src/main/java/com/example/icebutler_server/cart/controller/CartController.java +++ b/src/main/java/com/example/icebutler_server/cart/controller/CartController.java @@ -36,9 +36,9 @@ public class CartController { @ApiResponses(value = { @ApiResponse(responseCode = "403", description = "냉장고의 멤버가 아닙니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), - @ApiResponse(responseCode = "404", description = "요청한 id를 가진 유저를 찾을 수 없습니다.\t\n" + + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.\t\n" + "요청한 id를 가진 냉장고를 찾을 수 없습니다.\t\n" + - "요청한 id를 가진 장바구니를 찾을 수 없습니다.", + "(C0000)장바구니를 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), }) @Auth @@ -53,10 +53,10 @@ public ResponseCustom> getCartFoods(@Parameter(name = "냉장 @ApiResponses(value = { @ApiResponse(responseCode = "403", description = "냉장고의 멤버가 아닙니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), - @ApiResponse(responseCode = "404", description = "요청한 id를 가진 유저를 찾을 수 없습니다.\t\n" + + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.\t\n" + "요청한 id를 가진 냉장고를 찾을 수 없습니다.\t\n" + - "요청한 id를 가진 장바구니를 찾을 수 없습니다.\t\n" + - "존재하지 않는 카테고리입니다.", + "(C0000)장바구니를 찾을 수 없습니다.\t\n" + + "(F0000)존재하지 않는 카테고리입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), }) @Auth @@ -73,10 +73,10 @@ public ResponseCustom addCartFoods(@Parameter(name = "냉장고 ID") @PathVar @ApiResponses(value = { @ApiResponse(responseCode = "403", description = "냉장고의 멤버가 아닙니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), - @ApiResponse(responseCode = "404", description = "요청한 id를 가진 유저를 찾을 수 없습니다.\t\n" + + @ApiResponse(responseCode = "404", description = "(U0005)해당 유저를 찾을 수 없습니다.\t\n" + "요청한 id를 가진 냉장고를 찾을 수 없습니다.\t\n" + - "요청한 id를 가진 장바구니를 찾을 수 없습니다.\t\n" + - "존재하지 않는 카테고리입니다.", + "(C0000)장바구니를 찾을 수 없습니다.\t\n" + + "(F0000)존재하지 않는 카테고리입니다.", content = @Content(schema = @Schema(implementation = ResponseCustom.class))), }) @Auth From 3940587a149b0107bb93185a94dda33cfe4e298a Mon Sep 17 00:00:00 2001 From: sojungpp Date: Mon, 8 Jul 2024 00:51:29 +0900 Subject: [PATCH 9/9] =?UTF-8?q?#325=20fix:=20=EC=8A=A4=EC=9B=A8=EA=B1=B0?= =?UTF-8?q?=20user=20=EA=B4=80=EB=A0=A8=20=EC=9D=B4=EB=A6=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../icebutler_server/user/controller/UserAuthController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java b/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java index 433cb4bf..22229783 100644 --- a/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java +++ b/src/main/java/com/example/icebutler_server/user/controller/UserAuthController.java @@ -28,7 +28,7 @@ @RequiredArgsConstructor @RequestMapping(value = "/users") @RestController -@Tag(name = "User", description = "유저 API (인증 필요)") +@Tag(name = "UserAuth", description = "유저 API (인증 필요)") @SecurityRequirement(name = "Bearer") public class UserAuthController {