From 14a7477d55bd04a0d9c4c35b97379c2389f12099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=9A=E8=BE=B0=E5=85=88=E7=94=9F?= Date: Sun, 1 Dec 2024 00:03:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=92=E8=89=B2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deploy/backend/api/RoleApiController.java | 22 ++++++ .../qqchen/deploy/backend/entity/Menu.java | 5 -- .../qqchen/deploy/backend/entity/Role.java | 72 ++++--------------- .../qqchen/deploy/backend/model/MenuDTO.java | 5 -- .../qqchen/deploy/backend/model/RoleDTO.java | 5 +- .../deploy/backend/model/query/RoleQuery.java | 14 ++++ .../backend/model/request/MenuRequest.java | 8 +-- .../deploy/backend/service/IMenuService.java | 3 - .../deploy/backend/service/IRoleService.java | 4 -- .../backend/service/impl/MenuServiceImpl.java | 21 +++--- .../backend/service/impl/RoleServiceImpl.java | 12 ++-- 11 files changed, 68 insertions(+), 103 deletions(-) create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/api/RoleApiController.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/model/query/RoleQuery.java diff --git a/backend/src/main/java/com/qqchen/deploy/backend/api/RoleApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/api/RoleApiController.java new file mode 100644 index 00000000..13aaa950 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/api/RoleApiController.java @@ -0,0 +1,22 @@ +package com.qqchen.deploy.backend.api; + +import com.qqchen.deploy.backend.entity.Role; +import com.qqchen.deploy.backend.framework.controller.BaseController; +import com.qqchen.deploy.backend.model.RoleDTO; +import com.qqchen.deploy.backend.model.query.RoleQuery; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Tag(name = "角色管理") +@RestController +@RequestMapping("/api/v1/role") +public class RoleApiController extends BaseController { + + @Override + protected void exportData(jakarta.servlet.http.HttpServletResponse response, List data) { + // TODO: 实现导出功能 + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/entity/Menu.java b/backend/src/main/java/com/qqchen/deploy/backend/entity/Menu.java index 55c125d7..1c2515c7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/entity/Menu.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/entity/Menu.java @@ -66,11 +66,6 @@ public class Menu extends Entity { */ private Boolean hidden; - /** - * 是否启用(true:启用 false:禁用) - */ - private Boolean enabled; - /** * 菜单关联的角色列表 */ diff --git a/backend/src/main/java/com/qqchen/deploy/backend/entity/Role.java b/backend/src/main/java/com/qqchen/deploy/backend/entity/Role.java index 21595499..8542bce7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/entity/Role.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/entity/Role.java @@ -3,84 +3,43 @@ package com.qqchen.deploy.backend.entity; import com.qqchen.deploy.backend.framework.annotation.LogicDelete; import com.qqchen.deploy.backend.framework.domain.Entity; import jakarta.persistence.Column; -import jakarta.persistence.FetchType; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.JoinTable; -import jakarta.persistence.ManyToMany; import jakarta.persistence.Table; -import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.JoinTable; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.FetchType; import java.util.HashSet; import java.util.Set; - -/** - * 角色实体 - */ @Data @EqualsAndHashCode(callSuper = true) @jakarta.persistence.Entity @Table(name = "sys_role") @LogicDelete public class Role extends Entity { - - /** - * 角色编码 - */ - @NotBlank(message = "角色编码不能为空") - @Column(nullable = false, length = 100, unique = true) + + @Column(unique = true, nullable = false, length = 50) private String code; - - /** - * 角色名称 - */ - @NotBlank(message = "角色名称不能为空") - @Column(nullable = false, length = 100) + + @Column(nullable = false, length = 50) private String name; - - /** - * 角色类型(1:系统角色 2:自定义角色) - */ - @Column(nullable = false) - private Integer type; - - /** - * 角色描述 - */ + + @Column(length = 200) private String description; - - /** - * 显示顺序 - */ + @Column(nullable = false) - private Integer sort = 0; - - /** - * 是否启用 - */ - private Boolean enabled; - - /** - * 角色关联的用户列表 - */ - @ManyToMany(mappedBy = "roles") - private Set users = new HashSet<>(); - - /** - * 角色关联的菜单列表 - */ - @ManyToMany(fetch = FetchType.LAZY) + private Integer sort; + + @ManyToMany @JoinTable( name = "sys_role_menu", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "menu_id") ) private Set menus = new HashSet<>(); - - /** - * 角色关联的标签列表 - */ + @ManyToMany(fetch = FetchType.LAZY) @JoinTable( name = "sys_role_tag_relation", @@ -88,5 +47,4 @@ public class Role extends Entity { inverseJoinColumns = @JoinColumn(name = "tag_id") ) private Set tags = new HashSet<>(); - } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/model/MenuDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/model/MenuDTO.java index 678f4d82..04326893 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/model/MenuDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/model/MenuDTO.java @@ -52,11 +52,6 @@ public class MenuDTO extends BaseDTO { */ private Boolean hidden; - /** - * 是否启用(true:启用 false:禁用) - */ - private Boolean enabled; - /** * 子菜单列表 */ diff --git a/backend/src/main/java/com/qqchen/deploy/backend/model/RoleDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/model/RoleDTO.java index 9ae3defa..c912d428 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/model/RoleDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/model/RoleDTO.java @@ -14,9 +14,6 @@ public class RoleDTO extends BaseDTO { private String description; - private Integer type; - private Integer sort; - private Boolean enabled; -} \ No newline at end of file +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/model/query/RoleQuery.java b/backend/src/main/java/com/qqchen/deploy/backend/model/query/RoleQuery.java new file mode 100644 index 00000000..fc2f40a6 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/model/query/RoleQuery.java @@ -0,0 +1,14 @@ +package com.qqchen.deploy.backend.model.query; + +import com.qqchen.deploy.backend.framework.query.BaseQuery; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class RoleQuery extends BaseQuery { + + private String code; + + private String name; +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/model/request/MenuRequest.java b/backend/src/main/java/com/qqchen/deploy/backend/model/request/MenuRequest.java index d8bea810..90acefd7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/model/request/MenuRequest.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/model/request/MenuRequest.java @@ -53,9 +53,5 @@ public class MenuRequest { * 是否隐藏(true:隐藏 false:显示) */ private Boolean hidden; - - /** - * 是否启用(true:启用 false:禁用��� - */ - private Boolean enabled; -} \ No newline at end of file + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/service/IMenuService.java b/backend/src/main/java/com/qqchen/deploy/backend/service/IMenuService.java index 49cfa959..7461b802 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/service/IMenuService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/service/IMenuService.java @@ -1,11 +1,8 @@ package com.qqchen.deploy.backend.service; -import com.qqchen.deploy.backend.entity.User; import com.qqchen.deploy.backend.framework.service.IBaseService; import com.qqchen.deploy.backend.entity.Menu; import com.qqchen.deploy.backend.model.MenuDTO; -import com.qqchen.deploy.backend.model.UserDTO; -import com.qqchen.deploy.backend.model.request.MenuRequest; import com.qqchen.deploy.backend.model.response.MenuResponse; import java.util.List; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/service/IRoleService.java b/backend/src/main/java/com/qqchen/deploy/backend/service/IRoleService.java index 30c9ef89..35a6cf12 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/service/IRoleService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/service/IRoleService.java @@ -10,20 +10,16 @@ public interface IRoleService extends IBaseService { /** * 验证角色编码是否存在 - * @param code 角色编码 */ void validateCode(String code); /** * 验证角色名称是否存在 - * @param name 角色名称 */ void validateName(String name); /** * 获取用户的所有角色ID - * @param userId 用户ID - * @return 角色ID列表 */ List getUserRoleIds(Long userId); } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/service/impl/MenuServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/service/impl/MenuServiceImpl.java index 37ab2e11..8237406b 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/service/impl/MenuServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/service/impl/MenuServiceImpl.java @@ -2,15 +2,10 @@ package com.qqchen.deploy.backend.service.impl; import com.qqchen.deploy.backend.converter.MenuConverter; import com.qqchen.deploy.backend.entity.Menu; -import com.qqchen.deploy.backend.entity.User; import com.qqchen.deploy.backend.framework.annotation.ServiceType; -import com.qqchen.deploy.backend.framework.enums.ResponseCode; -import com.qqchen.deploy.backend.framework.exception.BusinessException; -import com.qqchen.deploy.backend.framework.security.SecurityUtils; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import com.qqchen.deploy.backend.model.MenuDTO; import com.qqchen.deploy.backend.model.UserDTO; -import com.qqchen.deploy.backend.model.response.LoginResponse; import com.qqchen.deploy.backend.model.response.MenuResponse; import com.qqchen.deploy.backend.repository.IMenuRepository; import com.qqchen.deploy.backend.service.IMenuService; @@ -33,10 +28,10 @@ import static com.qqchen.deploy.backend.framework.annotation.ServiceType.Type.DA public class MenuServiceImpl extends BaseServiceImpl implements IMenuService { @Resource - private IMenuRepository repository; + private IMenuRepository menuRepository; @Resource - private MenuConverter converter; + private MenuConverter menuConverter; @Resource private IUserService userService; @@ -46,10 +41,10 @@ public class MenuServiceImpl extends BaseServiceImpl implem @Override public List getMenuTree() { - List allMenus = repository.findByDeletedFalseOrderBySort(); - List menuDTOs = converter.toDtoList(allMenus); + List allMenus = menuRepository.findByDeletedFalseOrderBySort(); + List menuDTOs = menuConverter.toDtoList(allMenus); List menuTree = buildMenuTree(menuDTOs); - return converter.toResponseList(menuTree); + return menuConverter.toResponseList(menuTree); } @Override @@ -61,14 +56,14 @@ public class MenuServiceImpl extends BaseServiceImpl implem List roleIds = roleService.getUserRoleIds(user.getId()); // 3. 获取这些角色关联的所有菜单 - List userMenus = repository.findByRoleIdsAndEnabledTrue(roleIds); + List userMenus = menuRepository.findByRoleIdsAndEnabledTrue(roleIds); // 4. 转换为DTO并构建树形结构 - List menuDTOs = converter.toDtoList(userMenus); + List menuDTOs = menuConverter.toDtoList(userMenus); List menuTree = buildMenuTree(menuDTOs); // 5. 转换为响应对象 - return converter.toResponseList(menuTree); + return menuConverter.toResponseList(menuTree); } private List buildMenuTree(List menus) { diff --git a/backend/src/main/java/com/qqchen/deploy/backend/service/impl/RoleServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/service/impl/RoleServiceImpl.java index d4b2f607..ba1afa20 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/service/impl/RoleServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/service/impl/RoleServiceImpl.java @@ -23,23 +23,23 @@ import static com.qqchen.deploy.backend.framework.annotation.ServiceType.Type.DA public class RoleServiceImpl extends BaseServiceImpl implements IRoleService { @Resource - private IRoleRepository repository; + private IRoleRepository roleRepository; @Override public List getUserRoleIds(Long userId) { - return repository.findRoleIdsByUserId(userId); + return roleRepository.findRoleIdsByUserId(userId); } @Override public void validateCode(String code) { - if (repository.existsByCodeAndDeletedFalse(code)) { + if (roleRepository.existsByCodeAndDeletedFalse(code)) { throw new BusinessException(ResponseCode.ROLE_CODE_EXISTS); } } @Override public void validateName(String name) { - if (repository.existsByNameAndDeletedFalse(name)) { + if (roleRepository.existsByNameAndDeletedFalse(name)) { throw new BusinessException(ResponseCode.ROLE_NAME_EXISTS); } } @@ -47,12 +47,12 @@ public class RoleServiceImpl extends BaseServiceImpl implem @Override protected void validateUniqueConstraints(RoleDTO dto) { // 检查角色编码唯一性 - if (repository.existsByCodeAndDeletedFalse(dto.getCode())) { + if (roleRepository.existsByCodeAndDeletedFalse(dto.getCode())) { throw new UniqueConstraintException(ResponseCode.ROLE_CODE_EXISTS, "code", dto.getCode()); } // 检查角色名称唯一性 - if (repository.existsByNameAndDeletedFalse(dto.getName())) { + if (roleRepository.existsByNameAndDeletedFalse(dto.getName())) { throw new UniqueConstraintException(ResponseCode.ROLE_NAME_EXISTS, "name", dto.getName()); } }