Skip to content

Commit b573de6

Browse files
authored
Merge pull request #115 from TaskFlow-CLAP/CLAP-140
CLAP-140 관리자 회원 수정 API 구현 및 카테고리 추가 Usecase 통합
2 parents be511ef + 2ba9780 commit b573de6

20 files changed

+196
-92
lines changed
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package clap.server.adapter.inbound.web.admin;
22

33
import clap.server.adapter.inbound.security.SecurityUserDetails;
4-
import clap.server.adapter.inbound.web.dto.AddSubCategoryRequest;
4+
import clap.server.adapter.inbound.web.dto.admin.AddSubCategoryRequest;
55
import clap.server.adapter.inbound.web.dto.admin.AddMainCategoryRequest;
6-
import clap.server.application.port.inbound.management.AddMainCategoryUsecase;
7-
import clap.server.application.port.inbound.management.AddSubCategoryUsecase;
6+
import clap.server.application.port.inbound.admin.AddCategoryUsecase;
87
import clap.server.common.annotation.architecture.WebAdapter;
98
import io.swagger.v3.oas.annotations.Operation;
109
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -14,26 +13,27 @@
1413
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1514
import org.springframework.web.bind.annotation.PostMapping;
1615
import org.springframework.web.bind.annotation.RequestBody;
16+
import org.springframework.web.bind.annotation.RequestMapping;
1717

1818
@Tag(name = "카테고리 추가")
1919
@WebAdapter
2020
@RequiredArgsConstructor
21+
@RequestMapping("/api/managements")
2122
public class AddCategoryController {
22-
private final AddMainCategoryUsecase addMainCategoryUsecase;
23-
private final AddSubCategoryUsecase addSubCategoryUsecase;
23+
private final AddCategoryUsecase addCategoryUsecase;
2424

2525
@Operation(summary = "1차 카테고리 추가")
26-
@PostMapping("/api/maincategory")
26+
@PostMapping("/main-category")
2727
@Secured("ROLE_ADMIN")
2828
public void addMainCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @Valid @RequestBody AddMainCategoryRequest addMainCategoryRequest) {
29-
addMainCategoryUsecase.addMainCategory(userInfo.getUserId(), addMainCategoryRequest.code(), addMainCategoryRequest.name());
29+
addCategoryUsecase.addMainCategory(userInfo.getUserId(), addMainCategoryRequest.code(), addMainCategoryRequest.name());
3030
}
3131

3232
@Operation(summary = "2차 카테고리 추가")
33-
@PostMapping("/api/subcategory")
33+
@PostMapping("/sub-category")
3434
@Secured("ROLE_ADMIN")
3535
public void addSubCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @Valid @RequestBody AddSubCategoryRequest addCategoryRequest) {
36-
addSubCategoryUsecase.addSubCategory(userInfo.getUserId(), addCategoryRequest.mainCategoryId(), addCategoryRequest.code(), addCategoryRequest.name());
36+
addCategoryUsecase.addSubCategory(userInfo.getUserId(), addCategoryRequest.mainCategoryId(), addCategoryRequest.code(), addCategoryRequest.name());
3737
}
3838

3939
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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.UpdateMemberInfoRequest;
5+
import clap.server.application.port.inbound.admin.ManageMemberUsecase;
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 jakarta.validation.Valid;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.security.access.annotation.Secured;
12+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
13+
import org.springframework.web.bind.annotation.PathVariable;
14+
import org.springframework.web.bind.annotation.PostMapping;
15+
import org.springframework.web.bind.annotation.RequestBody;
16+
import org.springframework.web.bind.annotation.RequestMapping;
17+
18+
@Tag(name = "회원 관리 - 수정/ 삭제")
19+
@WebAdapter
20+
@RequiredArgsConstructor
21+
@RequestMapping("/api/managements/members")
22+
public class ManageMemberController {
23+
private final ManageMemberUsecase manageMemberUsecase;
24+
25+
@Operation(summary = "단일 회원 등록 API")
26+
@PostMapping("/{memberId}")
27+
@Secured("ROLE_ADMIN")
28+
public void registerMember(@AuthenticationPrincipal SecurityUserDetails userInfo,
29+
@PathVariable Long memberId,
30+
@RequestBody @Valid UpdateMemberInfoRequest request){
31+
manageMemberUsecase.updateMemberInfo(memberId, request);
32+
}
33+
}

