Files
cattleTransportation/ORDER_TABLE_IMPLEMENTATION_REPORT.md

199 lines
5.9 KiB
Markdown
Raw Normal View History

2025-10-27 17:38:20 +08:00
# 订单表功能实现报告
## 概述
根据需求,重新设计并实现了一个新的订单管理系统,包含订单表的数据库设计、后端接口以及前端页面。
## 实现内容
### 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. 关联查询可能会影响性能,大量数据时建议添加缓存