ai-admin/docs/java后台管理系统/DESIGN_java后台管理系统.md

8.3 KiB

Java后台管理系统架构设计文档

整体架构图

graph TB
    subgraph "前端层 - Vue3"
        A[管理界面] --> B[Vue Router]
        B --> C[Pinia状态管理]
        C --> D[Axios HTTP客户端]
    end
    
    subgraph "网关层"
        D --> E[Nginx反向代理]
    end
    
    subgraph "后端层 - Spring Boot"
        E --> F[Controller层]
        F --> G[Spring Security]
        G --> H[Service业务层]
        H --> I[MyBatis-Plus数据层]
    end
    
    subgraph "数据层"
        I --> J[MySQL数据库]
    end
    
    subgraph "基础设施"
        K[Redis缓存] --> H
        L[JWT认证] --> G
        M[Swagger文档] --> F
    end

分层设计和核心组件

1. 前端层架构 (Vue3)

graph LR
    subgraph "前端模块"
        A[登录模块] --> E[主布局]
        B[用户管理] --> E
        C[角色管理] --> E  
        D[菜单管理] --> E
        E --> F[路由守卫]
        F --> G[API封装]
        G --> H[工具库]
    end

核心组件:

  • Layout组件: 主布局、侧边栏、顶部导航
  • Auth组件: 登录表单、权限验证
  • Table组件: 数据表格、分页、搜索
  • Form组件: 表单验证、数据提交
  • Dialog组件: 弹窗、确认框

2. 后端层架构 (Spring Boot)

graph TB
    subgraph "Controller层"
        A[AuthController] 
        B[UserController]
        C[RoleController] 
        D[MenuController]
        E[SystemController]
    end
    
    subgraph "Service层"
        F[AuthService]
        G[UserService] 
        H[RoleService]
        I[MenuService]
        J[LogService]
    end
    
    subgraph "Mapper层"
        K[UserMapper]
        L[RoleMapper]
        M[MenuMapper] 
        N[LogMapper]
    end
    
    A --> F
    B --> G
    C --> H
    D --> I
    
    F --> K
    G --> K
    H --> L
    I --> M

核心组件:

  • SecurityConfig: Spring Security配置
  • JwtUtils: JWT工具类
  • GlobalExceptionHandler: 全局异常处理
  • ValidationConfig: 数据验证配置
  • CorsConfig: 跨域配置

模块依赖关系图

graph TD
    A[前端Vue3应用] --> B[后端API网关]
    B --> C[认证授权模块]
    C --> D[用户管理模块]
    C --> E[角色管理模块] 
    C --> F[菜单管理模块]
    
    D --> G[数据访问层]
    E --> G
    F --> G
    
    G --> H[MySQL数据库]
    
    I[日志模块] --> G
    J[监控模块] --> D
    J --> E
    J --> F

接口契约定义

认证接口

POST /api/auth/login:
  请求: {username, password}
  响应: {token, userInfo, permissions}

POST /api/auth/logout:
  请求: {token}
  响应: {message}

GET /api/auth/info:
  请求: Authorization Header
  响应: {userInfo, roles, permissions}

用户管理接口

GET /api/users:
  请求: {page, size, search}
  响应: {data[], total, pages}

POST /api/users:
  请求: {username, password, email, roleIds[]}
  响应: {id, message}

PUT /api/users/{id}:
  请求: {username, email, status, roleIds[]}
  响应: {message}

DELETE /api/users/{id}:
  响应: {message}

角色管理接口

GET /api/roles:
  响应: {data[], total}

POST /api/roles:
  请求: {roleName, description, menuIds[]}
  响应: {id, message}

PUT /api/roles/{id}:
  请求: {roleName, description, menuIds[]}
  响应: {message}

DELETE /api/roles/{id}:
  响应: {message}

菜单管理接口

GET /api/menus/tree:
  响应: {treeData[]}

POST /api/menus:
  请求: {menuName, path, component, parentId, icon, sort}
  响应: {id, message}

PUT /api/menus/{id}:
  请求: {menuName, path, component, icon, sort, status}
  响应: {message}

DELETE /api/menus/{id}:
  响应: {message}

数据流向图