src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import clap.server.adapter.inbound.security.SecurityUserDetails;
44
import clap.server.adapter.inbound.web.dto.admin.RegisterMemberRequest;
5-
import clap.server.application.port.inbound.management.RegisterMemberUsecase;
5+
import clap.server.application.port.inbound.admin.RegisterMemberUsecase;
66
import clap.server.common.annotation.architecture.WebAdapter;
77
import io.swagger.v3.oas.annotations.Operation;
88
import io.swagger.v3.oas.annotations.tags.Tag;

src/main/java/clap/server/adapter/inbound/web/dto/AddSubCategoryRequest.java renamed to src/main/java/clap/server/adapter/inbound/web/dto/admin/AddSubCategoryRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.adapter.inbound.web.dto;
1+
package clap.server.adapter.inbound.web.dto.admin;
22

33
import jakarta.validation.constraints.Min;
44
import jakarta.validation.constraints.NotBlank;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package clap.server.adapter.inbound.web.dto.admin;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import jakarta.validation.constraints.NotBlank;
6+
import jakarta.validation.constraints.NotNull;
7+
import jakarta.validation.constraints.Pattern;
8+
9+
public record UpdateMemberInfoRequest(
10+
@NotBlank @Schema(description = "회원 이름", example = "서주원")
11+
String name,
12+
@NotBlank
13+
@Pattern(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$",
14+
message = "올바른 이메일 형식이 아닙니다.")
15+
@Schema(description = "회원 이메일", example = "siena@gmail.com")
16+
String email,
17+
@NotNull @Schema(description = "승인 권한 여부")
18+
Boolean isReviewer,
19+
@NotNull @Schema(description = "부서 ID")
20+
Long departmentId,
21+
@NotNull @Schema(description = "회원 역할")
22+
MemberRole role,
23+
@NotBlank @Schema(description = "회원 직책")
24+
String departmentRole
25+
) {
26+
}
27+

src/main/java/clap/server/application/mapper/MemberMapper.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,6 @@ public static Member toMember(MemberInfo memberInfo) {
1818
.build();
1919
}
2020

21-
public static MemberInfo toMemberInfo(String name, String email, String nickname, boolean isReviewer,
22-
Department department, MemberRole role, String departmentRole) {
23-
return MemberInfo.builder()
24-
.name(name)
25-
.email(email)
26-
.nickname(nickname)
27-
.isReviewer(isReviewer)
28-
.department(department)
29-
.role(role)
30-
.departmentRole(departmentRole)
31-
.build();
32-
}
33-
3421
public static MemberProfileResponse toMemberProfileResponse(Member member) {
3522
return new MemberProfileResponse(
3623
member.getMemberId(),
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
public interface AddCategoryUsecase {
4+
void addMainCategory(Long adminId, String code, String name);
5+
void addSubCategory(Long adminId, Long mainCategoryId, String code, String name);
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
import clap.server.adapter.inbound.web.dto.admin.UpdateMemberInfoRequest;
4+
5+
public interface ManageMemberUsecase {
6+
void updateMemberInfo(Long memberId, UpdateMemberInfoRequest request);
7+
}

src/main/java/clap/server/application/port/inbound/management/RegisterMemberUsecase.java renamed to src/main/java/clap/server/application/port/inbound/admin/RegisterMemberUsecase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.application.port.inbound.management;
1+
package clap.server.application.port.inbound.admin;
22

33
import clap.server.adapter.inbound.web.dto.admin.RegisterMemberRequest;
44

src/main/java/clap/server/application/port/inbound/management/AddMainCategoryUsecase.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)