From 496e6a12da8d0784ae70755654e752e4b11adc61 Mon Sep 17 00:00:00 2001 From: ryogaeng Date: Sat, 27 Jul 2024 17:15:58 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[feat]=20categories/get/{userId}=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/controller/CategoryController.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java b/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java index beb16f89..671b272a 100644 --- a/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java +++ b/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java @@ -13,6 +13,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/categories") @@ -35,4 +37,18 @@ public ResponseEntity createCategory( CategoryResponseDTO response = categoryService.createCategory(categoryRequestDTO); return ResponseEntity.ok(response); } + + + @Operation(summary = "유저 개인의 카테고리 조회", description = "유저의 카테고리(default + 개인 custom)를 조회합니다.") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "403", description = "Forbidden"), + @ApiResponse(responseCode = "404", description = "Not Found") + }) + @GetMapping("/get/{userId}") + public ResponseEntity> getUserCategories(@PathVariable Long userId) { + List response = categoryService.getUserCategories(userId); + return ResponseEntity.ok(response); + } } From b799cb69dc0dd3afddcda177f475d5370297c540 Mon Sep 17 00:00:00 2001 From: ryogaeng Date: Sat, 27 Jul 2024 17:16:36 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[feat]=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=ED=95=B4?= =?UTF-8?q?=EC=98=A4=EB=8A=94=20getUserCategories()=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/service/CategoryService.java | 3 +++ .../category/service/CategoryServiceImpl.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryService.java b/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryService.java index 352b64c6..1ba8ec9c 100644 --- a/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryService.java +++ b/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryService.java @@ -3,7 +3,10 @@ import com.bbteam.budgetbuddies.domain.category.dto.CategoryRequestDTO; import com.bbteam.budgetbuddies.domain.category.dto.CategoryResponseDTO; +import java.util.List; + public interface CategoryService { CategoryResponseDTO createCategory(CategoryRequestDTO categoryRequestDTO); + List getUserCategories(Long userId); } diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java b/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java index 52b26658..47bf1a9d 100644 --- a/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java +++ b/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java @@ -11,6 +11,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor @Transactional @@ -35,4 +38,20 @@ public CategoryResponseDTO createCategory(CategoryRequestDTO categoryRequestDTO) return categoryConverter.toCategoryResponseDTO(savedCategory); } + + @Override + public List getUserCategories(Long userId) { + + userRepository.findById(userId) + .orElseThrow(() -> new IllegalArgumentException("User not found with id: " + userId)); + + List categories = categoryRepository.findUserCategoryByUserId(userId); + return categories.stream() + .map(category -> CategoryResponseDTO.builder() + .id(category.getId()) + .name(category.getName()) + .isDefault(category.getIsDefault()) + .build()) + .collect(Collectors.toList()); + } } \ No newline at end of file From efd4f0ee461a0a8d5d24c45a798a2dd67254577d Mon Sep 17 00:00:00 2001 From: ryogaeng Date: Sat, 27 Jul 2024 17:36:49 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[refactor]=20converter=EB=A5=BC=20=ED=86=B5?= =?UTF-8?q?=ED=95=B4=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B0=B8=EC=A1=B0=20?= =?UTF-8?q?=ED=98=95=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/category/service/CategoryServiceImpl.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java b/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java index 47bf1a9d..2df03410 100644 --- a/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java +++ b/src/main/java/com/bbteam/budgetbuddies/domain/category/service/CategoryServiceImpl.java @@ -47,11 +47,7 @@ public List getUserCategories(Long userId) { List categories = categoryRepository.findUserCategoryByUserId(userId); return categories.stream() - .map(category -> CategoryResponseDTO.builder() - .id(category.getId()) - .name(category.getName()) - .isDefault(category.getIsDefault()) - .build()) + .map(categoryConverter::toCategoryResponseDTO) .collect(Collectors.toList()); } } \ No newline at end of file From 6711522b180fd2faac31f70e4973f1ec461ba808 Mon Sep 17 00:00:00 2001 From: ryogaeng Date: Sat, 27 Jul 2024 17:44:41 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[refactor]=20CategoryApi=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=EB=A1=9C=20swagger=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/controller/CategoryApi.java | 40 +++++++++++++++++++ .../controller/CategoryController.java | 30 ++------------ 2 files changed, 44 insertions(+), 26 deletions(-) create mode 100644 src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryApi.java diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryApi.java b/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryApi.java new file mode 100644 index 00000000..b299a4a0 --- /dev/null +++ b/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryApi.java @@ -0,0 +1,40 @@ +package com.bbteam.budgetbuddies.domain.category.controller; + +import com.bbteam.budgetbuddies.domain.category.dto.CategoryRequestDTO; +import com.bbteam.budgetbuddies.domain.category.dto.CategoryResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +public interface CategoryApi { + + @Operation(summary = "카테고리 추가", description = "사용자가 직접 카테고리를 추가합니다.") + @ApiResponses({ + @ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), + @ApiResponse(responseCode = "AUTH003", description = "access 토큰을 주세요!", content = @Content(schema = @Schema(implementation = ApiResponse.class))), + @ApiResponse(responseCode = "AUTH004", description = "access 토큰 만료", content = @Content(schema = @Schema(implementation = ApiResponse.class))), + @ApiResponse(responseCode = "AUTH006", description = "access 토큰 모양이 이상함", content = @Content(schema = @Schema(implementation = ApiResponse.class))) + }) + @PostMapping("/add") + ResponseEntity createCategory( + @Parameter(description = "user_id, name(사용자가 입력한 카테고리명), is_default(default 카테고리 여부)로 request") + @RequestBody CategoryRequestDTO categoryRequestDTO); + + + @Operation(summary = "유저 개인의 카테고리 조회", description = "유저의 카테고리(default + 개인 custom)를 조회합니다.") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "403", description = "Forbidden"), + @ApiResponse(responseCode = "404", description = "Not Found") + }) + @GetMapping("/get/{userId}") + ResponseEntity> getUserCategories(@PathVariable Long userId); +} diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java b/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java index 671b272a..49b9dfdf 100644 --- a/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java +++ b/src/main/java/com/bbteam/budgetbuddies/domain/category/controller/CategoryController.java @@ -3,12 +3,6 @@ import com.bbteam.budgetbuddies.domain.category.dto.CategoryRequestDTO; import com.bbteam.budgetbuddies.domain.category.dto.CategoryResponseDTO; import com.bbteam.budgetbuddies.domain.category.service.CategoryService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -18,34 +12,18 @@ @RestController @RequiredArgsConstructor @RequestMapping("/categories") -public class CategoryController { +public class CategoryController implements CategoryApi { private final CategoryService categoryService; - @Operation(summary = "카테고리 추가", description = "사용자가 직접 카테고리를 추가합니다.") - @ApiResponses({ - @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), - @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "AUTH003", description = "access 토큰을 주세요!", content = @Content(schema = @Schema(implementation = ApiResponse.class))), - @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "AUTH004", description = "access 토큰 만료", content = @Content(schema = @Schema(implementation = ApiResponse.class))), - @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "AUTH006", description = "access 토큰 모양이 이상함", content = @Content(schema = @Schema(implementation = ApiResponse.class))) - }) + @Override @PostMapping("/add") - public ResponseEntity createCategory( - @Parameter(description = "user_id, name(사용자가 입력한 카테고리명), is_default(default 카테고리 여부)로 request") - @RequestBody CategoryRequestDTO categoryRequestDTO - ) { + public ResponseEntity createCategory(@RequestBody CategoryRequestDTO categoryRequestDTO) { CategoryResponseDTO response = categoryService.createCategory(categoryRequestDTO); return ResponseEntity.ok(response); } - - @Operation(summary = "유저 개인의 카테고리 조회", description = "유저의 카테고리(default + 개인 custom)를 조회합니다.") - @ApiResponses({ - @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "401", description = "Unauthorized"), - @ApiResponse(responseCode = "403", description = "Forbidden"), - @ApiResponse(responseCode = "404", description = "Not Found") - }) + @Override @GetMapping("/get/{userId}") public ResponseEntity> getUserCategories(@PathVariable Long userId) { List response = categoryService.getUserCategories(userId);