# java-web-proj-TodoTask **Repository Path**: libingquan/java-web-proj-todo-task ## Basic Information - **Project Name**: java-web-proj-TodoTask - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-09 - **Last Updated**: 2026-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 任务管理系统 一个基于 Spring Boot 和 Vue 3 构建的全栈多用户任务管理应用。 ## 技术栈 ### 后端 - Spring Boot 3.2 - Spring Security(JWT 认证) - Spring Data JPA - MySQL 8.x - WebSocket - Caffeine 缓存 ### 前端 - Vue 3(Composition API) - Vite - Pinia - Element Plus - Axios ## 快速开始 ### 环境要求 - Java 17+ - MySQL 8.x - Node.js 16+ ### 后端启动 ```bash cd backend mvn clean install mvn spring-boot:run ``` 后端运行在 http://localhost:8080 ### 前端启动 ```bash cd frontend npm install npm run dev ``` 前端运行在 http://localhost:5173 ### 数据库配置 创建数据库: ```sql CREATE DATABASE taskdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 环境变量 通过环境变量配置数据库连接: ```bash export DB_HOST=localhost # 数据库主机(默认:localhost) export DB_PORT=3306 # 数据库端口(默认:3306) export DB_NAME=taskdb # 数据库名称(默认:taskdb) export DB_USERNAME=root # 数据库用户名(默认:root) export DB_PASSWORD=your_password # 必填:数据库密码 export JWT_SECRET=your-256-bit-secret-key-here-make-it-long-enough # 可选:管理员账户初始化 export ADMIN_USERNAME=admin export ADMIN_PASSWORD=admin123 ``` ## 功能特性 - 用户注册和登录 - 基于 JWT 的身份认证 - 任务增删改查 - 子任务支持(两级) - 文件附件上传 - 通过 WebSocket 实时更新任务 - RESTful API - 分页查询和搜索 - 任务优先级和截止日期 - 角色权限控制(用户/管理员) ## API 接口 ### 认证相关 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/auth/register | 用户注册 | | POST | /api/auth/login | 用户登录 | | GET | /api/auth/me | 获取当前用户信息 | | PUT | /api/auth/password | 修改密码 | | POST | /api/auth/refresh | 刷新令牌 | ### 任务管理 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/tasks | 获取任务列表(支持分页) | | GET | /api/tasks/search | 搜索任务 | | GET | /api/tasks/{id} | 获取任务详情 | | POST | /api/tasks | 创建任务 | | PUT | /api/tasks/{id} | 更新任务 | | DELETE | /api/tasks/{id} | 删除任务 | | DELETE | /api/tasks/batch | 批量删除任务 | | POST | /api/tasks/{parentId}/subtasks | 创建子任务 | | POST | /api/tasks/{id}/upload | 上传附件 | ### 管理员接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/admin/users | 获取所有用户 | | PUT | /api/admin/users/{id}/role | 修改用户角色 | ## 项目结构 ``` backend/ ├── src/main/java/com/example/tasks/ │ ├── config/ # 配置类(安全、WebSocket、缓存等) │ ├── controller/ # REST 控制器 │ ├── dto/ # 数据传输对象 │ ├── entity/ # JPA 实体 │ ├── repository/ # 数据访问层 │ ├── service/ # 业务逻辑层 │ ├── security/ # 安全相关(JWT) │ ├── aspect/ # AOP 切面 │ └── exception/ # 异常处理 └── pom.xml frontend/ ├── src/ │ ├── api/ # API 请求封装 │ ├── views/ # 页面组件 │ ├── stores/ # Pinia 状态管理 │ └── router/ # Vue Router 路由 └── package.json ``` ## 配置说明 ### 文件上传配置 ```yaml app: upload: dir: uploads/ # 上传目录 retention-days: 30 # 文件保留天数 ``` 系统会自动清理超过保留天数的孤立上传文件(每天凌晨 3 点执行)。 ### 缓存配置 系统使用 Caffeine 缓存提升性能,主要缓存: - 任务详情(task 缓存) - 任务列表(tasks 缓存) ## 安全说明 - JWT 访问令牌有效期:15 分钟 - JWT 刷新令牌有效期:7 天 - 密码使用 BCrypt 加密存储 - 支持角色权限控制(PUBLIC/ADMIN) ## 学习资源 详细的后端学习指南请参阅 [Java 后端学习指南](docs/java-backend-learning-guide.md)。 ## 许可证 MIT