From 973d357c803f4d84b13928140e804377073b6549 Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sat, 25 Oct 2025 21:48:49 +0900 Subject: [PATCH 1/5] =?UTF-8?q?refactor=20#202:=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EB=8B=A8=EA=B3=84=EB=B3=84=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/service/CategoryService.java | 13 ++++++++++--- .../presentation/controller/CategoryController.java | 7 +++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java b/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java index d0d706e0..7960753f 100644 --- a/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java +++ b/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java @@ -22,10 +22,17 @@ public class CategoryService { // ------------------- 전체 조회 ------------------- @Transactional(readOnly = true) - public List findAllCategories() { - return categoryRepository.findAll().stream() + public List findRootCategories() { + return categoryRepository.findByParentIsNull().stream() .map(CategoryResponse::fromEntity) - .collect(Collectors.toList()); + .toList(); + } + + @Transactional(readOnly = true) + public List findByParentId(UUID parentId) { + return categoryRepository.findChildrenByParentId(parentId).stream() + .map(CategoryResponse::fromEntity) + .toList(); } // ------------------- 단일 조회 ------------------- diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java index 863a3b01..e0ca0d64 100644 --- a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java +++ b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java @@ -18,8 +18,11 @@ public class CategoryController { // ------------------- 전체 조회 ------------------- @GetMapping - public List getAllCategories() { - return categoryService.findAllCategories(); + public List getAllCategories(@RequestParam(required = false) UUID parentId) { + if (parentId != null) { + return categoryService.findByParentId(parentId); + } + return categoryService.findRootCategories(); } // ------------------- 단일 조회 ------------------- From 28ddfb623292a50f7ab9b305c197b80a6d665d96 Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sat, 25 Oct 2025 21:50:10 +0900 Subject: [PATCH 2/5] =?UTF-8?q?refactor=20#202:=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=20BaseEntity=20=EC=83=81=EC=86=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../irum/come2us/domain/category/domain/entity/Category.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java b/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java index 3034bca8..d4b925d6 100644 --- a/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java +++ b/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java @@ -1,5 +1,6 @@ package com.irum.come2us.domain.category.domain.entity; +import com.irum.come2us.global.domain.BaseEntity; import com.irum.come2us.global.presentation.advice.exception.CommonException; import com.irum.come2us.global.presentation.advice.exception.errorcode.CategoryErrorCode; import jakarta.persistence.*; @@ -15,7 +16,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor(access = AccessLevel.PRIVATE) @Builder(access = AccessLevel.PRIVATE) -public class Category { +public class Category extends BaseEntity { private static final int MAX_DEPTH = 3; From cf250d736f7cfb070a80e0d8ddfd76efd0f54f36 Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sat, 25 Oct 2025 22:20:03 +0900 Subject: [PATCH 3/5] =?UTF-8?q?refactor=20#202:=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20Request=20=EA=B2=80=EC=A6=9D?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/service/CategoryService.java | 11 +++-------- .../domain/category/domain/entity/Category.java | 2 -- .../domain/repository/CategoryRepository.java | 2 +- .../controller/CategoryController.java | 15 +++++---------- .../dto/request/CategoryCreateRequest.java | 4 +++- .../dto/request/CategoryUpdateRequest.java | 5 +++++ .../dto/response/CategoryResponse.java | 2 -- 7 files changed, 17 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryUpdateRequest.java diff --git a/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java b/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java index 7960753f..537fef56 100644 --- a/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java +++ b/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java @@ -3,6 +3,7 @@ import com.irum.come2us.domain.category.domain.entity.Category; import com.irum.come2us.domain.category.domain.repository.CategoryRepository; import com.irum.come2us.domain.category.presentation.dto.request.CategoryCreateRequest; +import com.irum.come2us.domain.category.presentation.dto.request.CategoryUpdateRequest; import com.irum.come2us.domain.category.presentation.dto.response.CategoryResponse; import com.irum.come2us.global.presentation.advice.exception.CommonException; import com.irum.come2us.global.presentation.advice.exception.errorcode.CategoryErrorCode; @@ -20,7 +21,6 @@ public class CategoryService { private final CategoryRepository categoryRepository; - // ------------------- 전체 조회 ------------------- @Transactional(readOnly = true) public List findRootCategories() { return categoryRepository.findByParentIsNull().stream() @@ -35,7 +35,6 @@ public List findByParentId(UUID parentId) { .toList(); } - // ------------------- 단일 조회 ------------------- @Transactional(readOnly = true) public CategoryResponse getCategoryById(UUID id) { Category category = @@ -46,7 +45,6 @@ public CategoryResponse getCategoryById(UUID id) { return CategoryResponse.fromEntity(category); } - // ------------------- 트리 조회 ------------------- @Transactional(readOnly = true) public List findCategoryTree() { List roots = categoryRepository.findByParentIsNull(); @@ -55,7 +53,6 @@ public List findCategoryTree() { .collect(Collectors.toList()); } - // ------------------- 생성 ------------------- public CategoryResponse createCategory(CategoryCreateRequest request) { Category category; @@ -76,18 +73,16 @@ public CategoryResponse createCategory(CategoryCreateRequest request) { return CategoryResponse.fromEntity(saved); } - // ------------------- 수정 ------------------- - public CategoryResponse updateCategory(UUID id, String newName) { + public CategoryResponse updateCategory(UUID id, CategoryUpdateRequest request) { Category category = categoryRepository .findById(id) .orElseThrow( () -> new CommonException(CategoryErrorCode.CATEGORY_NOT_FOUND)); - category.updateName(newName); + category.updateName(request.name()); return CategoryResponse.fromEntity(category); } - // ------------------- 삭제 ------------------- public void deleteCategory(UUID id) { Category category = categoryRepository diff --git a/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java b/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java index d4b925d6..7b551341 100644 --- a/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java +++ b/src/main/java/com/irum/come2us/domain/category/domain/entity/Category.java @@ -38,7 +38,6 @@ public class Category extends BaseEntity { @Column(name = "depth", nullable = false) private int depth; - // ------------------- 생성 메서드 ------------------- public static Category createRootCategory(String name) { return Category.builder().name(name).depth(1).build(); } @@ -59,7 +58,6 @@ private void addChild(Category child) { this.children.add(child); } - // ------------------- 수정 메서드 ------------------- public void updateName(String name) { this.name = name; } diff --git a/src/main/java/com/irum/come2us/domain/category/domain/repository/CategoryRepository.java b/src/main/java/com/irum/come2us/domain/category/domain/repository/CategoryRepository.java index 817c6ea2..2f50cb44 100644 --- a/src/main/java/com/irum/come2us/domain/category/domain/repository/CategoryRepository.java +++ b/src/main/java/com/irum/come2us/domain/category/domain/repository/CategoryRepository.java @@ -8,7 +8,7 @@ import org.springframework.data.repository.query.Param; public interface CategoryRepository extends JpaRepository { - List findByParentIsNull(); // 루트 카테고리 조회 + List findByParentIsNull(); @Query("SELECT c FROM Category c WHERE c.parent.categoryId = :parentId") List findChildrenByParentId(@Param("parentId") UUID parentId); diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java index e0ca0d64..383846a2 100644 --- a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java +++ b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java @@ -2,9 +2,10 @@ import com.irum.come2us.domain.category.application.service.CategoryService; import com.irum.come2us.domain.category.presentation.dto.request.CategoryCreateRequest; +import com.irum.come2us.domain.category.presentation.dto.request.CategoryUpdateRequest; import com.irum.come2us.domain.category.presentation.dto.response.CategoryResponse; +import jakarta.validation.Valid; import java.util.List; -import java.util.Map; import java.util.UUID; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -16,7 +17,6 @@ public class CategoryController { private final CategoryService categoryService; - // ------------------- 전체 조회 ------------------- @GetMapping public List getAllCategories(@RequestParam(required = false) UUID parentId) { if (parentId != null) { @@ -25,32 +25,27 @@ public List getAllCategories(@RequestParam(required = false) U return categoryService.findRootCategories(); } - // ------------------- 단일 조회 ------------------- @GetMapping("/{id}") public CategoryResponse getCategoryById(@PathVariable UUID id) { return categoryService.getCategoryById(id); } - // ------------------- 트리 조회 ------------------- @GetMapping("/tree") public List getCategoryTree() { return categoryService.findCategoryTree(); } - // ------------------- 생성 ------------------- @PostMapping - public CategoryResponse createCategory(@RequestBody CategoryCreateRequest request) { + public CategoryResponse createCategory(@Valid @RequestBody CategoryCreateRequest request) { return categoryService.createCategory(request); } - // ------------------- 수정 ------------------- @PatchMapping("/{id}") public CategoryResponse updateCategory( - @PathVariable UUID id, @RequestBody Map request) { - return categoryService.updateCategory(id, request.get("name")); + @PathVariable UUID id, @Valid @RequestBody CategoryUpdateRequest request) { + return categoryService.updateCategory(id, request); } - // ------------------- 삭제 ------------------- @DeleteMapping("/{id}") public void deleteCategory(@PathVariable UUID id) { categoryService.deleteCategory(id); diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryCreateRequest.java b/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryCreateRequest.java index fb552c54..9bbcedd0 100644 --- a/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryCreateRequest.java +++ b/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryCreateRequest.java @@ -1,6 +1,8 @@ package com.irum.come2us.domain.category.presentation.dto.request; +import jakarta.validation.constraints.NotBlank; import java.util.UUID; -public record CategoryCreateRequest(String name, UUID parentId // null이면 루트 카테고리 +public record CategoryCreateRequest( + @NotBlank(message = "카테고리명은 필수 입력값입니다.") String name, UUID parentId // null이면 루트 카테고리 ) {} diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryUpdateRequest.java b/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryUpdateRequest.java new file mode 100644 index 00000000..393391a5 --- /dev/null +++ b/src/main/java/com/irum/come2us/domain/category/presentation/dto/request/CategoryUpdateRequest.java @@ -0,0 +1,5 @@ +package com.irum.come2us.domain.category.presentation.dto.request; + +import jakarta.validation.constraints.NotBlank; + +public record CategoryUpdateRequest(@NotBlank(message = "카테고리명은 필수 입력값입니다.") String name) {} diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/dto/response/CategoryResponse.java b/src/main/java/com/irum/come2us/domain/category/presentation/dto/response/CategoryResponse.java index 67eb5dfc..af52a324 100644 --- a/src/main/java/com/irum/come2us/domain/category/presentation/dto/response/CategoryResponse.java +++ b/src/main/java/com/irum/come2us/domain/category/presentation/dto/response/CategoryResponse.java @@ -11,7 +11,6 @@ public record CategoryResponse( UUID parentId, List children // 트리 조회용 ) { - // ------------------- 단일 조회용 ------------------- public static CategoryResponse fromEntity(Category category) { return new CategoryResponse( category.getCategoryId(), @@ -21,7 +20,6 @@ public static CategoryResponse fromEntity(Category category) { null); } - // ------------------- 트리 조회용 ------------------- public static CategoryResponse fromEntityWithChildren(Category category) { return new CategoryResponse( category.getCategoryId(), From dcc59c59464d031fc7c37628f0a2849db774861c Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sat, 25 Oct 2025 22:21:52 +0900 Subject: [PATCH 4/5] =?UTF-8?q?refactor=20#202:=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EC=A1=B0=ED=9A=8C=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=8B=A8=EC=88=9C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/application/service/CategoryService.java | 9 +++++---- .../presentation/controller/CategoryController.java | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java b/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java index 537fef56..bbcb2957 100644 --- a/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java +++ b/src/main/java/com/irum/come2us/domain/category/application/service/CategoryService.java @@ -4,6 +4,7 @@ import com.irum.come2us.domain.category.domain.repository.CategoryRepository; import com.irum.come2us.domain.category.presentation.dto.request.CategoryCreateRequest; import com.irum.come2us.domain.category.presentation.dto.request.CategoryUpdateRequest; +import com.irum.come2us.domain.category.presentation.dto.response.CategoryInfoResponse; import com.irum.come2us.domain.category.presentation.dto.response.CategoryResponse; import com.irum.come2us.global.presentation.advice.exception.CommonException; import com.irum.come2us.global.presentation.advice.exception.errorcode.CategoryErrorCode; @@ -22,16 +23,16 @@ public class CategoryService { private final CategoryRepository categoryRepository; @Transactional(readOnly = true) - public List findRootCategories() { + public List findRootCategories() { return categoryRepository.findByParentIsNull().stream() - .map(CategoryResponse::fromEntity) + .map(CategoryInfoResponse::from) .toList(); } @Transactional(readOnly = true) - public List findByParentId(UUID parentId) { + public List findByParentId(UUID parentId) { return categoryRepository.findChildrenByParentId(parentId).stream() - .map(CategoryResponse::fromEntity) + .map(CategoryInfoResponse::from) .toList(); } diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java index 383846a2..09365b8d 100644 --- a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java +++ b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java @@ -3,6 +3,7 @@ import com.irum.come2us.domain.category.application.service.CategoryService; import com.irum.come2us.domain.category.presentation.dto.request.CategoryCreateRequest; import com.irum.come2us.domain.category.presentation.dto.request.CategoryUpdateRequest; +import com.irum.come2us.domain.category.presentation.dto.response.CategoryInfoResponse; import com.irum.come2us.domain.category.presentation.dto.response.CategoryResponse; import jakarta.validation.Valid; import java.util.List; @@ -18,7 +19,7 @@ public class CategoryController { private final CategoryService categoryService; @GetMapping - public List getAllCategories(@RequestParam(required = false) UUID parentId) { + public List getAllCategories(@RequestParam(required = false) UUID parentId) { if (parentId != null) { return categoryService.findByParentId(parentId); } From ab9b126661561e19ba77f1029d512879af48f0b3 Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sat, 25 Oct 2025 22:22:36 +0900 Subject: [PATCH 5/5] =?UTF-8?q?refactor=20#202:=20Spotless=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/presentation/controller/CategoryController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java index 09365b8d..9685ae08 100644 --- a/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java +++ b/src/main/java/com/irum/come2us/domain/category/presentation/controller/CategoryController.java @@ -19,7 +19,8 @@ public class CategoryController { private final CategoryService categoryService; @GetMapping - public List getAllCategories(@RequestParam(required = false) UUID parentId) { + public List getAllCategories( + @RequestParam(required = false) UUID parentId) { if (parentId != null) { return categoryService.findByParentId(parentId); }