# sky-takeout **Repository Path**: langfanlang/sky-takeout ## Basic Information - **Project Name**: sky-takeout - **Description**: 苍穹外卖学习代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-14 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sky Takeout 系统 ## 项目简介 Sky Takeout 是一个外卖点餐管理系统,分为管理端和用户端,提供分类管理、菜品管理、套餐管理、订单处理、员工管理、店铺状态管理等功能。该项目适用于餐饮企业进行线上订单管理和服务。 ## 技术栈 - **后端框架**: Spring Boot - **数据库**: MySQL - **缓存**: Redis - **文件存储**: 阿里云 OSS - **接口文档**: Swagger - **权限控制**: JWT - **构建工具**: Maven ## 功能模块 ### 管理端功能 - **员工管理**: 登录、新增员工、编辑员工信息、启用/禁用账号、分页查询。 - **分类管理**: 新增、删除、修改、启用/禁用菜品或套餐分类,支持按类型查询。 - **菜品管理**: 新增菜品(支持口味)、批量删除、详情查询、修改菜品信息、按分类查询。 - **套餐管理**: 新增套餐(关联菜品)、批量删除、详情查询、修改套餐、起售/停售。 - **订单管理**: 订单分页查询、订单状态更新(确认、取消、拒绝、完成)、订单统计。 - **店铺管理**: 设置和获取店铺营业状态。 - **通用功能**: 文件上传(图片等)。 ### 用户端功能 - **店铺状态**: 用户可查看店铺是否营业。 - **登录认证**: 用户通过微信授权码登录系统。 - **购物车管理**: 添加菜品或套餐到购物车。 - **订单提交**: 提交订单并支持支付。 - **订单状态跟踪**: 查看订单状态变化。 - **地址簿管理**: 管理收货地址。 ## 模块结构 - **sky-common**: 公共模块,包含常量、异常、工具类等。 - **sky-pojo**: 实体类、数据传输对象(DTO)、视图对象(VO)。 - **sky-server**: 核心业务模块,包含控制器、服务层、数据访问层(Mapper)、配置类、拦截器等。 ## 主要组件说明 ### 控制器(Controller) - `CategoryController`: 管理菜品和套餐分类。 - `DishController`: 管理菜品信息。 - `SetmealController`: 管理套餐信息。 - `EmployeeController`: 管理员工账号。 - `ShopController`: 控制店铺营业状态。 - `OrderController`: 处理订单相关操作。 - `CommonController`: 提供通用接口,如文件上传。 ### 服务层(Service) - `CategoryService`: 分类业务逻辑。 - `DishService`: 菜品业务逻辑。 - `SetmealService`: 套餐业务逻辑。 - `EmployeeService`: 员工业务逻辑。 - `OrderService`: 订单业务逻辑。 ### 数据访问层(Mapper) - `CategoryMapper`: 操作分类表。 - `DishMapper`: 操作菜品表。 - `SetmealMapper`: 操作套餐表。 - `EmployeeMapper`: 操作员工表。 - `OrdersMapper`: 操作订单表。 ### 工具类 - `JwtUtil`: JWT 生成与解析。 - `AliOssUtil`: 阿里云 OSS 文件上传。 - `WeChatPayUtil`: 微信支付集成。 - `HttpClientUtil`: HTTP 请求工具类。 ### 异常处理 - `GlobalExceptionHandler`: 全局异常捕获,统一返回错误信息。 - 自定义异常类如 `AccountLockedException`, `PasswordErrorException`, `UserNotLoginException` 等。 ## 安装与部署 ### 环境要求 - JDK 1.8+ - Maven 3.5+ - MySQL 5.7+ - Redis 3.0+ - 阿里云 OSS 账号(可选) - 微信支付商户账号(可选) ### 配置步骤 1. **数据库配置** 修改 `sky-server/src/main/resources/application.yml` 中的数据库连接信息。 2. **Redis 配置** 在 `application.yml` 中配置 Redis 服务器地址和端口。 3. **OSS 配置** 在 `AliOssProperties` 类中配置阿里云 OSS 的 `endpoint`, `accessKeyId`, `accessKeySecret`, `bucketName`。 4. **微信支付配置** 在 `WeChatProperties` 类中配置微信支付相关参数,如 `appid`, `mchid`, `privateKeyFilePath`, `apiV3Key` 等。 5. **JWT 配置** 在 `JwtProperties` 类中配置 JWT 的密钥和过期时间。 ### 启动项目 ```bash # 进入项目目录 cd /path/to/sky-server # 使用 Maven 构建项目 mvn clean package # 启动 Spring Boot 应用 java -jar target/sky-server.jar ``` ## 使用说明 ### 接口文档 访问 `/swagger-ui.html` 查看 API 文档(默认端口为 `8080`): ``` http://localhost:8080/swagger-ui.html ``` ### 接口调用示例 #### 员工登录 ```http POST /admin/employee/login Content-Type: application/json { "username": "admin", "password": "123456" } ``` #### 新增菜品 ```http POST /admin/dish Content-Type: application/json { "name": "宫保鸡丁", "categoryId": 1, "price": 25.00, "image": "base64_image_string", "description": "经典川菜", "status": 1, "flavors": [ { "name": "辣度", "value": "中辣" } ] } ``` ## 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 本仓库。 2. 创建新分支 (`git checkout -b feature/new-feature`) 3. 提交更改 (`git commit -am 'Add some feature'`) 4. 推送分支 (`git push origin feature/new-feature`) 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。