sequenceDiagram
    participant U as 用户
    participant F as 前端Vue3
    participant G as 网关Nginx  
    participant S as Spring Boot
    participant D as MySQL
    
    U->>F: 1.登录请求
    F->>G: 2.POST /api/auth/login
    G->>S: 3.转发请求
    S->>D: 4.验证用户信息
    D-->>S: 5.返回用户数据
    S-->>G: 6.生成JWT返回
    G-->>F: 7.返回Token
    F-->>U: 8.登录成功
    
    U->>F: 9.访问用户管理
    F->>G: 10.GET /api/users (带Token)
    G->>S: 11.验证Token
    S->>D: 12.查询用户列表
    D-->>S: 13.返回数据
    S-->>G: 14.返回JSON
    G-->>F: 15.返回数据
    F-->>U: 16.渲染页面

异常处理策略

全局异常处理

@RestControllerAdvice
public class GlobalExceptionHandler {
    
    // 参数验证异常
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Result handleValidationException() {}
    
    // 认证异常  
    @ExceptionHandler(AuthenticationException.class)
    public Result handleAuthException() {}
    
    // 授权异常
    @ExceptionHandler(AccessDeniedException.class) 
    public Result handleAccessDeniedException() {}
    
    // 业务异常
    @ExceptionHandler(BusinessException.class)
    public Result handleBusinessException() {}
    
    // 系统异常
    @ExceptionHandler(Exception.class)
    public Result handleSystemException() {}
}

前端异常处理

// Axios响应拦截器
axios.interceptors.response.use(
  response => response.data,
  error => {
    const { status, data } = error.response
    
    switch(status) {
      case 401: // 未认证
        router.push('/login')
        break
      case 403: // 无权限
        ElMessage.error('权限不足')
        break  
      case 500: // 服务器错误
        ElMessage.error('服务器异常')
        break
      default:
        ElMessage.error(data.message || '请求失败')
    }
    
    return Promise.reject(error)
  }
)

数据库设计

核心表结构

-- 用户表
CREATE TABLE sys_user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(100) NOT NULL,
    email VARCHAR(100),
    phone VARCHAR(20),
    status TINYINT DEFAULT 1 COMMENT '1启用 0禁用',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 角色表  
CREATE TABLE sys_role (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    role_name VARCHAR(50) UNIQUE NOT NULL,
    role_key VARCHAR(50) UNIQUE NOT NULL,
    description VARCHAR(200),
    status TINYINT DEFAULT 1,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 菜单表
CREATE TABLE sys_menu (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    menu_name VARCHAR(50) NOT NULL,
    parent_id BIGINT DEFAULT 0,
    path VARCHAR(200),
    component VARCHAR(200),
    menu_type CHAR(1) COMMENT 'M目录 C菜单 F按钮',
    permission VARCHAR(100),
    icon VARCHAR(100),
    sort_order INT DEFAULT 0,
    status TINYINT DEFAULT 1,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 用户角色关联表
CREATE TABLE sys_user_role (
    user_id BIGINT,
    role_id BIGINT,
    PRIMARY KEY (user_id, role_id)
);

-- 角色菜单关联表  
CREATE TABLE sys_role_menu (
    role_id BIGINT,
    menu_id BIGINT,
    PRIMARY KEY (role_id, menu_id)
);

-- 操作日志表
CREATE TABLE sys_operation_log (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT,
    username VARCHAR(50),
    operation VARCHAR(50),
    method VARCHAR(200),
    params TEXT,
    ip VARCHAR(50),
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

安全架构设计

JWT认证流程

sequenceDiagram
    participant C as 客户端
    participant S as 服务端
    participant R as Redis
    
    C->>S: 1.用户名密码登录
    S->>S: 2.验证用户信息
    S->>S: 3.生成JWT Token
    S->>R: 4.存储Token(可选)
    S-->>C: 5.返回Token
    
    C->>S: 6.携带Token访问API
    S->>S: 7.验证Token有效性
    S->>S: 8.解析用户信息
    S->>S: 9.权限验证
    S-->>C: 10.返回数据

权限控制模型

graph LR
    A[用户] --> B[角色]
    B --> C[菜单权限]
    B --> D[接口权限]
    
    E[前端路由] --> C
    F[后端接口] --> D
    
    G[权限验证] --> E
    G --> F

架构设计完成,满足质量门控要求:架构图清晰准确、接口定义完整、与现有系统无冲突、设计可行性已验证