diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuService.java index 41711cc..6fd5aac 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuService.java @@ -83,10 +83,6 @@ public class MenuService { menuRepository.deleteById(id); } - public Optional findById(Long menuId) { - return menuRepository.findById(menuId); - } - public Optional find(Long menuId) { return menuRepository.findById(menuId); } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/RoleMenuType.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/RoleMenuType.java new file mode 100644 index 0000000..79d5254 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/RoleMenuType.java @@ -0,0 +1,14 @@ +package com.bpgroup.poc.admin.domain.base.role; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum RoleMenuType { + REQUESTER("요청자"), + APPROVER("승인자"), + MANAGER("관리자"); + + private final String description; +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java index 39c79f2..926bbb0 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java @@ -2,6 +2,7 @@ package com.bpgroup.poc.admin.domain.base.role.entity; import com.bpgroup.poc.admin.domain.base.BaseEntity; import com.bpgroup.poc.admin.domain.base.menu.entity.Menu; +import com.bpgroup.poc.admin.domain.base.role.RoleMenuType; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -23,11 +24,17 @@ public class RoleMenu extends BaseEntity { @JoinColumn(name = "menu_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Menu menu; + @Enumerated(EnumType.STRING) + @Column(name = "role_menu_type", nullable = false) + private RoleMenuType roleMenuType; + + @Builder - public static RoleMenu of(Role role, Menu menu) { + public static RoleMenu of(Role role, Menu menu, RoleMenuType roleMenuType) { RoleMenu roleMenu = new RoleMenu(); roleMenu.role = role; roleMenu.menu = menu; + roleMenu.roleMenuType = roleMenuType; roleMenu.role.getRoleMenus().add(roleMenu); return roleMenu; } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java index 800b9c0..294e7a3 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java @@ -1,6 +1,7 @@ package com.bpgroup.poc.admin.domain.base.role.service; import com.bpgroup.poc.admin.domain.base.menu.entity.Menu; +import com.bpgroup.poc.admin.domain.base.role.RoleMenuType; import com.bpgroup.poc.admin.domain.base.role.entity.Role; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu; import jakarta.validation.constraints.NotNull; @@ -15,17 +16,20 @@ public class RoleAddMenuCommand { private Role role; @NotNull private Menu menu; + @NotNull + private RoleMenuType roleMenuType; @Builder - public static RoleAddMenuCommand of(Role role, Menu menu) { + public static RoleAddMenuCommand of(Role role, Menu menu, RoleMenuType roleMenuType) { RoleAddMenuCommand command = new RoleAddMenuCommand(); command.role = role; command.menu = menu; + command.roleMenuType = roleMenuType; return command; } public RoleMenu toEntity() { - return RoleMenu.of(role, menu); + return RoleMenu.of(role, menu, roleMenuType); } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java index b269d07..eb5fb68 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java @@ -1,6 +1,5 @@ package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.base.menu.entity.MenuRepository; import com.bpgroup.poc.admin.domain.base.role.entity.Role; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository; import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository; @@ -21,7 +20,6 @@ import java.util.Set; public class RoleService { private final RoleRepository roleRepository; - private final MenuRepository menuRepository; private final RoleMenuRepository roleMenuRepository; /** diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java index 122a656..0ff5c8e 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java @@ -61,8 +61,8 @@ public class RoleWebService { Role role = findRole.get(); Set commands = request.getMenus().stream() - .map(menuId -> { - Optional findMenu = menuService.find(menuId); + .map(menuRecord -> { + Optional findMenu = menuService.find(menuRecord.menuId()); if (findMenu.isEmpty()) { throw new IllegalArgumentException("Menu Not Found"); } @@ -70,6 +70,7 @@ public class RoleWebService { return RoleAddMenuCommand.builder() .role(role) .menu(menu) + .roleMenuType(menuRecord.roleMenuType()) .build(); } ) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java index 7e6c67b..e57795b 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java @@ -1,5 +1,6 @@ package com.bpgroup.poc.admin.web.main.admin.role.reqres; +import com.bpgroup.poc.admin.domain.base.role.RoleMenuType; import com.bpgroup.poc.admin.web.common.CommonResponse; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -8,8 +9,8 @@ import lombok.Data; import lombok.Getter; import lombok.ToString; -import java.util.HashSet; -import java.util.Set; +import java.util.ArrayList; +import java.util.List; public class RoleAddMenu { @@ -19,7 +20,10 @@ public class RoleAddMenu { private Long roleId; @NotNull @Size(min = 1) - private Set menus = new HashSet<>(); + private List menus = new ArrayList<>(); + + public record Menu(@NotNull Long menuId, @NotNull RoleMenuType roleMenuType) { + } } diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java index 2241853..113e75e 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java @@ -1,5 +1,6 @@ package com.bpgroup.poc.admin.domain.base.role.service; +import com.bpgroup.poc.admin.domain.base.role.RoleMenuType; import com.bpgroup.poc.admin.domain.base.role.entity.Role; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu; import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository; @@ -121,10 +122,12 @@ class RoleServiceTest extends MariaDBTestEnv { RoleAddMenuCommand.builder() .role(saveRole) .menu(menu1) + .roleMenuType(RoleMenuType.MANAGER) .build(), RoleAddMenuCommand.builder() .role(saveRole) .menu(menu2) + .roleMenuType(RoleMenuType.MANAGER) .build() ) ); @@ -152,6 +155,7 @@ class RoleServiceTest extends MariaDBTestEnv { RoleMenu.builder() .role(saveRole) .menu(saveMenu1) + .roleMenuType(RoleMenuType.MANAGER) .build() ); @@ -159,6 +163,7 @@ class RoleServiceTest extends MariaDBTestEnv { RoleMenu.builder() .role(saveRole) .menu(saveMenu2) + .roleMenuType(RoleMenuType.MANAGER) .build() ); flushAndClear(); @@ -189,6 +194,7 @@ class RoleServiceTest extends MariaDBTestEnv { RoleMenu.builder() .role(saveRole) .menu(saveMenu1) + .roleMenuType(RoleMenuType.MANAGER) .build() ); @@ -196,6 +202,7 @@ class RoleServiceTest extends MariaDBTestEnv { RoleMenu.builder() .role(saveRole) .menu(saveMenu2) + .roleMenuType(RoleMenuType.MANAGER) .build() );