温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着生活节奏的加快和消费观念的转变,越来越多家庭希望在特殊场合或日常用餐时享受专业厨师上门服务。传统找厨师的方式依赖熟人介绍或线下中介,存在信息不透明、预约流程繁琐、服务质量难以保障等问题。本项目基于 Java Spring Boot 后端框架,结合微信小程序前端,设计并实现一套厨师上门做菜服务平台,旨在打通用户与厨师之间的信息壁垒,提供在线预约、菜品定制、服务评价等一站式服务。
该系统的实现具有以下现实意义:
- 提升服务效率:用户可在线浏览厨师信息、查看档期并快速下单,减少沟通成本。
- 保障服务质量:通过实名认证、服务评价和平台监管机制,提升服务可信度。
- 拓展就业渠道:为专业厨师提供更灵活、更直接的接单渠道。
2. 系统需求分析
2.1 用户角色分析
系统主要面向三类角色,分别是普通用户、厨师和平台管理员,各角色职责如下:
| 角色 | 主要功能 |
|---|---|
| 普通用户 | 注册登录、浏览厨师、预约下单、在线支付、评价反馈 |
| 厨师 | 入驻认证、管理菜品、设置档期、接单处理、查看收益 |
| 平台管理员 | 用户管理、厨师审核、订单监管、数据统计、系统配置 |
2.2 功能需求
结合业务场景,系统核心功能模块划分如下:
- 用户模块:微信授权登录、个人信息维护、地址管理。
- 厨师模块:入驻申请、资质审核、菜品管理、服务档期设置。
- 预约模块:按地区、菜系、档期筛选厨师,提交上门服务预约。
- 订单模块:订单生成、状态流转、在线支付、取消与退款。
- 评价模块:服务完成后用户对厨师进行评分和文字评价。
- 管理后台:数据看板、内容审核、订单监控、系统参数管理。
2.3 非功能需求
- 性能要求:常规并发下接口响应时间不超过 2 秒,支持一定规模的并发访问。
- 安全性:用户密码加密存储,接口鉴权采用 Token 机制,敏感操作记录日志。
- 可扩展性:模块化设计,便于后续接入更多服务类型或第三方能力。
- 易用性:小程序界面简洁友好,操作流程符合用户习惯。
3. 系统总体设计
3.1 系统架构设计
系统采用前后端分离架构,前端为微信小程序,后端为 Spring Boot 微服务,数据存储使用 MySQL 关系型数据库,缓存层采用 Redis。整体架构如下:
flowchart TD A[微信小程序前端] -->|HTTPS 请求| B[Nginx 反向代理] B --> C[Spring Boot 后端服务] C --> D[MySQL 数据库] C --> E[Redis 缓存] C --> F[微信支付/登录 API] C --> G[对象存储 OSS]3.2 技术选型
| 层次 | 技术方案 |
|---|---|
| 前端 | 微信小程序原生框架、WXML、WXSS、JavaScript |
| 后端 | Spring Boot、Spring MVC、MyBatis-Plus |
| 数据库 | MySQL 8.0、Redis |
| 鉴权 | Spring Security、JWT |
| 接口文档 | Swagger / Knife4j |
| 部署 | Docker、Nginx、阿里云 ECS |
3.3 数据库设计
系统核心数据表包括用户表、厨师表、菜品表、预约订单表、评价表和档期表。以下为部分关键表结构设计:
CREATE TABLE `chef` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '厨师ID', `user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID', `real_name` varchar(50) DEFAULT NULL COMMENT '真实姓名', `avatar` varchar(255) DEFAULT NULL COMMENT '头像', `cuisine_type` varchar(100) DEFAULT NULL COMMENT '擅长菜系', `years_exp` int(11) DEFAULT NULL COMMENT '从业年限', `service_area` varchar(255) DEFAULT NULL COMMENT '服务区域', `status` tinyint(4) DEFAULT '0' COMMENT '审核状态 0待审核 1通过 2驳回', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='厨师信息表';4. 核心功能模块实现
4.1 微信登录模块
用户首次进入小程序时,前端调用wx.login获取临时凭证 code,后端通过该 code 调用微信接口换取 openid 和 session_key,完成用户身份识别与注册。核心实现如下:
@Service public class WxAuthService { @Autowired private RestTemplate restTemplate; @Value("${wx.appid}") private String appid; @Value("${wx.secret}") private String secret; public String wxLogin(String code) { String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code"; String result = restTemplate.getForObject(url, String.class); // 解析 openid,查询或创建用户,生成 JWT 返回 return result; } }4.2 厨师入驻与审核
厨师提交入驻申请时需填写真实姓名、从业年限、擅长菜系、服务区域等信息,并上传身份证和健康证照片。管理员在后台对资质进行审核,审核通过后厨师即可上架菜品并设置服务档期。
4.3 预约下单流程
用户选择厨师后,根据服务日期和时段提交预约,系统校验厨师档期是否冲突,确认后生成订单并跳转微信支付。订单状态流转如下:
flowchart LR A[待支付] -->|支付成功| B[待接单] B -->|厨师接单| C[服务中] C -->|服务完成| D[待评价] D -->|用户评价| E[已完成] B -->|厨师拒绝| F[已取消] A -->|超时未支付| F4.4 订单管理模块
订单模块是系统的核心业务,涉及订单创建、支付回调、状态流转和退款处理。以下为订单状态枚举定义:
public enum OrderStatus { PENDING_PAY(0, "待支付"), PENDING_ACCEPT(1, "待接单"), SERVING(2, "服务中"), PENDING_COMMENT(3, "待评价"), COMPLETED(4, "已完成"), CANCELLED(5, "已取消"); private final int code; private final String desc; OrderStatus(int code, String desc) { this.code = code; this.desc = desc; } }5. 系统测试
5.1 测试环境
系统测试在本地开发环境与测试服务器上分别进行,使用 JUnit 和 Postman 完成单元测试与接口测试,小程序端使用微信开发者工具进行真机调试。
5.2 测试用例设计
| 模块 | 测试项 | 预期结果 |
|---|---|---|
| 登录模块 | 微信授权登录 | 成功获取用户身份并返回 Token |
| 预约模块 | 档期冲突校验 | 冲突时段不可重复预约 |
| 订单模块 | 支付回调处理 | 订单状态正确更新为待接单 |
| 评价模块 | 服务完成后评价 | 评价成功且评分生效 |
6. 总结与展望
本文基于 Java Spring Boot 和微信小程序,设计并实现了一套厨师上门做菜服务平台,覆盖用户、厨师和管理员三类角色的核心业务流程。系统采用前后端分离架构,具备良好的可维护性和可扩展性,能够满足上门做菜服务的基本业务需求。
后续可在以下方向继续优化:
- 引入智能推荐算法,根据用户口味偏好推荐合适厨师。
- 增加实时定位与路线规划能力,提升上门服务体验。
- 完善售后与保险机制,进一步保障双方权益。
- 接入更多支付渠道和营销工具,提升平台运营能力。