Skip to content

Commit 8146776

Browse files
committed
CLAP-147 Feature : 카테고리 수정 API 구현
<footer> - 관련: #119
1 parent eb34ee8 commit 8146776

File tree

5 files changed

+82
-2
lines changed

5 files changed

+82
-2
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package clap.server.adapter.inbound.web.admin;
2+
3+
import clap.server.adapter.inbound.security.SecurityUserDetails;
4+
import clap.server.adapter.inbound.web.dto.admin.UpdateCategoryRequest;
5+
import clap.server.application.port.inbound.admin.UpdateCategoryUsecase;
6+
import clap.server.common.annotation.architecture.WebAdapter;
7+
import io.swagger.v3.oas.annotations.Operation;
8+
import io.swagger.v3.oas.annotations.tags.Tag;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.security.access.annotation.Secured;
11+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
12+
import org.springframework.web.bind.annotation.PatchMapping;
13+
import org.springframework.web.bind.annotation.RequestMapping;
14+
15+
@Tag(name = "카테고리 수정")
16+
@WebAdapter
17+
@RequiredArgsConstructor
18+
@RequestMapping("/api")
19+
public class UpdateCategoryController {
20+
private final UpdateCategoryUsecase updateCategoryUsecase;
21+
22+
@Operation(summary = "카테고리 수정")
23+
@PatchMapping("/category")
24+
@Secured("ROLE_ADMIN")
25+
public void updateCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, UpdateCategoryRequest updateCategoryRequest) {
26+
updateCategoryUsecase.updateCategory(userInfo.getUserId(), updateCategoryRequest.categoryId(), updateCategoryRequest.name(), updateCategoryRequest.code());
27+
}
28+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package clap.server.adapter.inbound.web.dto.admin;
2+
3+
import jakarta.validation.constraints.Min;
4+
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.Pattern;
6+
import org.hibernate.validator.constraints.Length;
7+
8+
public record UpdateCategoryRequest(
9+
@Min(1)
10+
Long categoryId,
11+
@NotBlank @Length(max = 20)
12+
String name,
13+
@NotBlank @Pattern(regexp = "^[A-Z]{1,2}$", message = "올바른 카테고리 코드 형식이 아닙니다.")
14+
String code
15+
) {
16+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
public interface UpdateCategoryUsecase {
4+
void updateCategory(Long adminId, Long categoryId, String name, String code);
5+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package clap.server.application.service.admin;
2+
3+
import clap.server.application.port.inbound.admin.UpdateCategoryUsecase;
4+
import clap.server.application.port.outbound.member.LoadMemberPort;
5+
import clap.server.application.port.outbound.task.LoadCategoryPort;
6+
import clap.server.common.annotation.architecture.ApplicationService;
7+
import clap.server.domain.model.member.Member;
8+
import clap.server.exception.ApplicationException;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.transaction.annotation.Transactional;
11+
12+
import static clap.server.exception.code.MemberErrorCode.ACTIVE_MEMBER_NOT_FOUND;
13+
import static clap.server.exception.code.TaskErrorCode.CATEGORY_NOT_FOUND;
14+
15+
@ApplicationService
16+
@RequiredArgsConstructor
17+
public class UpdateCategoryService implements UpdateCategoryUsecase {
18+
private final LoadCategoryPort loadCategoryPort;
19+
private final LoadMemberPort loadMemberPort;
20+
21+
@Override
22+
@Transactional
23+
public void updateCategory(Long adminId, Long categoryId, String name, String code) {
24+
Member admin = loadMemberPort.findActiveMemberById(adminId).orElseThrow(() -> new ApplicationException(ACTIVE_MEMBER_NOT_FOUND));
25+
loadCategoryPort.findById(categoryId)
26+
.orElseThrow(() -> new ApplicationException(CATEGORY_NOT_FOUND))
27+
.updateCategory(admin, name, code);
28+
}
29+
}

src/main/java/clap/server/domain/model/task/Category.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public static Category createSubCategory(Member admin, Category mainCategory, St
4040
.build();
4141
}
4242

43-
public void updateMainCategory(Category mainCategory){
44-
this.mainCategory = mainCategory;
43+
public void updateCategory(Member admin, String code, String name){
44+
this.admin = admin;
45+
this.code = code;
46+
this.name = name;
4547
}
4648
}
4749

0 commit comments

Comments
 (0)