diff --git a/README.md b/README.md index 56139cc..975d945 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,29 @@ -# 菜品管理系统后端 +# 智慧餐厅管理系统后端 -这是一个基于Spring Boot + MyBatis-Plus的菜品管理系统后端API。 +这是一个基于Spring Boot + MyBatis-Plus构建的智慧餐厅管理系统后端API,为餐厅提供了包括用户端、分店端和管理后台在内的全方位解决方案。项目采用前后端分离的设计思想,后端负责提供统一的RESTful API接口。 + +## 主要功能 + +* **用户端:** 浏览分店、在线点餐、扫码支付、发表评价。 +* **分店端:** 菜品管理、订单处理、数据统计、评论管理。 +* **管理后台:** 账户管理、分店信息管理、全局菜品信息管理。 ## 技术栈 -- **Spring Boot 3.4.6** - Web框架 -- **MyBatis-Plus 3.5.3.1** - 数据持久层框架 -- **MySQL** - 数据库 -- **Lombok** - 简化Java代码 -- **Maven** - 项目管理工具 +| 技术 | 说明 | 版本 | +| :--- | :--- | :--- | +| **Spring Boot** | 核心框架 | `3.5.0` | +| **Spring Security** | 认证和授权框架 | `6.3.1` (随Spring Boot) | +| **MyBatis-Plus** | 数据持久层框架 | `3.5.12` | +| **MySQL** | 关系型数据库 | `8.0+` | +| **Druid** | 数据库连接池 | `1.2.18` | +| **JWT (jjwt)** | Token认证 | `0.12.6` | +| **Lombok** | 简化Java代码 | `1.18.36`| +| **Alipay SDK** | 支付宝支付集成 | `4.39.40.ALL`| +| **Apache POI** | Excel文件操作 | `5.2.3` | +| **FastJSON** | JSON处理库 | `2.0.31` | +| **Amap Web API**| 高德地图Web服务 | `v3` | +| **Maven** | 项目构建和管理 | `3.6+` | ## 项目结构 @@ -17,24 +32,20 @@ src/ ├── main/ │ ├── java/com/example/javatest/ │ │ ├── JavaTestApplication.java # 主启动类 -│ │ ├── config/ -│ │ │ └── MybatisPlusConfig.java # MyBatis-Plus配置 -│ │ ├── controller/ -│ │ │ └── DishController.java # 菜品控制器 -│ │ ├── entity/ -│ │ │ └── Dish.java # 菜品实体类 -│ │ ├── mapper/ -│ │ │ └── DishMapper.java # 菜品Mapper接口 -│ │ └── service/ -│ │ ├── DishService.java # 菜品服务接口 -│ │ └── impl/ -│ │ └── DishServiceImpl.java # 菜品服务实现 +│ │ ├── config/ # 系统配置 (Security, Mybatis, CORS等) +│ │ ├── Controller/ +│ │ │ ├── admin/ # 管理后台接口 +│ │ │ ├── branch/ # 分店端接口 +│ │ │ ├── login/ # 登录注册接口 +│ │ │ └── user/ # 用户端接口 +│ │ ├── Entity/ # 实体类 +│ │ ├── Mapper/ # MyBatis Mapper接口 +│ │ ├── Service/ # 业务逻辑服务 +│ │ └── util/ # 工具类 (如JwtUtil) │ └── resources/ -│ ├── application.properties # 应用配置 -│ ├── mapper/ -│ │ └── DishMapper.xml # MyBatis映射文件 -│ └── sql/ -│ └── dishes.sql # 数据库建表脚本 +│ ├── application.yml # 应用主配置文件 +│ └── mapper/ # MyBatis XML映射文件 +└── test/ # 测试代码 ``` ## 快速开始 @@ -47,14 +58,16 @@ src/ ### 2. 数据库配置 -1. 创建MySQL数据库 -2. 执行 `src/main/resources/sql/dishes.sql` 脚本创建表和测试数据 -3. 修改 `application.properties` 中的数据库连接信息: +1. 在你的MySQL中创建一个名为 `cg` 的数据库 (或你偏好的其他名称)。 +2. 执行项目根目录下的 `cg.sql` 脚本,创建所需的表结构和初始化数据。 +3. 修改 `src/main/resources/application.yml` 中的数据库连接信息,确保与你的本地环境一致: -```properties -spring.datasource.url=jdbc:mysql://localhost:3306/restaurant_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai -spring.datasource.username=your_username -spring.datasource.password=your_password +```yaml +spring: + datasource: + url: jdbc:mysql://localhost:3306/cg # 替换为你的数据库URL + username: root # 替换为你的数据库用户名 + password: 123456 # 替换为你的数据库密码 ``` ### 3. 运行项目 @@ -64,100 +77,27 @@ spring.datasource.password=your_password git clone # 进入项目目录 -cd java-test +cd java-beta -# 安装依赖并运行 -mvn spring-boot:run +# 使用Maven安装依赖并运行 (推荐) +./mvnw spring-boot:run ``` -项目启动后访问:http://localhost:8080 +项目成功启动后,默认服务端口为 `8080`。 -## API接口 +## API接口文档 -### 菜品管理接口 +详细的API接口说明请参考项目中的文档: -| 方法 | 路径 | 描述 | -|------|------|------| -| GET | `/api/dishes` | 分页查询菜品列表 | -| GET | `/api/dishes/{id}` | 根据ID查询菜品详情 | -| POST | `/api/dishes` | 添加菜品 | -| PUT | `/api/dishes/{id}` | 更新菜品 | -| DELETE | `/api/dishes/{id}` | 删除菜品 | -| PATCH | `/api/dishes/{id}/status` | 更新菜品状态 | - -### 分页查询参数 - -- `page`: 当前页,默认1 -- `size`: 每页大小,默认10 -- `dishName`: 菜品名称(模糊查询) -- `category`: 分类筛选 -- `status`: 状态筛选 - -### 示例请求 - -```bash -# 查询菜品列表 -curl "http://localhost:8080/api/dishes?page=1&size=10" - -# 根据名称搜索 -curl "http://localhost:8080/api/dishes?dishName=宫保鸡丁" - -# 根据分类筛选 -curl "http://localhost:8080/api/dishes?category=主食" - -# 更新菜品状态 -curl -X PATCH "http://localhost:8080/api/dishes/1/status" \ - -H "Content-Type: application/json" \ - -d '{"status": "停售"}' -``` - -## 数据模型 - -### Dish (菜品) - -| 字段 | 类型 | 说明 | -|------|------|------| -| dishId | Long | 菜品ID (主键) | -| dishName | String | 菜品名称 | -| category | String | 分类 | -| price | BigDecimal | 价格 | -| stock | Integer | 库存 | -| status | String | 状态 (在售/停售) | -| description | String | 描述 | -| imageUrl | String | 图片URL | -| sales | Integer | 销量 | -| tag | String | 标签 | -| isDeleted | Integer | 逻辑删除标记 | -| deletedAt | LocalDateTime | 删除时间 | -| createdAt | LocalDateTime | 创建时间 | -| updatedAt | LocalDateTime | 更新时间 | +- [**分店端API文档**](./Branch_API_DOC.md) ## 功能特性 -- ✅ CRUD操作 -- ✅ 分页查询 -- ✅ 条件筛选(名称、分类、状态) -- ✅ 逻辑删除 -- ✅ 自动时间戳填充 -- ✅ 跨域支持 -- ✅ 统一响应格式 - -## 前端集成 - -此后端API与Vue3前端菜品管理页面完全兼容,支持: - -- 菜品列表展示 -- 分页显示 -- 搜索筛选 -- 菜品详情查看 -- 菜品编辑 -- 状态切换 -- 菜品删除 - -## 开发说明 - -- 使用MyBatis-Plus简化数据操作 -- 支持逻辑删除,数据安全 -- 自动填充创建时间和更新时间 -- ResponseEntity统一响应格式 -- 完整的异常处理机制 \ No newline at end of file +- ✅ **多角色支持:** 内置用户、分店、管理员三种角色,权限分明。 +- ✅ **认证授权:** 基于Spring Security和JWT,保障接口安全。 +- ✅ **CRUD操作:** 提供完整的增删改查接口。 +- ✅ **分页与筛选:** 支持对列表数据进行分页和多条件查询。 +- ✅ **在线支付:** 集成支付宝SDK,支持在线下单支付。 +- ✅ **数据统计:** 为分店提供营业数据统计与分析功能。 +- ✅ **逻辑删除:** 关键数据使用逻辑删除,保证数据安全。 +- ✅ **统一响应与异常处理:** 全局统一的响应格式和异常处理机制。 \ No newline at end of file