# takeout-ordering-system **Repository Path**: thinkwid/takeout-ordering-system ## Basic Information - **Project Name**: takeout-ordering-system - **Description**: 练手项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-12 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 外卖订餐系统 外卖订餐系统是一个基于Spring Boot开发的前后端分离的外卖订餐平台,包含管理端和用户端两个子系统。 ## 项目概述 外卖订餐系统是一个功能完善的在线订餐平台,为商家提供管理后台,为用户提供订餐前端接口。系统采用现代化的技术栈,具有高可扩展性和可维护性。 ## 技术栈 - **后端框架**: Spring Boot 2.7.3 - **编程语言**: Java 17 - **持久层框架**: MyBatis - **数据库**: MySQL (Druid连接池) - **缓存**: Redis + Caffeine本地缓存 + Spring Cache - **分布式锁**: Redisson - **限流降级**: Alibaba Sentinel - **安全认证**: JWT - **实时通信**: WebSocket - **文件存储**: 阿里云OSS - **API文档**: Knife4j - **项目构建**: Maven多模块 ## 系统架构 项目采用前后端分离架构,后端遵循Controller -> Service -> Mapper -> Entity分层设计,使用RESTful API提供服务。 ### 模块结构 - **sky-common**: 公共组件模块,包含常量、工具类、配置类等 - **sky-pojo**: 实体类模块,包含DTO、Entity、VO等数据传输对象 - **sky-server**: 业务逻辑模块,包含控制器、服务、数据访问等 ### 功能模块 #### 管理端功能 - **员工管理**: 员工信息管理、登录验证 - **分类管理**: 菜品和套餐分类管理 - **菜品管理**: 菜品信息管理、图片上传 - **套餐管理**: 套餐信息管理、套餐菜品关联 - **订单管理**: 订单状态管理、订单查询统计 - **报表管理**: 营业数据统计、销量排名报表 - **店铺管理**: 店铺营业状态管理 - **工作台**: 订单提醒、工作数据概览 - **秒杀管理**: 秒杀商品管理、活动启停、数据对账 #### 用户端功能 - **用户管理**: 用户登录、个人信息 - **地址管理**: 用户地址簿管理 - **分类浏览**: 菜品分类查看 - **菜品浏览**: 菜品信息查看 - **套餐浏览**: 套餐信息查看 - **购物车**: 购物车管理 - **订单功能**: 订单提交、查询、支付 - **秒杀**: 秒杀商品下单(Lua脚本原子扣减+时间窗口校验、消息队列异步削峰、兜底对账) ## 项目特点 - **现代化架构**: 采用Spring Boot + MyBatis + MySQL技术栈 - **前后端分离**: RESTful API设计,便于前后端独立开发 - **安全可靠**: JWT身份认证,保障系统安全 - **高并发支持**: Redis + Caffeine多级缓存 + Sentinel限流降级,应对高并发场景 - **秒杀方案**: Lua脚本原子扣减+时间窗口校验 + 消息队列异步削峰 + 数据对账兜底 - **缓存防护**: 布隆过滤器防止缓存穿透,Spring Cache空值缓存防穿透 - **云存储集成**: 阿里云OSS文件上传存储 - **实时通信**: WebSocket实现订单状态实时推送 - **多模块设计**: Maven多模块项目结构,便于维护 ## 快速开始 ### 环境要求 - JDK 17 - Maven 3.5+ - MySQL 8.0+ - Redis ## API接口 系统提供RESTful API接口,支持管理端和用户端分别访问。 ### 管理端API - `/admin/**` - 管理端接口,需管理员身份验证 ### 用户端API - `/user/**` - 用户端接口,需用户身份验证 ## 配置说明 ### JWT配置 - 管理端JWT密钥、过期时间等在 [application.yml](file:///D:/develop/IDEAProject/sky-take-out/sky-server/src/main/resources/application.yml) 中配置 - 用户端JWT配置同样在配置文件中定义 ### 阿里云OSS配置 - 需要配置阿里云OSS的访问密钥、存储空间等信息 ### 微信支付配置 - 配置微信支付相关参数 ## 数据库设计 系统包含以下主要数据表: - 员工表 (employee) - 菜品表 (dish) - 套餐表 (setmeal) - 订单表 (orders) - 订单详情表 (order_detail) - 购物车表 (shopping_cart) - 地址簿表 (address_book) - 分类表 (category) - 秒杀商品表 (seckill_product) - 秒杀订单表 (seckill_order) ## 扩展功能 - **定时任务**: 订单超时取消、配送完成等定时任务调度 - **多级缓存**: Redis + Caffeine + Spring Cache多级缓存体系 - **布隆过滤器**: 防止缓存穿透,减少无效数据库查询 - **限流降级**: Sentinel实现接口限流与熔断降级 - **分布式锁**: Redisson实现秒杀等场景的分布式锁 - **消息队列**: 秒杀异步下单削峰填谷 - **文件上传**: 阿里云OSS文件存储 - **报表统计**: 营业数据和销量排名统计 - **WebSocket通信**: 实时订单状态推送 ## 注意事项 1. 项目基于Spring Boot 2.7.3开发,使用Java 17 2. 需要正确配置数据库和Redis连接 3. 阿里云OSS和微信支付需要有效的账户信息 4. 生产环境部署时注意修改配置文件中的敏感信息 ## 开发规范 - 代码遵循Java编程规范 - 使用Lombok简化代码 - 统一异常处理机制 - 统一结果返回格式 ## 许可证 本项目仅供学习交流使用。