# sky-take-out **Repository Path**: codefarmerj/sky-take-out ## Basic Information - **Project Name**: sky-take-out - **Description**: sky-take-out - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-19 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 苍穹外卖项目说明文档 ## 一、项目简介 苍穹外卖是一套前后端分离的外卖点餐系统,支持微信小程序端(C端用户)和后台管理端(B端员工/管理员)。系统涵盖点餐、购物车、下单、支付、配送、数据统计等完整业务流程,适用于餐饮O2O场景。 --- ## 二、项目架构 ### 1. 总体架构 - **前端**:微信小程序(`front/mp-weixin`),负责用户点餐、下单、支付等操作。 - **后端**:Spring Boot 微服务(`sky-server`),提供RESTful API,处理业务逻辑。 - **数据库**:MySQL,存储业务数据。 - **缓存**:Redis,提升访问效率。 - **对象存储**:阿里云OSS,存储图片等静态资源。 - **支付**:微信支付API,完成订单支付。 - **反向代理**:Nginx,前后端分离部署,转发请求。 ### 2. 目录结构简述 - `sky-server`:后端主服务 - `controller`:接口层,分admin、user、notify等 - `service`/`service/impl`:业务逻辑层 - `mapper`:MyBatis数据访问层 - `config`:配置类(如WebMvc、Redis、OSS等) - `interceptor`:JWT拦截器 - `resources`:配置文件、MyBatis映射、静态资源 - `sky-pojo`:实体、DTO、VO - `sky-common`:通用工具、常量、异常、配置属性 - `front/mp-weixin`:微信小程序前端 - `database`:数据库脚本及设计文档 - `front/webEnvironment`:Nginx及前端部署环境 --- ## 三、核心业务逻辑与数据关系 ### 1. 主要业务流程 #### 用户端(C端) - 微信授权登录,获取token - 浏览菜品/套餐,加入购物车 - 下单并选择收货地址 - 微信支付,支付回调自动更新订单状态 - 查询历史订单、管理收货地址 #### 管理端(B端) - 员工登录,管理菜品、套餐、分类 - 订单管理、配送管理 - 数据统计与报表导出 ### 2. 数据库核心表结构 详见 `database/数据库设计文档.md`,主要表如下: - `employee`:员工表 - `category`:分类表 - `dish`:菜品表 - `dish_flavor`:菜品口味表 - `setmeal`:套餐表 - `setmeal_dish`:套餐-菜品关系 - `user`:用户表 - `address_book`:收货地址 - `shopping_cart`:购物车 - `orders`:订单表 - `order_detail`:订单明细 表与表之间通过主外键、冗余字段等方式建立业务关联,支撑完整的外卖业务流程。 --- ## 四、技术实现要点 ### 1. 后端 - **Spring Boot**:快速开发RESTful API - **MyBatis**:高效ORM,SQL灵活 - **Redis**:缓存用户会话、热点数据 - **JWT**:用户/员工鉴权,拦截器区分C端与B端 - **阿里云OSS**:图片等静态资源上传与访问 - **微信支付**:集成支付回调,自动处理订单状态 - **Knife4j/Swagger**:自动生成接口文档,访问 `/doc.html` ### 2. 前端 - **微信小程序**:原生开发,页面与组件分层,体验流畅 - **Nginx**:反向代理,前后端分离部署 --- ## 五、部署说明 ### 1. 环境准备 - JDK 8+ - Maven 3.6+ - MySQL 5.7/8.0 - Redis 5.0+ - 阿里云OSS账号 - 微信商户号及支付API证书 - Nginx(推荐1.20+) - 微信开发者工具(小程序端) ### 2. 数据库初始化 1. 使用 `database/sky.sql` 脚本初始化数据库。 2. 确认表结构与 `数据库设计文档.md` 一致。 ### 3. 配置文件说明 #### 后端配置(`sky-server/src/main/resources/application.yml` + `application-dev.yml`) - `server.port`:服务端口,默认8080 - `spring.datasource.druid`:数据库连接信息 - `spring.redis`:Redis连接信息 - `sky.jwt`:JWT密钥与token配置 - `sky.alioss`:阿里云OSS配置 - `sky.wechat`:微信支付相关配置 - `sky.baidu`:百度地图AK(如有定位需求) **示例(application-dev.yml)**: ```yaml sky: datasource: driver-class-name: com.mysql.cj.jdbc.Driver host: localhost port: 3306 database: sky_take_out username: root password: 123456 alioss: endpoint: oss-cn-beijing.aliyuncs.com access-key-id: access-key-secret: bucket-name: redis: host: localhost port: 6379 password: 123456 database: 0 wechat: appid: secret: mchid: mch-serial-no: private-key-file-path: api-v3-key: we-chat-pay-cert-file-path: notifyUrl: http:///notify/paySuccess refundNotifyUrl: http:///notify/refundSuccess ``` ### 4. 启动后端服务 ```bash cd sky-server mvn clean package # 运行jar包 java -jar target/sky-server-*.jar --spring.profiles.active=dev ``` ### 5. 部署前端 #### 微信小程序端 - 用微信开发者工具导入 `front/mp-weixin` 目录,配置好小程序appid,修改API请求地址为后端服务地址。 #### Nginx反向代理 - 将 `front/webEnvironment/nginx-1.20.2` 目录放在无中文路径下。 - 配置 `nginx.conf`,将前端静态资源和API请求分别代理到小程序和后端服务。 - 启动Nginx。 **注意**:Nginx目录不能有中文,否则无法正常运行。 --- ## 六、中间件与外部服务配置 | 中间件/服务 | 作用 | 推荐版本 | 关键配置项 | |-------------|--------------|----------|--------------------| | MySQL | 业务数据存储 | 5.7/8.0 | 账号、密码、端口 | | Redis | 缓存 | 5.0+ | 账号、密码、端口 | | 阿里云OSS | 文件存储 | - | endpoint、key等 | | 微信支付 | 支付 | - | 商户号、证书等 | | Nginx | 反向代理 | 1.20+ | 端口、代理规则 | --- ## 七、常见问题与排查 - 数据库/Redis/OSS/微信支付等配置错误会导致服务启动失败或部分功能不可用,请逐项核查配置。 - Nginx目录不能有中文,否则无法启动。 - 微信小程序需配置合法的request合法域名。 - 后端接口文档可通过 `http://<后端地址>:8080/doc.html` 访问。 --- ## 八、接口文档 - 启动后端后,访问 `http://<后端地址>:8080/doc.html` 查看所有API接口说明(Knife4j/Swagger自动生成)。 --- ## 九、总结 本项目架构清晰,功能完善,支持多角色多端协作。只需按上述步骤配置好数据库、Redis、OSS、微信支付、Nginx等中间件,即可一键部署上线。代码注释规范,接口文档齐全,便于二次开发和维护。 如需进一步了解某一模块或有特殊部署需求,请随时联系维护者或查阅源码注释。