Files
cattleTransportation/ORDER_TABLE_IMPLEMENTATION_REPORT.md
2025-10-27 17:38:20 +08:00

199 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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