# 闪动外卖 **Repository Path**: beihaiRK07/sdtakeout ## Basic Information - **Project Name**: 闪动外卖 - **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-07-23 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 闪动外卖 闪动外卖是一个面向餐饮外卖场景的全栈项目,覆盖商家管理后台、微信小程序用户端和 Spring Boot 后端服务。项目围绕门店运营、菜品套餐、订单交易、数据统计、即时通知和 AI 订单助手展开,适合作为外卖业务系统、Spring Boot 企业级开发实践和多端联调项目参考。 ## 项目结构 ```text . ├── sd-take-out/ # Java 后端工程 │ ├── sd-common/ # 通用常量、异常、结果封装、工具类 │ ├── sd-pojo/ # Entity、DTO、VO 等数据模型 │ └── sd-server/ # Controller、Service、Mapper、配置与业务实现 ├── project-sd-admin-vue-ts/ # 商家管理后台,Vue 3 + TypeScript + Vite ├── mp-weixin/ # 微信小程序用户端 ├── _project-sd-admin-original/ # 原始管理端工程备份 ├── scripts/ # 项目辅助脚本 └── 登录注册功能实现详解.md # 登录注册模块说明文档 ``` ## 技术栈 ### 后端 | 方向 | 技术 | | --- | --- | | 基础框架 | Spring Boot 3.5.9、Spring MVC | | 数据访问 | MyBatis / MyBatis-Plus、Mapper XML | | 数据库 | MySQL 8、Druid 数据源 | | 缓存与性能 | Redis、Spring Cache、Redis Bitmap Bloom Filter | | 安全认证 | JWT、管理端与用户端双 Token 体系、拦截器鉴权 | | 实时通信 | WebSocket、SSE | | AI 能力 | Spring AI 1.0.0、智谱 GLM、Chat Memory JDBC | | 文档与工具 | Knife4j、Lombok、Fastjson、Apache POI、AOP | | 第三方服务 | 微信登录/支付、阿里云 OSS、百度地图 | 后端采用 Maven 多模块组织,`sd-common` 放公共能力,`sd-pojo` 放数据对象,`sd-server` 承载业务入口和服务实现,层次清晰,便于维护和扩展。 ### 管理后台 | 方向 | 技术 | | --- | --- | | 核心框架 | Vue 3、TypeScript、Vite | | UI 组件 | Element Plus、Sass | | 状态管理 | Vuex 4、vuex-persistedstate | | 路由 | Vue Router 4 | | 请求与体验 | Axios、NProgress、js-cookie | | 数据可视化 | ECharts | | 工程化 | vue-tsc、PostCSS、Autoprefixer、Dockerfile | 管理端提供员工、分类、菜品、套餐、订单、统计报表和工作台等运营功能,并保留了从旧版 Vue 工程迁移到 Vue 3 + Vite 的兼容层与修复脚本。 ### 微信小程序 | 方向 | 技术 | | --- | --- | | 运行平台 | 微信小程序 | | 页面技术 | WXML、WXSS、JavaScript | | 组件 | uni-ui / uni_modules 组件 | | 主要页面 | 首页、商品详情、购物车/下单、支付、地址、历史订单、我的、AI 助手 | 小程序端负责用户浏览菜品、管理地址、提交订单、查看订单历史,并提供 AI 助手入口。 ## 核心功能 - 管理端员工登录、JWT 鉴权、账号状态校验。 - 用户端微信登录,自动识别新用户并注册。 - 菜品分类、菜品、口味、套餐的增删改查和启停售管理。 - 用户地址簿、购物车、下单、支付、催单、订单状态流转。 - 管理端订单接单、拒单、派送、完成、取消和条件分页查询。 - 营业额、用户量、订单量、销量 Top10 等运营统计。 - 基于 Apache POI 的运营数据 Excel 报表导出。 - WebSocket 实时推送订单提醒和业务通知。 - 阿里云 OSS 图片上传,用于菜品、套餐等资源管理。 - Redis 缓存店铺状态、分类菜品等高频数据。 - AI 对话与订单助手,支持对话历史、流式响应和订单查询辅助。 ## 项目亮点 ### 1. 多端一体的外卖业务闭环 项目同时包含商家管理后台、微信小程序用户端和后端 API,业务链路从用户浏览、加购、下单、支付,到商家接单、派送、完成,再到运营统计和报表导出,形成了完整闭环。 ### 2. 清晰的后端分层与多模块设计 后端按 `common / pojo / server` 拆分模块,Controller、Service、Mapper、DTO、VO、Entity 职责明确。通用响应、异常、上下文、JWT、OSS、微信支付等能力沉淀在公共模块中,降低业务代码耦合。 ### 3. 管理端和用户端双认证体系 系统区分管理端员工登录和微信用户登录。管理端使用用户名密码登录,用户端接入微信授权登录,两端分别配置 Token 名称、密钥和有效期,并通过拦截器统一解析 JWT,将当前用户 ID 写入线程上下文。 ### 4. AI 订单助手与安全 SQL 工作流 项目接入 Spring AI 和智谱模型,提供普通聊天与订单助手两类能力。订单助手不是直接执行模型输出,而是经过 SQL 生成、SQL 审核、用户范围强制约束、只读查询执行和 SSE 进度推送,兼顾智能体验与数据安全。 ### 5. 流式交互与会话记忆 AI 聊天接口支持流式输出,并基于 JDBC Chat Memory 保存会话上下文。用户可以创建会话、查看历史消息、继续对话或删除会话,小程序端可以获得更自然的连续问答体验。 ### 6. Redis Bitmap 布隆过滤器 后端内置 Redis Bitmap 实现的布隆过滤器,在应用启动后加载合法分类、套餐等关键业务 ID,用于提前拦截明显非法的查询请求,减少无效数据库访问,适合高频读接口的防穿透场景。 ### 7. AOP 自动填充公共字段 项目通过自定义注解和切面,在新增/更新业务对象时统一处理创建时间、更新时间、创建人、更新人等公共字段,让业务方法专注于核心逻辑,减少重复样板代码。 ### 8. 实时通知与定时任务 WebSocket 用于向管理端实时推送订单提醒;定时任务处理超时订单、派送状态等周期性业务。实时事件和后台任务结合,让订单履约状态更贴近真实业务。 ### 9. 运营数据可视化与报表能力 管理后台使用 ECharts 展示营业额、订单、用户、销量排行等统计数据;后端使用 Apache POI 基于模板导出 Excel 报表,满足日常经营复盘和数据沉淀需求。 ### 10. 现代化管理端工程迁移 管理端使用 Vue 3、TypeScript、Vite、Element Plus 和 ECharts,并保留了迁移脚本与兼容适配代码,体现了从传统 Vue CLI 管理后台向现代前端工程的升级过程。 ## 快速启动 ### 1. 准备基础服务 请先准备以下环境: - JDK 17 或更高版本 - Maven 3.8+ - Node.js 18 或更高版本 - MySQL 8 - Redis - 微信开发者工具 创建数据库并导入后端 SQL: ```bash mysql -u root -p -e "create database if not exists sd_take_out default charset utf8mb4;" mysql -u root -p sd_take_out < sd-take-out/sd-server/src/main/resources/schema-mysql.sql ``` ### 2. 配置后端 后端配置位于: ```text sd-take-out/sd-server/src/main/resources/application.yml sd-take-out/sd-server/src/main/resources/application-dev.yml ``` 需要按本地环境配置 MySQL、Redis、JWT、阿里云 OSS、微信小程序、百度地图和 `ZHIPU_API_KEY` 等参数。建议在本地开发时使用自己的密钥和测试账号,不要提交真实生产密钥。 启动后端: ```bash cd sd-take-out mvn spring-boot:run -pl sd-server ``` 默认服务端口为: ```text http://localhost:8080 ``` ### 3. 启动管理后台 ```bash cd project-sd-admin-vue-ts npm install npm run dev ``` 默认访问地址: ```text http://localhost:8888 ``` 构建生产包: ```bash npm run build ``` ### 4. 启动微信小程序 使用微信开发者工具导入: ```text mp-weixin/mp-weixin ``` 根据本地后端地址调整小程序请求域名,开发阶段可在微信开发者工具中开启“不校验合法域名”。 ## API 与文档 后端集成 Knife4j,启动服务后可查看接口文档。具体访问路径取决于 Knife4j 版本和配置,常见地址如下: ```text http://localhost:8080/doc.html ``` ## 配置注意事项 - `application-dev.yml` 中的数据库、OSS、微信、地图和 AI Key 均应替换为自己的开发环境配置。 - 微信支付相关配置默认部分注释,接入真实支付前需要准备商户号、证书、API v3 Key 和回调地址。 - AI 订单助手需要可用的 `ZHIPU_API_KEY`,并且数据库中需要有订单相关表和数据。 - Redis 是缓存、布隆过滤器等能力的依赖服务,建议开发时保持启动。 - 管理后台默认代理/接口地址需要与后端端口保持一致。 ## 适用场景 - Spring Boot + MyBatis 企业级项目学习。 - 外卖/点餐/餐饮 SaaS 原型开发。 - Vue 3 管理后台迁移和工程化实践。 - 微信小程序与 Java 后端联调练习。 - AI + 业务数据查询的安全工作流探索。 ## 备注 项目中包含原始管理端备份目录和若干迁移脚本,主要用于对照、修复和升级管理后台。日常开发建议优先关注 `sd-take-out`、`project-sd-admin-vue-ts` 和 `mp-weixin/mp-weixin` 三个主目录。