# life-planner **Repository Path**: Marsfactory/life-planner ## Basic Information - **Project Name**: life-planner - **Description**: 121111111111111111111111 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-12-15 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Life Planner - 自律生活规划系统 一个功能完整的自律生活规划系统,包含用户管理、计划管理、打卡功能、AI助手和管理员审核等功能。 ## 技术栈 ### 后端 (Backend) - **Spring Boot 3.2.0** - Java企业级应用框架 - **MySQL 8.0+** - 关系型数据库 - **Redis** - 缓存数据库 - **MyBatis-Plus 3.5.5** - ORM框架 - **Spring Security** - 安全框架 - **JWT** - 身份验证 - **Maven** - 项目构建工具 ### 前端 (Frontend) - **Vue 3** - 渐进式JavaScript框架 - **Vite 5** - 前端构建工具 - **Naive UI 2.36** - Vue 3组件库 - **Vue Router 4** - 路由管理 - **Pinia 2** - 状态管理 - **Axios** - HTTP客户端 - **ECharts** - 数据可视化(用于统计图表) ## 系统功能 ### 1. 用户功能 - **注册/登录**: 支持用户注册和登录,使用JWT进行身份验证 - **首次问卷**: 首次登录时填写个人问卷,了解用户情况和需求 - **个人主页**: - 查看和编辑个人信息 - 更换头像 - 申请更改邮箱/电话(需管理员审核) - 查看统计数据 - **计划管理**: - 创建/编辑/删除个人规划 - 设置计划分类、优先级、起止时间 - 设置定时提醒功能 - **打卡功能**: - 每日打卡完成规划 - 记录完成度和笔记 - 查看打卡历史 - **可视化统计**: 根据打卡完成度生成图表 - **AI助手**: 与AI对话获取建议和帮助 ### 2. 管理员功能 - **用户管理**: - 查看所有用户信息 - 启用/禁用用户账号 - 搜索用户 - **审核管理**: - 审核用户邮箱/电话更改申请 - 批准或拒绝申请 ### 3. 特色功能 - **Redis缓存**: 提升数据访问效率 - **安全认证**: JWT + Spring Security - **权限控制**: 区分普通用户和管理员 - **响应式设计**: 适配不同设备 - **首次登录引导**: 新用户问卷系统 ## 项目结构 ``` life-planner/ ├── backend/ # Spring Boot后端项目 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/com/lifeplanner/ │ │ │ │ ├── config/ # 配置类 │ │ │ │ ├── controller/ # 控制器 │ │ │ │ ├── service/ # 业务逻辑 │ │ │ │ ├── mapper/ # MyBatis Mapper │ │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── dto/ # 数据传输对象 │ │ │ │ ├── security/ # 安全相关 │ │ │ │ ├── util/ # 工具类 │ │ │ │ └── common/ # 公共类 │ │ │ └── resources/ │ │ │ └── application.yml # 配置文件 │ │ └── pom.xml # Maven配置 │ └── ... ├── frontend/ # Vue 3前端项目 │ ├── src/ │ │ ├── api/ # API接口 │ │ ├── views/ # 页面组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # 状态管理 │ │ ├── utils/ # 工具函数 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── package.json │ ├── vite.config.js │ └── index.html └── init.sql # 数据库初始化脚本 ``` ## 快速开始 ### 前置要求 - JDK 17+ - MySQL 8.0+ - Redis 6.0+ - Node.js 16+ & npm/pnpm ### 1. 数据库配置 #### 创建数据库并导入数据 ```bash # 登录MySQL mysql -u root -p # 执行SQL脚本 source /path/to/life-planner/init.sql ``` 或者在MySQL客户端中执行 `init.sql` 文件。 #### 配置数据库连接 编辑 `backend/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/life_planner?... username: your_mysql_username password: your_mysql_password data: redis: host: localhost port: 6379 password: your_redis_password # 如果有密码 ``` ### 2. 启动后端 ```bash # 进入backend目录 cd backend # 使用Maven编译并运行 mvn clean install mvn spring-boot:run # 或者在IDE中直接运行 LifePlannerApplication 主类 ``` 后端将在 `http://localhost:8080/api` 启动 ### 3. 启动前端 ```bash # 进入frontend目录 cd frontend # 安装依赖 npm install # 或使用 pnpm pnpm install # 启动开发服务器 npm run dev # 或 pnpm dev ``` 前端将在 `http://localhost:3000` 启动 ### 4. 访问系统 打开浏览器访问: `http://localhost:3000` #### 默认管理员账号 - 用户名: `admin` - 密码: `123456` ## API接口文档 ### 认证接口 - POST `/api/auth/login` - 用户登录 - POST `/api/auth/register` - 用户注册 - POST `/api/auth/logout` - 用户登出 ### 用户接口 - GET `/api/user/info` - 获取用户信息 - PUT `/api/user/update` - 更新用户信息 - POST `/api/user/email/change` - 申请更改邮箱 - POST `/api/user/phone/change` - 申请更改电话 - POST `/api/user/avatar/upload` - 上传头像 ### 问卷接口 - POST `/api/questionnaire/submit` - 提交问卷 - GET `/api/questionnaire` - 获取问卷 ### 计划接口 - POST `/api/plan/create` - 创建计划 - PUT `/api/plan/update/{planId}` - 更新计划 - DELETE `/api/plan/delete/{planId}` - 删除计划 - GET `/api/plan/{planId}` - 获取计划详情 - GET `/api/plan/list` - 获取计划列表(分页) - GET `/api/plan/all` - 获取所有计划 ### 打卡接口 - POST `/api/checkin` - 打卡 - GET `/api/checkin/history/{planId}` - 获取打卡历史 - GET `/api/checkin/stats/{planId}` - 获取打卡统计 - GET `/api/checkin/my` - 获取我的打卡记录 ### AI对话接口 - POST `/api/ai/chat` - 发送消息 - GET `/api/ai/history/{sessionId}` - 获取聊天历史 - POST `/api/ai/session/new` - 创建新会话 ### 管理员接口 - GET `/api/admin/users` - 获取所有用户(分页) - GET `/api/admin/users/{userId}` - 获取用户详情 - PUT `/api/admin/users/{userId}/toggle-status` - 启用/禁用用户 - GET `/api/admin/approvals/pending` - 获取待审核申请 - POST `/api/admin/approvals/{approvalId}/approve` - 批准申请 - POST `/api/admin/approvals/{approvalId}/reject` - 拒绝申请 ## 数据库表结构 ### 核心表 - `sys_user` - 用户表 - `user_questionnaire` - 用户问卷表 - `user_plan` - 用户计划表 - `plan_checkin` - 计划打卡表 - `plan_reminder` - 计划提醒表 - `user_approval` - 用户审批表 - `ai_chat_history` - AI聊天历史表 - `reminder_log` - 提醒日志表 ## 开发说明 ### 后端开发 - 所有API返回统一格式: `{code: 200, message: "Success", data: ...}` - 使用MyBatis-Plus进行数据访问 - Redis用于缓存用户信息和Token - 使用BCrypt加密用户密码 - JWT Token有效期24小时 ### 前端开发 - 使用Composition API编写Vue组件 - 路由守卫自动检查登录状态 - Axios拦截器自动添加Token - Naive UI提供完整的组件支持 - 支持暗黑模式(可扩展) ## 生产部署 ### 后端部署 ```bash # 构建JAR包 cd backend mvn clean package -DskipTests # 运行 java -jar target/life-planner-backend-1.0.0.jar ``` ### 前端部署 ```bash # 构建生产版本 cd frontend npm run build # 将dist目录部署到Nginx或其他Web服务器 ``` ### Nginx配置示例 ```nginx server { listen 80; server_name yourdomain.com; # 前端 location / { root /path/to/frontend/dist; try_files $uri $uri/ /index.html; } # 后端API代理 location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ## 注意事项 1. **安全性**: - 生产环境请修改JWT密钥 - 配置HTTPS - 限制CORS来源 - 定期更新依赖 2. **性能优化**: - 配置Redis持久化 - 调整数据库连接池 - 启用Gzip压缩 - 使用CDN加速静态资源 3. **AI功能**: - 当前AI为模拟实现 - 可集成OpenAI/Claude等真实AI服务 - 修改 `AiChatService.java` 中的实现 ## 常见问题 **Q: 无法连接数据库?** A: 检查MySQL是否运行,用户名密码是否正确,数据库是否已创建 **Q: 前端无法访问后端?** A: 检查后端是否启动,端口是否正确,CORS配置是否正确 **Q: Redis连接失败?** A: 确保Redis服务已启动,如果有密码需在配置文件中设置 **Q: 上传头像失败?** A: 检查uploads/avatars目录是否有写权限 ## 许可证 MIT License ## 作者 Life Planner Development Team ## 更新日志 ### v1.0.0 (2024-12-15) - 初始版本发布 - 完整的用户管理系统 - 计划和打卡功能 - AI助手集成 - 管理员审核功能