199 lines
5.9 KiB
Markdown
199 lines
5.9 KiB
Markdown
# 订单表功能实现报告
|
||
|
||
## 概述
|
||
根据需求,重新设计并实现了一个新的订单管理系统,包含订单表的数据库设计、后端接口以及前端页面。
|
||
|
||
## 实现内容
|
||
|
||
### 1. 数据库设计
|
||
|
||
**表结构:** `order`
|
||
|
||
| 字段名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| id | int(11) | 主键ID,自增 |
|
||
| buyer_id | varchar(500) | 买方ID(多个买家用逗号分隔) |
|
||
| seller_id | varchar(500) | 卖方ID(多个卖家用逗号分隔) |
|
||
| settlement_type | int(11) | 结算方式:1-上车重量,2-下车重量,3-按肉价结算 |
|
||
| is_delete | tinyint(1) | 逻辑删除标记(0-正常,1-已删除) |
|
||
| create_time | datetime | 创建时间 |
|
||
| created_by | int(11) | 创建人ID |
|
||
| update_time | datetime | 更新时间 |
|
||
| updated_by | int(11) | 更新人ID |
|
||
|
||
**SQL文件位置:** `tradeCattle/create_order_table.sql`
|
||
|
||
### 2. 后端实现
|
||
|
||
#### 2.1 实体类(Entity)
|
||
- **文件:** `Order.java`
|
||
- **位置:** `aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/entity/Order.java`
|
||
- **特性:**
|
||
- 使用MyBatis-Plus注解
|
||
- 包含@TableLogic注解实现逻辑删除
|
||
- 包含显示字段:buyerName、sellerName、createdByName、settlementTypeDesc
|
||
|
||
#### 2.2 Mapper接口
|
||
- **文件:** `OrderMapper.java`
|
||
- **位置:** `aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/mapper/OrderMapper.java`
|
||
- **说明:** 继承BaseMapper,提供基础的CRUD操作
|
||
|
||
#### 2.3 Service层
|
||
- **接口:** `IOrderService.java`
|
||
- **实现类:** `OrderServiceImpl.java`
|
||
- **位置:** `aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/service/`
|
||
- **方法:**
|
||
- `pageQuery` - 分页查询订单列表
|
||
- `addOrder` - 新增订单
|
||
- `updateOrder` - 更新订单
|
||
- `deleteOrder` - 逻辑删除订单
|
||
- `getOrderDetail` - 查询订单详情
|
||
- `fillOrderInfo` - 填充订单关联信息(买方名称、卖方名称等)
|
||
|
||
**日志记录:** 所有操作都通过Logger记录详细日志
|
||
|
||
#### 2.4 Controller层
|
||
- **文件:** `OrderController.java`
|
||
- **位置:** `aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/controller/OrderController.java`
|
||
- **接口列表:**
|
||
- `POST /order/list` - 查询订单列表(分页)
|
||
- `POST /order/add` - 新增订单
|
||
- `POST /order/edit` - 更新订单
|
||
- `GET /order/delete` - 删除订单(逻辑删除)
|
||
- `GET /order/detail` - 查询订单详情
|
||
|
||
**权限控制:** 使用SaCheckPermission注解进行权限验证
|
||
- `order:list` - 列表查询权限
|
||
- `order:add` - 新增权限
|
||
- `order:edit` - 编辑权限
|
||
- `order:delete` - 删除权限
|
||
- `order:view` - 查看权限
|
||
|
||
### 3. 前端实现
|
||
|
||
#### 3.1 API接口
|
||
**文件:** `pc-cattle-transportation/src/api/shipping.js`
|
||
|
||
新增接口方法:
|
||
- `orderPageQuery(data)` - 订单列表查询
|
||
- `orderAddNew(data)` - 新增订单
|
||
- `orderUpdate(data)` - 更新订单
|
||
- `orderDelete(id)` - 删除订单
|
||
- `orderGetDetail(id)` - 查询订单详情
|
||
|
||
#### 3.2 前端页面
|
||
**文件:** `pc-cattle-transportation/src/views/shipping/orderDialog.vue`
|
||
|
||
**功能特性:**
|
||
- 简化的表单设计,只包含必要字段
|
||
- 支持多选买方和卖方(使用multiple属性)
|
||
- 下拉选择结算方式
|
||
- 远程搜索支持
|
||
- 分页功能
|
||
- 支持新增和编辑两种模式
|
||
|
||
**表单字段:**
|
||
- 卖方(sellerId):多选下拉框,支持搜索和分页
|
||
- 买方(buyerId):多选下拉框,支持搜索和分页
|
||
- 结算方式(settlementType):单选下拉框,3个选项
|
||
|
||
## 核心特性
|
||
|
||
### 1. 逻辑删除
|
||
- 使用MyBatis-Plus的@TableLogic注解
|
||
- 删除操作不会真正删除数据,只是将is_delete字段设置为1
|
||
- 查询时会自动过滤已删除的记录
|
||
|
||
### 2. 操作日志
|
||
所有操作都记录详细日志:
|
||
- 操作类型(新增/修改/删除/查询)
|
||
- 操作参数
|
||
- 操作结果
|
||
- 异常信息
|
||
|
||
### 3. 关联查询
|
||
自动填充关联信息:
|
||
- 买方名称:从member_user表查询username
|
||
- 卖方名称:从member_user表查询username
|
||
- 创建人姓名:从sys_user表查询user_name
|
||
- 结算方式描述:自动转换(1→上车重量,2→下车重量,3→按肉价结算)
|
||
|
||
### 4. 数据校验
|
||
- 后端参数校验
|
||
- 前端表单验证
|
||
- 结算方式枚举值校验
|
||
|
||
## 使用方法
|
||
|
||
### 后端部署
|
||
1. 执行SQL脚本创建订单表
|
||
```sql
|
||
-- 执行 tradeCattle/create_order_table.sql
|
||
```
|
||
|
||
2. 重启后端服务
|
||
|
||
### 前端使用
|
||
```javascript
|
||
// 在需要使用的组件中引入
|
||
import orderDialog from '@/views/shipping/orderDialog.vue'
|
||
|
||
// 调用方法
|
||
const dialogRef = ref(null)
|
||
dialogRef.value.onShowDialog() // 新增模式
|
||
dialogRef.value.onShowDialog(orderData) // 编辑模式
|
||
```
|
||
|
||
## 权限配置
|
||
|
||
需要在菜单权限系统中配置以下权限:
|
||
- `order:list` - 订单列表
|
||
- `order:add` - 新增订单
|
||
- `order:edit` - 编辑订单
|
||
- `order:delete` - 删除订单
|
||
- `order:view` - 查看订单详情
|
||
|
||
## 技术栈
|
||
|
||
### 后端
|
||
- Java 8+
|
||
- Spring Boot
|
||
- MyBatis-Plus
|
||
- Sa-Token(权限管理)
|
||
- SLF4J(日志)
|
||
|
||
### 前端
|
||
- Vue 3
|
||
- Element Plus
|
||
- Axios
|
||
|
||
## 后续优化建议
|
||
|
||
1. 添加订单状态字段
|
||
2. 添加更多业务字段(如金额、数量等)
|
||
3. 实现订单导出功能
|
||
4. 添加订单统计功能
|
||
5. 实现订单审核流程
|
||
|
||
## 文件清单
|
||
|
||
### 后端文件
|
||
- `create_order_table.sql` - 数据库表结构
|
||
- `Order.java` - 实体类
|
||
- `OrderMapper.java` - Mapper接口
|
||
- `IOrderService.java` - Service接口
|
||
- `OrderServiceImpl.java` - Service实现
|
||
- `OrderController.java` - Controller
|
||
|
||
### 前端文件
|
||
- `shipping.js` - API接口(新增部分)
|
||
- `orderDialog.vue` - 订单弹窗组件
|
||
|
||
## 注意事项
|
||
|
||
1. order是MySQL的保留关键字,创建表时需要用反引号包裹:`` `order` ``
|
||
2. 买方ID和卖方ID存储为逗号分隔的字符串,使用时需要拆分
|
||
3. 逻辑删除功能需要确保相关查询都使用正确的字段过滤
|
||
4. 关联查询可能会影响性能,大量数据时建议添加缓存
|
||
|