# ai-learn **Repository Path**: roboslyq/ai-learn ## Basic Information - **Project Name**: ai-learn - **Description**: ai教学 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用户管理系统 (User Management System) 一个基于 Spring Boot + Vue 3 的全栈用户管理系统,提供完整的用户认证、权限管理和组织架构管理功能。 ## 功能特性 ### 🔐 认证授权 - JWT Token 认证,支持 Access Token 和 Refresh Token - 基于 RBAC 的细粒度权限控制 - 超级管理员权限绕过机制 - 密码加密存储(BCrypt) ### 👥 用户管理 - 用户 CRUD 操作 - 用户状态管理(启用/禁用) - 用户角色分配 - 密码重置功能 ### 🔑 角色管理 - 角色 CRUD 操作 - 角色权限分配 - 支持多角色关联 ### 🔒 权限管理 - 权限树形结构 - 支持菜单、按钮、接口三种权限类型 - 权限格式:`resource:action`(如 `user:read`) ### 🏢 组织架构 - 部门树形管理 - 岗位管理 - 用户关联部门和岗位 ### 📊 仪表盘 - 数据统计概览 - 快捷操作入口 ## 技术栈 ### 后端 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 3.2.0 | 核心框架 | | Spring Security | - | 安全框架 | | Spring Data JPA | - | 数据访问 | | Hibernate | - | ORM 框架 | | SQLite | - | 嵌入式数据库 | | JWT (jjwt) | 0.12.3 | Token 生成与验证 | | Lombok | - | 简化代码 | ### 前端 | 技术 | 版本 | 说明 | |------|------|------| | Vue | 3.4.21 | 前端框架 | | Vite | 5.2.0 | 构建工具 | | Element Plus | 2.6.1 | UI 组件库 | | Pinia | 2.1.7 | 状态管理 | | Vue Router | 4.3.0 | 路由管理 | | Axios | 1.6.8 | HTTP 客户端 | | Day.js | 1.11.10 | 日期处理 | ## 项目结构 ``` ai-learn/ ├── ai-learn-server/ # 后端项目 │ ├── pom.xml # Maven 配置 │ ├── usermanage.db # SQLite 数据库文件 │ └── src/main/ │ ├── java/com/example/usermanage/ │ │ ├── common/ # 公共模块 │ │ │ ├── config/ # 配置类 │ │ │ ├── exception/ # 异常处理 │ │ │ ├── response/ # 响应封装 │ │ │ └── util/ # 工具类 │ │ ├── auth/ # 认证模块 │ │ ├── user/ # 用户模块 │ │ ├── role/ # 角色模块 │ │ ├── permission/ # 权限模块 │ │ └── organization/ # 组织架构模块 │ └── resources/ │ └── application.yml # 应用配置 │ ├── ai-learn-ui/ # 前端项目 │ ├── package.json # npm 配置 │ ├── vite.config.js # Vite 配置 │ └── src/ │ ├── api/ # API 接口 │ ├── stores/ # Pinia 状态管理 │ ├── layouts/ # 布局组件 │ ├── views/ # 页面组件 │ ├── router/ # 路由配置 │ └── styles/ # 样式文件 │ ├── docs/ # 文档目录 │ └── 用户管理系统开发实践.md # 开发实践文档 │ └── CLAUDE.md # Claude Code 项目说明 ``` ## 快速开始 ### 环境要求 - **JDK** 17+ - **Node.js** 18+ - **npm** 或 **pnpm** ### 后端启动 ```bash # 进入后端目录 cd ai-learn-server # 编译项目 mvn clean package -DskipTests # 启动服务 mvn spring-boot:run ``` 后端服务将在 http://localhost:8080 启动 ### 前端启动 ```bash # 进入前端目录 cd ai-learn-ui # 安装依赖 npm install # 启动开发服务器 npm run dev ``` 前端服务将在 http://localhost:3000 启动 ### 生产构建 ```bash # 后端 cd ai-learn-server mvn clean package # 前端 cd ai-learn-ui npm run build ``` ## 默认账号 | 用户名 | 密码 | 角色 | 说明 | |--------|------|------|------| | admin | admin123 | SUPER_ADMIN | 超级管理员,拥有所有权限 | ## API 接口文档 ### 认证接口 | 方法 | 路径 | 说明 | 权限 | |------|------|------|------| | POST | /api/auth/login | 用户登录 | 无 | | POST | /api/auth/logout | 用户登出 | 需登录 | | POST | /api/auth/refresh | 刷新 Token | 需登录 | | GET | /api/auth/info | 获取当前用户信息 | 需登录 | ### 用户接口 | 方法 | 路径 | 说明 | 权限 | |------|------|------|------| | GET | /api/users | 用户列表(分页) | user:read | | GET | /api/users/{id} | 用户详情 | user:read | | POST | /api/users | 创建用户 | user:create | | PUT | /api/users/{id} | 更新用户 | user:update | | DELETE | /api/users/{id} | 删除用户 | user:delete | | PUT | /api/users/{id}/status | 更新用户状态 | user:update | | PUT | /api/users/{id}/roles | 分配角色 | user:update | | PUT | /api/users/{id}/password | 重置密码 | user:update | ### 角色接口 | 方法 | 路径 | 说明 | 权限 | |------|------|------|------| | GET | /api/roles | 角色列表 | role:read | | GET | /api/roles/{id} | 角色详情 | role:read | | POST | /api/roles | 创建角色 | role:create | | PUT | /api/roles/{id} | 更新角色 | role:update | | DELETE | /api/roles/{id} | 删除角色 | role:delete | | PUT | /api/roles/{id}/permissions | 分配权限 | role:update | ### 权限接口 | 方法 | 路径 | 说明 | 权限 | |------|------|------|------| | GET | /api/permissions | 权限树 | permission:read | | POST | /api/permissions | 创建权限 | permission:create | | PUT | /api/permissions/{id} | 更新权限 | permission:update | | DELETE | /api/permissions/{id} | 删除权限 | permission:delete | ### 组织架构接口 | 方法 | 路径 | 说明 | 权限 | |------|------|------|------| | GET | /api/organizations/departments | 部门树 | department:read | | POST | /api/organizations/departments | 创建部门 | department:create | | PUT | /api/organizations/departments/{id} | 更新部门 | department:update | | DELETE | /api/organizations/departments/{id} | 删除部门 | department:delete | | GET | /api/organizations/positions | 岗位列表 | position:read | | POST | /api/organizations/positions | 创建岗位 | position:create | | PUT | /api/organizations/positions/{id} | 更新岗位 | position:update | | DELETE | /api/organizations/positions/{id} | 删除岗位 | position:delete | ## 权限列表 系统内置 20 个权限,按模块分类: | 模块 | 权限代码 | 说明 | |------|----------|------| | 用户 | user:read, user:create, user:update, user:delete | 用户管理 | | 角色 | role:read, role:create, role:update, role:delete | 角色管理 | | 权限 | permission:read, permission:create, permission:update, permission:delete | 权限管理 | | 部门 | department:read, department:create, department:update, department:delete | 部门管理 | | 岗位 | position:read, position:create, position:update, position:delete | 岗位管理 | ## 数据库设计 ### 用户表 (user) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT | 主键 | | username | VARCHAR(50) | 用户名,唯一 | | password | VARCHAR(255) | 密码(BCrypt 加密) | | email | VARCHAR(100) | 邮箱 | | phone | VARCHAR(20) | 手机号 | | nickname | VARCHAR(50) | 昵称 | | avatar | VARCHAR(255) | 头像 URL | | real_name | VARCHAR(50) | 真实姓名 | | gender | VARCHAR(10) | 性别 | | status | VARCHAR(20) | 状态(ACTIVE/INACTIVE) | | is_superuser | BOOLEAN | 是否超级管理员 | | department_id | BIGINT | 部门 ID(外键) | | position_id | BIGINT | 岗位 ID(外键) | ### 角色表 (role) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT | 主键 | | name | VARCHAR(50) | 角色名称 | | code | VARCHAR(50) | 角色代码,唯一 | | description | VARCHAR(255) | 描述 | ### 权限表 (permission) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT | 主键 | | name | VARCHAR(50) | 权限名称 | | code | VARCHAR(50) | 权限代码,唯一 | | type | VARCHAR(20) | 类型(MENU/BUTTON/API) | | parent_id | BIGINT | 父权限 ID | | path | VARCHAR(255) | 路由路径 | | icon | VARCHAR(50) | 图标 | | sort_order | INT | 排序 | ### 部门表 (department) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT | 主键 | | name | VARCHAR(50) | 部门名称 | | code | VARCHAR(50) | 部门代码 | | parent_id | BIGINT | 父部门 ID | | sort_order | INT | 排序 | ### 岗位表 (position) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT | 主键 | | name | VARCHAR(50) | 岗位名称 | | code | VARCHAR(50) | 岗位代码 | | department_id | BIGINT | 所属部门 ID | | sort_order | INT | 排序 | ## 配置说明 ### 后端配置 (application.yml) ```yaml server: port: 8080 spring: datasource: url: jdbc:sqlite:usermanage.db driver-class-name: org.sqlite.JDBC jpa: database-platform: org.hibernate.community.dialect.SQLiteDialect hibernate: ddl-auto: update jwt: secret: your-256-bit-secret-key access-token-expiration: 7200000 # 2小时 refresh-token-expiration: 604800000 # 7天 ``` ### 前端配置 (vite.config.js) ```javascript export default defineConfig({ server: { port: 3000, proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true } } } }) ``` ## 开发指南 ### 添加新模块 1. 在 `ai-learn-server/src/main/java/com/example/usermanage/` 下创建模块目录 2. 按以下顺序创建: - `entity/` - 实体类 - `repository/` - 数据访问层 - `service/` - 业务逻辑层 - `controller/` - 控制器层 - `dto/` - 数据传输对象 ### 添加新权限 1. 在 `DataInitializer.java` 中添加新权限 2. 在控制器方法上添加 `@PreAuthorize("hasAuthority('permission:code')")` 3. 前端使用 `authStore.hasPermission('permission:code')` 控制显示 ## 浏览器支持 | 浏览器 | 最低版本 | |--------|----------| | Chrome | 87+ | | Firefox | 78+ | | Safari | 14+ | | Edge | 88+ | ## 更新日志 ### v1.0.0 (2026-05-12) - ✅ 完成用户管理模块 - ✅ 完成角色管理模块 - ✅ 完成权限管理模块 - ✅ 完成组织架构模块 - ✅ 实现 JWT 认证 - ✅ 实现 RBAC 权限控制 - ✅ 完成前端界面开发 ## 许可证 [MIT License](LICENSE) ## 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 联系方式 如有问题或建议,请提交 Issue。