# smarthome **Repository Path**: haerinme/smarthome ## Basic Information - **Project Name**: smarthome - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-05 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README <<<<<<< HEAD # 智慧居家养老服务系统 ## 📋 项目简介 本课题以居家养老场景为背景,围绕"线上下单—员工接单—上门服务—服务评价"的完整服务流程,设计并实现了一个基于SpringBoot的网页服务平台。系统采用前后端分离架构,通过页面实现用户端、员工端与管理员端的交互功能。 ### 项目背景 当前居家养老服务流程中普遍存在诸多问题: 1. **服务流程缺乏透明度**:传统线下服务流程中,用户与社区工作人员之间的沟通效率较低,服务信息容易出现遗漏或误解,导致用户需求难以及时响应。 2. **服务过程缺乏有效记录**:线下服务模式中,服务执行过程往往缺乏有效记录,服务进度不可追踪,不利于责任界定、质量管理及服务过程的优化。 3. **评价体系不完善**:传统服务模式下用户评价体系不完善,反馈信息零散且难以量化,无法形成有效闭环,导致服务质量改进困难。 ### 解决方案 本系统通过数字化手段,实现了: - ✅ **透明的服务流程**:线上订单管理,实时跟踪服务状态 - ✅ **完整的服务记录**:详细记录服务过程,包括到达时间、开始时间、结束时间和服务时长 - ✅ **完善的评价体系**:用户可对服务进行评分和评价,形成服务质量闭环 - ✅ **智能的业务规则**:员工不能同时处理多个服务,服务时长必须满足规定要求 --- ## 🛠️ 技术栈 ### 后端技术 - **框架**: Spring Boot 2.6.13 - **ORM**: Spring Data JPA - **数据库**: MySQL 8.0 - **构建工具**: Maven - **Java版本**: JDK 1.8 - **其他**: Lombok, Spring Validation ### 前端技术 - **框架**: Vue 3.2.0 - **路由**: Vue Router 4.0.0 - **UI组件库**: Element Plus 2.0.0 - **HTTP客户端**: Axios 1.0.0 - **构建工具**: Vue CLI 5.0.0 --- ## 🏗️ 系统架构 ### 架构模式 采用**前后端分离架构**: ``` ┌─────────────────┐ HTTP/REST API ┌─────────────────┐ │ │ ◄─────────────────────────────► │ │ │ 前端 (Vue 3) │ │ 后端 (Spring │ │ Port: 8081 │ │ Boot) │ │ │ │ Port: 8080 │ └─────────────────┘ └─────────────────┘ │ ▼ ┌──────────────┐ │ MySQL 8.0 │ │ Port: 3306 │ └──────────────┘ ``` ### 后端架构 采用经典的**MVC三层架构**: ``` Controller层 (API接口) ↓ Service层 (业务逻辑) ↓ Repository层 (数据访问) ↓ Entity层 (数据模型) ↓ Database (MySQL) ``` --- ## 📦 功能模块 ### 1. 用户端(长者端) #### 1.1 用户管理 - **用户注册**:支持新用户注册,包含基本信息验证 - **用户登录**:安全的登录验证机制 - **个人信息管理**:查看和修改个人信息 #### 1.2 服务浏览与下单 - **服务浏览**:按部门分类浏览服务项目 - **服务详情**:查看服务描述、价格、时长等信息 - **员工选择**:查看员工信息、评分和评价,选择合适的服务人员 - **在线下单**:填写服务地址、预约时间、备注等信息创建订单 #### 1.3 订单管理 - **订单查看**:查看所有订单,支持按状态筛选 - **订单搜索**:按订单号、服务名称、地址等关键词搜索 - **订单状态跟踪**:实时查看订单状态(待接单、已接单、进行中、已完成、已取消) #### 1.4 服务评价 - **服务评价**:对已完成的服务进行评分(1-5分)和文字评价 - **评价查看**:查看历史评价记录 ### 2. 服务人员端 #### 2.1 工作台 - **待接订单**:查看所有待接单的订单 - **订单接单**:接受订单,系统自动检查是否已有正在进行的服务 - **订单管理**:查看和管理自己的所有订单 #### 2.2 服务记录 - **到达记录**:记录到达服务地点的时间 - **开始服务**:记录服务开始时间,系统检查是否有其他未完成的服务 - **结束服务**:记录服务结束时间,自动计算服务时长,验证是否满足服务规定时长 #### 2.3 评价查看 - **查看评价**:查看用户对自己的服务评价 - **评分统计**:查看平均评分和总订单数 #### 2.4 个人信息管理 - **信息维护**:更新个人信息、联系方式、个人介绍等 ### 3. 管理端 #### 3.1 系统概览 - **数据统计**:总订单数、待处理订单、已完成订单、已取消订单 - **快捷操作**:快速跳转到各功能模块 #### 3.2 订单管理 - **订单列表**:查看所有订单,支持多条件筛选和搜索 - **订单详情**:查看订单完整信息和服务记录 - **订单统计**:按状态、时间等维度统计订单数据 #### 3.3 员工管理 - **员工列表**:查看所有员工信息 - **员工添加**:添加新员工,设置部门、职位等信息 - **员工编辑**:修改员工信息、状态等 - **员工删除**:删除员工(软删除) #### 3.4 服务管理 - **服务列表**:查看所有服务项目 - **服务添加**:创建新服务,设置名称、描述、价格、时长、所属部门等 - **服务编辑**:修改服务信息 - **服务状态管理**:启用/禁用服务 #### 3.5 用户管理 - **用户列表**:查看所有注册用户 - **用户信息查看**:查看用户详细信息 - **用户状态管理**:启用/禁用用户账号 #### 3.6 评价管理 - **评价列表**:查看所有服务评价 - **评价详情**:查看评价内容和关联的订单信息 - **评价统计**:统计分析评价数据 #### 3.7 部门管理 - **部门列表**:查看所有部门 - **部门管理**:添加、编辑、删除部门 --- ## 🚀 快速开始 ### 环境要求 - **JDK**: 1.8 或更高版本 - **Maven**: 3.6 或更高版本 - **Node.js**: 14.0 或更高版本 - **npm**: 6.0 或更高版本 - **MySQL**: 8.0 或更高版本 ### 数据库配置 1. 创建MySQL数据库: ```sql CREATE DATABASE smarthome CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 修改数据库配置 编辑 `smarthome/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/smarthome?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root # 修改为你的数据库用户名 password: 200313 # 修改为你的数据库密码 ``` ### 后端启动 1. 进入后端目录: ```bash cd smarthome ``` 2. 使用Maven安装依赖(如果IDE没有自动安装): ```bash mvn clean install ``` 3. 运行主类: - **方式一**:使用IDE运行 `SmarthomeApplication.java` - **方式二**:使用Maven命令 ```bash mvn spring-boot:run ``` 4. 后端服务启动后,访问:`http://localhost:8080` ### 前端启动 1. 进入前端目录: ```bash cd frontend ``` 2. 安装依赖: ```bash npm install ``` 3. 启动开发服务器: ```bash npm run serve ``` 4. 前端服务启动后,访问:`http://localhost:8081` ### 访问系统 - **首页**: http://localhost:8081 - **用户端**: http://localhost:8081/user/login - **服务人员端**: http://localhost:8081/employee/login - **管理端**: http://localhost:8081/admin/login --- ## 📚 API文档 ### 基础信息 - **Base URL**: `http://localhost:8080/api` - **Content-Type**: `application/json` - **字符编码**: UTF-8 ### 通用响应格式 ```json { "success": true, "data": {}, "message": "操作成功" } ``` ### 用户端API #### 用户注册 ``` POST /api/user/register Request Body: { "username": "string", "password": "string", "realName": "string", "phone": "string", "address": "string" } ``` #### 用户登录 ``` POST /api/user/login Request Body: { "username": "string", "password": "string" } ``` #### 获取用户订单 ``` GET /api/order/user/{userId} ``` #### 创建订单 ``` POST /api/order/create Request Body: { "user": { "id": 1 }, "service": { "id": 1 }, "employee": { "id": 1 }, "amount": 100.00, "address": "string", "serviceTime": "2024-01-01 10:00:00", "remark": "string" } ``` #### 创建评价 ``` POST /api/evaluation/create Request Body: { "order": { "id": 1 }, "rating": 5, "content": "string" } ``` ### 服务人员端API #### 员工登录 ``` POST /api/employee/login Request Body: { "username": "string", "password": "string" } ``` #### 获取待接订单 ``` GET /api/order/pending ``` #### 接单 ``` POST /api/employee/orders/{orderId}/accept Request Body: { "employeeId": 1 } ``` #### 记录到达 ``` POST /api/service-record/order/{orderId}/arrival ``` #### 开始服务 ``` POST /api/service-record/order/{orderId}/start ``` #### 结束服务 ``` POST /api/service-record/order/{orderId}/end ``` #### 获取员工订单 ``` GET /api/employee/orders/{employeeId} ``` #### 获取员工评价 ``` GET /api/evaluation/employee/{employeeId} ``` ### 管理端API #### 管理员登录 ``` POST /api/admin/login Request Body: { "username": "string", "password": "string" } ``` #### 订单统计 ``` GET /api/admin/orders/statistics ``` #### 获取所有订单 ``` GET /api/admin/orders?page=0&size=10&status=PENDING ``` #### 员工管理 ``` GET /api/admin/employees # 获取员工列表 POST /api/admin/employees # 创建员工 PUT /api/admin/employees/{id} # 更新员工 DELETE /api/admin/employees/{id} # 删除员工 ``` #### 服务管理 ``` GET /api/service/all # 获取所有服务 GET /api/service/active # 获取启用服务 POST /api/service/create # 创建服务 PUT /api/service/{id} # 更新服务 DELETE /api/service/{id} # 删除服务 ``` #### 用户管理 ``` GET /api/admin/users # 获取用户列表 GET /api/admin/users/{id} # 获取用户详情 PUT /api/admin/users/{id} # 更新用户 ``` #### 评价管理 ``` GET /api/admin/evaluations # 获取评价列表 GET /api/admin/evaluations/{id} # 获取评价详情 ``` #### 部门管理 ``` GET /api/department/all # 获取所有部门 GET /api/department/active # 获取启用部门 POST /api/department/create # 创建部门 PUT /api/department/{id} # 更新部门 DELETE /api/department/{id} # 删除部门 ``` --- ## 🗄️ 数据库设计 ### 核心实体 #### User (用户表) - `id`: 主键 - `username`: 用户名(唯一) - `password`: 密码 - `realName`: 真实姓名 - `phone`: 联系电话 - `address`: 地址 - `status`: 状态(ACTIVE/INACTIVE) #### Employee (员工表) - `id`: 主键 - `username`: 用户名(唯一) - `password`: 密码 - `realName`: 真实姓名 - `phone`: 联系电话 - `employeeType`: 员工类型 - `departmentId`: 所属部门ID - `status`: 状态(ACTIVE/INACTIVE) - `introduction`: 个人介绍 - `averageRating`: 平均评分 - `totalOrders`: 总订单数 - `completedOrders`: 已完成订单数 #### Service (服务表) - `id`: 主键 - `name`: 服务名称 - `description`: 服务描述 - `price`: 价格 - `duration`: 服务时长(分钟) - `serviceType`: 服务类型 - `departmentId`: 所属部门ID - `status`: 状态(ACTIVE/INACTIVE) #### Order (订单表) - `id`: 主键 - `orderNo`: 订单号(唯一) - `userId`: 用户ID - `serviceId`: 服务ID - `employeeId`: 员工ID - `amount`: 金额 - `address`: 服务地址 - `serviceTime`: 预约服务时间 - `status`: 订单状态(PENDING/ACCEPTED/IN_PROGRESS/COMPLETED/CANCELLED/REFUNDED) - `createTime`: 创建时间 - `acceptTime`: 接单时间 - `remark`: 备注 #### ServiceRecord (服务记录表) - `id`: 主键 - `orderId`: 订单ID - `arrivalTime`: 到达时间 - `serviceStartTime`: 服务开始时间 - `serviceEndTime`: 服务结束时间 - `actualDuration`: 实际服务时长(分钟) - `description`: 服务描述 #### Evaluation (评价表) - `id`: 主键 - `orderId`: 订单ID - `rating`: 评分(1-5) - `content`: 评价内容 - `evaluateTime`: 评价时间 #### Department (部门表) - `id`: 主键 - `name`: 部门名称 - `description`: 部门描述 - `status`: 状态(ACTIVE/INACTIVE) #### Admin (管理员表) - `id`: 主键 - `username`: 用户名(唯一) - `password`: 密码 - `realName`: 真实姓名 ### 关系说明 - **User** 与 **Order**: 一对多关系 - **Employee** 与 **Order**: 一对多关系 - **Service** 与 **Order**: 一对多关系 - **Order** 与 **ServiceRecord**: 一对一关系 - **Order** 与 **Evaluation**: 一对一关系 - **Department** 与 **Service**: 一对多关系 - **Department** 与 **Employee**: 一对多关系 --- ## 📁 项目结构 ``` smarthome/ ├── smarthome/ # 后端项目 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/cdu/lx/smarthome/ │ │ │ │ ├── config/ # 配置类 │ │ │ │ │ ├── JacksonConfig.java │ │ │ │ │ └── WebConfig.java │ │ │ │ ├── controller/ # 控制器层(API接口) │ │ │ │ │ ├── AdminController.java │ │ │ │ │ ├── DepartmentController.java │ │ │ │ │ ├── EmployeeController.java │ │ │ │ │ ├── EvaluationController.java │ │ │ │ │ ├── FileUploadController.java │ │ │ │ │ ├── OrderController.java │ │ │ │ │ ├── ServiceController.java │ │ │ │ │ ├── ServiceRecordController.java │ │ │ │ │ ├── StatisticsController.java │ │ │ │ │ └── UserController.java │ │ │ │ ├── entity/ # 实体类(数据模型) │ │ │ │ │ ├── Admin.java │ │ │ │ │ ├── Department.java │ │ │ │ │ ├── Employee.java │ │ │ │ │ ├── Evaluation.java │ │ │ │ │ ├── Order.java │ │ │ │ │ ├── Service.java │ │ │ │ │ ├── ServiceRecord.java │ │ │ │ │ └── User.java │ │ │ │ ├── repository/ # 数据访问层 │ │ │ │ │ ├── AdminRepository.java │ │ │ │ │ ├── DepartmentRepository.java │ │ │ │ │ ├── EmployeeRepository.java │ │ │ │ │ ├── EvaluationRepository.java │ │ │ │ │ ├── OrderRepository.java │ │ │ │ │ ├── ServiceRecordRepository.java │ │ │ │ │ ├── ServiceRepository.java │ │ │ │ │ └── UserRepository.java │ │ │ │ ├── service/ # 业务逻辑层 │ │ │ │ │ ├── AdminService.java │ │ │ │ │ ├── DepartmentService.java │ │ │ │ │ ├── EmployeeService.java │ │ │ │ │ ├── EvaluationService.java │ │ │ │ │ ├── OrderService.java │ │ │ │ │ ├── ServiceItemService.java │ │ │ │ │ ├── ServiceRecordService.java │ │ │ │ │ ├── StatisticsService.java │ │ │ │ │ └── UserService.java │ │ │ │ └── SmarthomeApplication.java # 启动类 │ │ │ └── resources/ │ │ │ └── application.yml # 配置文件 │ │ └── test/ # 测试代码 │ ├── pom.xml # Maven配置文件 │ └── uploads/ # 文件上传目录 │ └── frontend/ # 前端项目 ├── src/ │ ├── views/ # 页面组件 │ │ ├── admin/ # 管理端页面 │ │ │ ├── Employees.vue │ │ │ ├── Evaluations.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Orders.vue │ │ │ ├── Services.vue │ │ │ └── Users.vue │ │ ├── employee/ # 服务人员端页面 │ │ │ ├── Evaluations.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Orders.vue │ │ │ ├── Profile.vue │ │ │ └── Services.vue │ │ ├── user/ # 用户端页面 │ │ │ ├── Evaluation.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Orders.vue │ │ │ ├── Profile.vue │ │ │ └── Register.vue │ │ └── Home.vue # 首页 │ ├── router/ │ │ └── index.js # 路由配置 │ ├── config/ # 配置文件 │ │ ├── theme.config.js │ │ └── ui.config.js │ ├── App.vue # 根组件 │ └── main.js # 入口文件 ├── package.json # 依赖配置 ├── vue.config.js # Vue配置 └── index.html # HTML模板 ``` --- ## 🔧 核心功能说明 ### 1. 订单流程 ``` 用户下单 (PENDING) ↓ 员工接单 (ACCEPTED) ↓ 记录到达 (可选) ↓ 开始服务 (IN_PROGRESS) ↓ 结束服务 (COMPLETED) ↓ 用户评价 ``` ### 2. 业务规则 #### 员工接单规则 - 员工不能同时处理多个服务 - 如果员工已有状态为 `IN_PROGRESS` 的订单,不能接新订单 - 只有状态为 `PENDING` 的订单才能被接单 #### 服务时长验证 - 服务结束时,系统会验证实际服务时长是否满足服务规定的最小时长 - 如果实际时长小于规定时长,系统会拒绝结束服务,提示员工确保服务时长 #### 服务记录完整性 - 服务记录包含:到达时间、开始时间、结束时间、实际服务时长 - 系统自动计算服务时长(结束时间 - 开始时间) ### 3. 评价机制 - 只有状态为 `COMPLETED` 的订单才能进行评价 - 每个订单只能评价一次 - 评分范围:1-5分 - 评价后,系统会自动更新员工的平均评分 --- ## 🎨 UI设计特点 ### 设计主题 系统采用**温暖、关怀**的设计风格,符合养老服务的特点: - **配色方案**:暖橙色 (#ff9a56) → 粉红色 (#ff6a88) → 紫色 (#c471ed) 的渐变 - **图标设计**:使用友好的图标,如 🏠(长者端)、👨‍⚕️(服务人员端)、👔(管理端) - **交互体验**:流畅的动画效果,友好的用户提示 ### 响应式设计 - 支持PC端和移动端访问 - 自适应布局,适配不同屏幕尺寸 --- ## 🔒 安全说明 ### 当前实现 - 密码存储:明文存储(生产环境应使用加密) - 跨域配置:允许所有来源(生产环境应限制) - 文件上传:限制文件大小(5MB) ### 生产环境建议 1. **密码加密**:使用BCrypt等加密算法 2. **JWT认证**:实现Token-based认证机制 3. **权限控制**:实现基于角色的访问控制(RBAC) 4. **HTTPS**:使用HTTPS协议 5. **输入验证**:加强前后端输入验证 6. **SQL注入防护**:使用参数化查询(JPA已提供) --- ## 🐛 常见问题 ### 1. 后端启动失败 **问题**:数据库连接失败 **解决方案**: - 检查MySQL服务是否启动 - 检查数据库配置是否正确 - 确认数据库已创建 ### 2. 前端无法连接后端 **问题**:跨域问题或代理配置问题 **解决方案**: - 检查后端是否启动(端口8080) - 检查前端代理配置(vue.config.js) - 检查浏览器控制台错误信息 ### 3. 文件上传失败 **问题**:文件大小超限或路径不存在 **解决方案**: - 检查文件大小是否超过5MB - 确认uploads目录存在且有写权限 - 检查application.yml中的文件上传配置 ### 4. 服务时长验证失败 **问题**:实际服务时长小于规定时长 **解决方案**: - 确保服务开始时间和结束时间正确记录 - 检查服务的duration字段设置是否合理 - 确保服务实际执行时间满足要求 --- ## 📝 开发说明 ### 代码规范 - **命名规范**:使用驼峰命名法 - **注释规范**:关键业务逻辑需要添加注释 - **异常处理**:使用统一的异常处理机制 - **日志记录**:关键操作需要记录日志 ### 数据库迁移 系统使用JPA的`ddl-auto: update`模式,会自动创建和更新表结构。生产环境建议: 1. 使用Flyway或Liquibase进行数据库版本管理 2. 手动编写SQL脚本进行数据库初始化 ### 测试建议 - 单元测试:为Service层编写单元测试 - 集成测试:为Controller层编写集成测试 - 前端测试:使用Vue Test Utils进行组件测试 --- ## 📄 许可证 本项目仅供学习和研究使用。 --- ## 👥 贡献 欢迎提交Issue和Pull Request! --- ## 📞 联系方式 如有问题,请通过Issue反馈。 --- **最后更新**: 2024年 ======= # smarthome # 智慧居家养老服务系统 ## 📋 项目简介 本课题以居家养老场景为背景,围绕"线上下单—员工接单—上门服务—服务评价"的完整服务流程,设计并实现了一个基于SpringBoot的网页服务平台。系统采用前后端分离架构,通过页面实现用户端、员工端与管理员端的交互功能。 ### 项目背景 当前居家养老服务流程中普遍存在诸多问题: 1. **服务流程缺乏透明度**:传统线下服务流程中,用户与社区工作人员之间的沟通效率较低,服务信息容易出现遗漏或误解,导致用户需求难以及时响应。 2. **服务过程缺乏有效记录**:线下服务模式中,服务执行过程往往缺乏有效记录,服务进度不可追踪,不利于责任界定、质量管理及服务过程的优化。 3. **评价体系不完善**:传统服务模式下用户评价体系不完善,反馈信息零散且难以量化,无法形成有效闭环,导致服务质量改进困难。 ### 解决方案 本系统通过数字化手段,实现了: - ✅ **透明的服务流程**:线上订单管理,实时跟踪服务状态 - ✅ **完整的服务记录**:详细记录服务过程,包括到达时间、开始时间、结束时间和服务时长 - ✅ **完善的评价体系**:用户可对服务进行评分和评价,形成服务质量闭环 - ✅ **智能的业务规则**:员工不能同时处理多个服务,服务时长必须满足规定要求 --- ## 🛠️ 技术栈 ### 后端技术 - **框架**: Spring Boot 2.6.13 - **ORM**: Spring Data JPA - **数据库**: MySQL 8.0 - **构建工具**: Maven - **Java版本**: JDK 1.8 - **其他**: Lombok, Spring Validation ### 前端技术 - **框架**: Vue 3.2.0 - **路由**: Vue Router 4.0.0 - **UI组件库**: Element Plus 2.0.0 - **HTTP客户端**: Axios 1.0.0 - **构建工具**: Vue CLI 5.0.0 --- ## 🏗️ 系统架构 ### 架构模式 采用**前后端分离架构**: ``` ┌─────────────────┐ HTTP/REST API ┌─────────────────┐ │ │ ◄─────────────────────────────► │ │ │ 前端 (Vue 3) │ │ 后端 (Spring │ │ Port: 8081 │ │ Boot) │ │ │ │ Port: 8080 │ └─────────────────┘ └─────────────────┘ │ ▼ ┌──────────────┐ │ MySQL 8.0 │ │ Port: 3306 │ └──────────────┘ ``` ### 后端架构 采用经典的**MVC三层架构**: ``` Controller层 (API接口) ↓ Service层 (业务逻辑) ↓ Repository层 (数据访问) ↓ Entity层 (数据模型) ↓ Database (MySQL) ``` --- ## 📦 功能模块 ### 1. 用户端(长者端) #### 1.1 用户管理 - **用户注册**:支持新用户注册,包含基本信息验证 - **用户登录**:安全的登录验证机制 - **个人信息管理**:查看和修改个人信息 #### 1.2 服务浏览与下单 - **服务浏览**:按部门分类浏览服务项目 - **服务详情**:查看服务描述、价格、时长等信息 - **员工选择**:查看员工信息、评分和评价,选择合适的服务人员 - **在线下单**:填写服务地址、预约时间、备注等信息创建订单 #### 1.3 订单管理 - **订单查看**:查看所有订单,支持按状态筛选 - **订单搜索**:按订单号、服务名称、地址等关键词搜索 - **订单状态跟踪**:实时查看订单状态(待接单、已接单、进行中、已完成、已取消) #### 1.4 服务评价 - **服务评价**:对已完成的服务进行评分(1-5分)和文字评价 - **评价查看**:查看历史评价记录 ### 2. 服务人员端 #### 2.1 工作台 - **待接订单**:查看所有待接单的订单 - **订单接单**:接受订单,系统自动检查是否已有正在进行的服务 - **订单管理**:查看和管理自己的所有订单 #### 2.2 服务记录 - **到达记录**:记录到达服务地点的时间 - **开始服务**:记录服务开始时间,系统检查是否有其他未完成的服务 - **结束服务**:记录服务结束时间,自动计算服务时长,验证是否满足服务规定时长 #### 2.3 评价查看 - **查看评价**:查看用户对自己的服务评价 - **评分统计**:查看平均评分和总订单数 #### 2.4 个人信息管理 - **信息维护**:更新个人信息、联系方式、个人介绍等 ### 3. 管理端 #### 3.1 系统概览 - **数据统计**:总订单数、待处理订单、已完成订单、已取消订单 - **快捷操作**:快速跳转到各功能模块 #### 3.2 订单管理 - **订单列表**:查看所有订单,支持多条件筛选和搜索 - **订单详情**:查看订单完整信息和服务记录 - **订单统计**:按状态、时间等维度统计订单数据 #### 3.3 员工管理 - **员工列表**:查看所有员工信息 - **员工添加**:添加新员工,设置部门、职位等信息 - **员工编辑**:修改员工信息、状态等 - **员工删除**:删除员工(软删除) #### 3.4 服务管理 - **服务列表**:查看所有服务项目 - **服务添加**:创建新服务,设置名称、描述、价格、时长、所属部门等 - **服务编辑**:修改服务信息 - **服务状态管理**:启用/禁用服务 #### 3.5 用户管理 - **用户列表**:查看所有注册用户 - **用户信息查看**:查看用户详细信息 - **用户状态管理**:启用/禁用用户账号 #### 3.6 评价管理 - **评价列表**:查看所有服务评价 - **评价详情**:查看评价内容和关联的订单信息 - **评价统计**:统计分析评价数据 #### 3.7 部门管理 - **部门列表**:查看所有部门 - **部门管理**:添加、编辑、删除部门 --- ## 🚀 快速开始 ### 环境要求 - **JDK**: 1.8 或更高版本 - **Maven**: 3.6 或更高版本 - **Node.js**: 14.0 或更高版本 - **npm**: 6.0 或更高版本 - **MySQL**: 8.0 或更高版本 ### 数据库配置 1. 创建MySQL数据库: ```sql CREATE DATABASE smarthome CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 修改数据库配置 编辑 `smarthome/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/smarthome?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root # 修改为你的数据库用户名 password: 200313 # 修改为你的数据库密码 ``` ### 后端启动 1. 进入后端目录: ```bash cd smarthome ``` 2. 使用Maven安装依赖(如果IDE没有自动安装): ```bash mvn clean install ``` 3. 运行主类: - **方式一**:使用IDE运行 `SmarthomeApplication.java` - **方式二**:使用Maven命令 ```bash mvn spring-boot:run ``` 4. 后端服务启动后,访问:`http://localhost:8080` ### 前端启动 1. 进入前端目录: ```bash cd frontend ``` 2. 安装依赖: ```bash npm install ``` 3. 启动开发服务器: ```bash npm run serve ``` 4. 前端服务启动后,访问:`http://localhost:8081` ### 访问系统 - **首页**: http://localhost:8081 - **用户端**: http://localhost:8081/user/login - **服务人员端**: http://localhost:8081/employee/login - **管理端**: http://localhost:8081/admin/login --- ## 📚 API文档 ### 基础信息 - **Base URL**: `http://localhost:8080/api` - **Content-Type**: `application/json` - **字符编码**: UTF-8 ### 通用响应格式 ```json { "success": true, "data": {}, "message": "操作成功" } ``` ### 用户端API #### 用户注册 ``` POST /api/user/register Request Body: { "username": "string", "password": "string", "realName": "string", "phone": "string", "address": "string" } ``` #### 用户登录 ``` POST /api/user/login Request Body: { "username": "string", "password": "string" } ``` #### 获取用户订单 ``` GET /api/order/user/{userId} ``` #### 创建订单 ``` POST /api/order/create Request Body: { "user": { "id": 1 }, "service": { "id": 1 }, "employee": { "id": 1 }, "amount": 100.00, "address": "string", "serviceTime": "2024-01-01 10:00:00", "remark": "string" } ``` #### 创建评价 ``` POST /api/evaluation/create Request Body: { "order": { "id": 1 }, "rating": 5, "content": "string" } ``` ### 服务人员端API #### 员工登录 ``` POST /api/employee/login Request Body: { "username": "string", "password": "string" } ``` #### 获取待接订单 ``` GET /api/order/pending ``` #### 接单 ``` POST /api/employee/orders/{orderId}/accept Request Body: { "employeeId": 1 } ``` #### 记录到达 ``` POST /api/service-record/order/{orderId}/arrival ``` #### 开始服务 ``` POST /api/service-record/order/{orderId}/start ``` #### 结束服务 ``` POST /api/service-record/order/{orderId}/end ``` #### 获取员工订单 ``` GET /api/employee/orders/{employeeId} ``` #### 获取员工评价 ``` GET /api/evaluation/employee/{employeeId} ``` ### 管理端API #### 管理员登录 ``` POST /api/admin/login Request Body: { "username": "string", "password": "string" } ``` #### 订单统计 ``` GET /api/admin/orders/statistics ``` #### 获取所有订单 ``` GET /api/admin/orders?page=0&size=10&status=PENDING ``` #### 员工管理 ``` GET /api/admin/employees # 获取员工列表 POST /api/admin/employees # 创建员工 PUT /api/admin/employees/{id} # 更新员工 DELETE /api/admin/employees/{id} # 删除员工 ``` #### 服务管理 ``` GET /api/service/all # 获取所有服务 GET /api/service/active # 获取启用服务 POST /api/service/create # 创建服务 PUT /api/service/{id} # 更新服务 DELETE /api/service/{id} # 删除服务 ``` #### 用户管理 ``` GET /api/admin/users # 获取用户列表 GET /api/admin/users/{id} # 获取用户详情 PUT /api/admin/users/{id} # 更新用户 ``` #### 评价管理 ``` GET /api/admin/evaluations # 获取评价列表 GET /api/admin/evaluations/{id} # 获取评价详情 ``` #### 部门管理 ``` GET /api/department/all # 获取所有部门 GET /api/department/active # 获取启用部门 POST /api/department/create # 创建部门 PUT /api/department/{id} # 更新部门 DELETE /api/department/{id} # 删除部门 ``` --- ## 🗄️ 数据库设计 ### 核心实体 #### User (用户表) - `id`: 主键 - `username`: 用户名(唯一) - `password`: 密码 - `realName`: 真实姓名 - `phone`: 联系电话 - `address`: 地址 - `status`: 状态(ACTIVE/INACTIVE) #### Employee (员工表) - `id`: 主键 - `username`: 用户名(唯一) - `password`: 密码 - `realName`: 真实姓名 - `phone`: 联系电话 - `employeeType`: 员工类型 - `departmentId`: 所属部门ID - `status`: 状态(ACTIVE/INACTIVE) - `introduction`: 个人介绍 - `averageRating`: 平均评分 - `totalOrders`: 总订单数 - `completedOrders`: 已完成订单数 #### Service (服务表) - `id`: 主键 - `name`: 服务名称 - `description`: 服务描述 - `price`: 价格 - `duration`: 服务时长(分钟) - `serviceType`: 服务类型 - `departmentId`: 所属部门ID - `status`: 状态(ACTIVE/INACTIVE) #### Order (订单表) - `id`: 主键 - `orderNo`: 订单号(唯一) - `userId`: 用户ID - `serviceId`: 服务ID - `employeeId`: 员工ID - `amount`: 金额 - `address`: 服务地址 - `serviceTime`: 预约服务时间 - `status`: 订单状态(PENDING/ACCEPTED/IN_PROGRESS/COMPLETED/CANCELLED/REFUNDED) - `createTime`: 创建时间 - `acceptTime`: 接单时间 - `remark`: 备注 #### ServiceRecord (服务记录表) - `id`: 主键 - `orderId`: 订单ID - `arrivalTime`: 到达时间 - `serviceStartTime`: 服务开始时间 - `serviceEndTime`: 服务结束时间 - `actualDuration`: 实际服务时长(分钟) - `description`: 服务描述 #### Evaluation (评价表) - `id`: 主键 - `orderId`: 订单ID - `rating`: 评分(1-5) - `content`: 评价内容 - `evaluateTime`: 评价时间 #### Department (部门表) - `id`: 主键 - `name`: 部门名称 - `description`: 部门描述 - `status`: 状态(ACTIVE/INACTIVE) #### Admin (管理员表) - `id`: 主键 - `username`: 用户名(唯一) - `password`: 密码 - `realName`: 真实姓名 ### 关系说明 - **User** 与 **Order**: 一对多关系 - **Employee** 与 **Order**: 一对多关系 - **Service** 与 **Order**: 一对多关系 - **Order** 与 **ServiceRecord**: 一对一关系 - **Order** 与 **Evaluation**: 一对一关系 - **Department** 与 **Service**: 一对多关系 - **Department** 与 **Employee**: 一对多关系 --- ## 📁 项目结构 ``` smarthome/ ├── smarthome/ # 后端项目 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/cdu/lx/smarthome/ │ │ │ │ ├── config/ # 配置类 │ │ │ │ │ ├── JacksonConfig.java │ │ │ │ │ └── WebConfig.java │ │ │ │ ├── controller/ # 控制器层(API接口) │ │ │ │ │ ├── AdminController.java │ │ │ │ │ ├── DepartmentController.java │ │ │ │ │ ├── EmployeeController.java │ │ │ │ │ ├── EvaluationController.java │ │ │ │ │ ├── FileUploadController.java │ │ │ │ │ ├── OrderController.java │ │ │ │ │ ├── ServiceController.java │ │ │ │ │ ├── ServiceRecordController.java │ │ │ │ │ ├── StatisticsController.java │ │ │ │ │ └── UserController.java │ │ │ │ ├── entity/ # 实体类(数据模型) │ │ │ │ │ ├── Admin.java │ │ │ │ │ ├── Department.java │ │ │ │ │ ├── Employee.java │ │ │ │ │ ├── Evaluation.java │ │ │ │ │ ├── Order.java │ │ │ │ │ ├── Service.java │ │ │ │ │ ├── ServiceRecord.java │ │ │ │ │ └── User.java │ │ │ │ ├── repository/ # 数据访问层 │ │ │ │ │ ├── AdminRepository.java │ │ │ │ │ ├── DepartmentRepository.java │ │ │ │ │ ├── EmployeeRepository.java │ │ │ │ │ ├── EvaluationRepository.java │ │ │ │ │ ├── OrderRepository.java │ │ │ │ │ ├── ServiceRecordRepository.java │ │ │ │ │ ├── ServiceRepository.java │ │ │ │ │ └── UserRepository.java │ │ │ │ ├── service/ # 业务逻辑层 │ │ │ │ │ ├── AdminService.java │ │ │ │ │ ├── DepartmentService.java │ │ │ │ │ ├── EmployeeService.java │ │ │ │ │ ├── EvaluationService.java │ │ │ │ │ ├── OrderService.java │ │ │ │ │ ├── ServiceItemService.java │ │ │ │ │ ├── ServiceRecordService.java │ │ │ │ │ ├── StatisticsService.java │ │ │ │ │ └── UserService.java │ │ │ │ └── SmarthomeApplication.java # 启动类 │ │ │ └── resources/ │ │ │ └── application.yml # 配置文件 │ │ └── test/ # 测试代码 │ ├── pom.xml # Maven配置文件 │ └── uploads/ # 文件上传目录 │ └── frontend/ # 前端项目 ├── src/ │ ├── views/ # 页面组件 │ │ ├── admin/ # 管理端页面 │ │ │ ├── Employees.vue │ │ │ ├── Evaluations.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Orders.vue │ │ │ ├── Services.vue │ │ │ └── Users.vue │ │ ├── employee/ # 服务人员端页面 │ │ │ ├── Evaluations.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Orders.vue │ │ │ ├── Profile.vue │ │ │ └── Services.vue │ │ ├── user/ # 用户端页面 │ │ │ ├── Evaluation.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Orders.vue │ │ │ ├── Profile.vue │ │ │ └── Register.vue │ │ └── Home.vue # 首页 │ ├── router/ │ │ └── index.js # 路由配置 │ ├── config/ # 配置文件 │ │ ├── theme.config.js │ │ └── ui.config.js │ ├── App.vue # 根组件 │ └── main.js # 入口文件 ├── package.json # 依赖配置 ├── vue.config.js # Vue配置 └── index.html # HTML模板 ``` --- ## 🔧 核心功能说明 ### 1. 订单流程 ``` 用户下单 (PENDING) ↓ 员工接单 (ACCEPTED) ↓ 记录到达 (可选) ↓ 开始服务 (IN_PROGRESS) ↓ 结束服务 (COMPLETED) ↓ 用户评价 ``` ### 2. 业务规则 #### 员工接单规则 - 员工不能同时处理多个服务 - 如果员工已有状态为 `IN_PROGRESS` 的订单,不能接新订单 - 只有状态为 `PENDING` 的订单才能被接单 #### 服务时长验证 - 服务结束时,系统会验证实际服务时长是否满足服务规定的最小时长 - 如果实际时长小于规定时长,系统会拒绝结束服务,提示员工确保服务时长 #### 服务记录完整性 - 服务记录包含:到达时间、开始时间、结束时间、实际服务时长 - 系统自动计算服务时长(结束时间 - 开始时间) ### 3. 评价机制 - 只有状态为 `COMPLETED` 的订单才能进行评价 - 每个订单只能评价一次 - 评分范围:1-5分 - 评价后,系统会自动更新员工的平均评分 --- ## 🎨 UI设计特点 ### 设计主题 系统采用**温暖、关怀**的设计风格,符合养老服务的特点: - **配色方案**:暖橙色 (#ff9a56) → 粉红色 (#ff6a88) → 紫色 (#c471ed) 的渐变 - **图标设计**:使用友好的图标,如 🏠(长者端)、👨‍⚕️(服务人员端)、👔(管理端) - **交互体验**:流畅的动画效果,友好的用户提示 ### 响应式设计 - 支持PC端和移动端访问 - 自适应布局,适配不同屏幕尺寸 --- ## 🔒 安全说明 ### 当前实现 - 密码存储:明文存储(生产环境应使用加密) - 跨域配置:允许所有来源(生产环境应限制) - 文件上传:限制文件大小(5MB) ### 生产环境建议 1. **密码加密**:使用BCrypt等加密算法 2. **JWT认证**:实现Token-based认证机制 3. **权限控制**:实现基于角色的访问控制(RBAC) 4. **HTTPS**:使用HTTPS协议 5. **输入验证**:加强前后端输入验证 6. **SQL注入防护**:使用参数化查询(JPA已提供) --- ## 🐛 常见问题 ### 1. 后端启动失败 **问题**:数据库连接失败 **解决方案**: - 检查MySQL服务是否启动 - 检查数据库配置是否正确 - 确认数据库已创建 ### 2. 前端无法连接后端 **问题**:跨域问题或代理配置问题 **解决方案**: - 检查后端是否启动(端口8080) - 检查前端代理配置(vue.config.js) - 检查浏览器控制台错误信息 ### 3. 文件上传失败 **问题**:文件大小超限或路径不存在 **解决方案**: - 检查文件大小是否超过5MB - 确认uploads目录存在且有写权限 - 检查application.yml中的文件上传配置 ### 4. 服务时长验证失败 **问题**:实际服务时长小于规定时长 **解决方案**: - 确保服务开始时间和结束时间正确记录 - 检查服务的duration字段设置是否合理 - 确保服务实际执行时间满足要求 --- ## 📝 开发说明 ### 代码规范 - **命名规范**:使用驼峰命名法 - **注释规范**:关键业务逻辑需要添加注释 - **异常处理**:使用统一的异常处理机制 - **日志记录**:关键操作需要记录日志 ### 数据库迁移 系统使用JPA的`ddl-auto: update`模式,会自动创建和更新表结构。生产环境建议: 1. 使用Flyway或Liquibase进行数据库版本管理 2. 手动编写SQL脚本进行数据库初始化 ### 测试建议 - 单元测试:为Service层编写单元测试 - 集成测试:为Controller层编写集成测试 - 前端测试:使用Vue Test Utils进行组件测试 --- ## 📄 许可证 本项目仅供学习和研究使用。 >>>>>>> ff4e090253da6be887deb408bbc3bf6fadc87507