feat: 实现完整的 RBAC 权限管理系统与基础设施增强
在初始认证基础上,新增完整的 RBAC 权限模型(角色、权限、菜单三级管理), 集成审计日志、接口限流、登录失败锁定、Refresh Token 机制、Redis 分布式缓存与锁、 RocketMQ 消息队列,并引入 Flyway 数据库版本管理,同时补充项目文档与使用示例
This commit is contained in:
228
src/main/java/com/aisi/template/domain/vo/MenuVo.java
Normal file
228
src/main/java/com/aisi/template/domain/vo/MenuVo.java
Normal file
@@ -0,0 +1,228 @@
|
||||
package com.aisi.template.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 菜单视图对象
|
||||
* 用于返回菜单信息给前端
|
||||
*
|
||||
* 主要字段:
|
||||
* 1. 基本信息:菜单ID、父菜单ID、菜单名称、菜单类型
|
||||
* 2. 菜单配置:路径、组件、图标、排序
|
||||
* 3. 显示控制:可见性、启用状态
|
||||
* 4. 权限控制:权限编码
|
||||
* 5. 子菜单:子菜单列表(树形结构)
|
||||
* 6. 时间信息:创建时间、更新时间
|
||||
*
|
||||
* @author Claude
|
||||
* @since 2024-04-09
|
||||
*/
|
||||
public class MenuVo {
|
||||
|
||||
/**
|
||||
* 菜单ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父菜单ID
|
||||
* - 0 或 null:根菜单
|
||||
* - 其他值:子菜单
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 菜单名称
|
||||
*/
|
||||
private String menuName;
|
||||
|
||||
/**
|
||||
* 菜单类型
|
||||
* - 1:目录(DIRECTORY)
|
||||
* - 2:菜单(MENU)
|
||||
* - 3:按钮(BUTTON)
|
||||
*/
|
||||
private Integer menuType;
|
||||
|
||||
/**
|
||||
* 菜单路径
|
||||
* - 用于前端路由
|
||||
*/
|
||||
private String menuPath;
|
||||
|
||||
/**
|
||||
* 组件路径
|
||||
* - 前端组件文件路径
|
||||
*/
|
||||
private String component;
|
||||
|
||||
/**
|
||||
* 菜单图标
|
||||
* - 图标名称
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
* - 数值越小越靠前
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 可见性
|
||||
* - 1:可见
|
||||
* - 0:不可见
|
||||
*/
|
||||
private Integer visible;
|
||||
|
||||
/**
|
||||
* 菜单状态
|
||||
* - 1:启用
|
||||
* - 0:禁用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 权限编码
|
||||
* - 用于控制菜单的访问权限
|
||||
*/
|
||||
private String permissionCode;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
/**
|
||||
* 子菜单列表
|
||||
* - 用于构建菜单树形结构
|
||||
* - 递归结构
|
||||
*/
|
||||
private List<MenuVo> children;
|
||||
|
||||
public MenuVo() {
|
||||
}
|
||||
|
||||
// Getters and Setters
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getParentId() {
|
||||
return parentId;
|
||||
}
|
||||
|
||||
public void setParentId(Long parentId) {
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
public String getMenuName() {
|
||||
return menuName;
|
||||
}
|
||||
|
||||
public void setMenuName(String menuName) {
|
||||
this.menuName = menuName;
|
||||
}
|
||||
|
||||
public Integer getMenuType() {
|
||||
return menuType;
|
||||
}
|
||||
|
||||
public void setMenuType(Integer menuType) {
|
||||
this.menuType = menuType;
|
||||
}
|
||||
|
||||
public String getMenuPath() {
|
||||
return menuPath;
|
||||
}
|
||||
|
||||
public void setMenuPath(String menuPath) {
|
||||
this.menuPath = menuPath;
|
||||
}
|
||||
|
||||
public String getComponent() {
|
||||
return component;
|
||||
}
|
||||
|
||||
public void setComponent(String component) {
|
||||
this.component = component;
|
||||
}
|
||||
|
||||
public String getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
public void setIcon(String icon) {
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
public Integer getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
public void setSortOrder(Integer sortOrder) {
|
||||
this.sortOrder = sortOrder;
|
||||
}
|
||||
|
||||
public Integer getVisible() {
|
||||
return visible;
|
||||
}
|
||||
|
||||
public void setVisible(Integer visible) {
|
||||
this.visible = visible;
|
||||
}
|
||||
|
||||
public Integer getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(Integer status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getPermissionCode() {
|
||||
return permissionCode;
|
||||
}
|
||||
|
||||
public void setPermissionCode(String permissionCode) {
|
||||
this.permissionCode = permissionCode;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(LocalDateTime updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public List<MenuVo> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<MenuVo> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user