feat: 实现完整的 RBAC 权限管理系统与基础设施增强

在初始认证基础上,新增完整的 RBAC 权限模型(角色、权限、菜单三级管理),
  集成审计日志、接口限流、登录失败锁定、Refresh Token 机制、Redis 分布式缓存与锁、
  RocketMQ 消息队列,并引入 Flyway 数据库版本管理,同时补充项目文档与使用示例
This commit is contained in:
2026-04-10 10:58:22 +08:00
parent 3a9bf61839
commit 40c85c3c1f
97 changed files with 13434 additions and 351 deletions

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