# Java后台管理系统架构设计文档 ## 整体架构图 ```mermaid 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) ```mermaid 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) ```mermaid 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**: 跨域配置 ## 模块依赖关系图 ```mermaid 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 ``` ## 接口契约定义 ### 认证接口 ```yaml POST /api/auth/login: 请求: {username, password} 响应: {token, userInfo, permissions} POST /api/auth/logout: 请求: {token} 响应: {message} GET /api/auth/info: 请求: Authorization Header 响应: {userInfo, roles, permissions} ``` ### 用户管理接口 ```yaml 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} ``` ### 角色管理接口 ```yaml 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} ``` ### 菜单管理接口 ```yaml 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} ``` ## 数据流向图 ```mermaid 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.渲染页面 ``` ## 异常处理策略 ### 全局异常处理 ```java @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() {} } ``` ### 前端异常处理 ```javascript // 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) } ) ``` ## 数据库设计 ### 核心表结构 ```sql -- 用户表 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认证流程 ```mermaid 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.返回数据 ``` ### 权限控制模型 ```mermaid graph LR A[用户] --> B[角色] B --> C[菜单权限] B --> D[接口权限] E[前端路由] --> C F[后端接口] --> D G[权限验证] --> E G --> F ``` **✅ 架构设计完成,满足质量门控要求:架构图清晰准确、接口定义完整、与现有系统无冲突、设计可行性已验证**