admin: 권한 메뉴 타입 추가

This commit is contained in:
geonhos 2024-05-17 11:15:08 +09:00
parent bc853e023e
commit 75da53e469
8 changed files with 45 additions and 14 deletions

View File

@ -83,10 +83,6 @@ public class MenuService {
menuRepository.deleteById(id);
}
public Optional<Menu> findById(Long menuId) {
return menuRepository.findById(menuId);
}
public Optional<Menu> find(Long menuId) {
return menuRepository.findById(menuId);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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;
/**

View File

@ -61,8 +61,8 @@ public class RoleWebService {
Role role = findRole.get();
Set<RoleAddMenuCommand> commands = request.getMenus().stream()
.map(menuId -> {
Optional<Menu> findMenu = menuService.find(menuId);
.map(menuRecord -> {
Optional<Menu> 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();
}
)

View File

@ -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<Long> menus = new HashSet<>();
private List<Menu> menus = new ArrayList<>();
public record Menu(@NotNull Long menuId, @NotNull RoleMenuType roleMenuType) {
}
}

View File

@ -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()
);