5.9 KiB
5.9 KiB
订单表功能实现报告
概述
根据需求,重新设计并实现了一个新的订单管理系统,包含订单表的数据库设计、后端接口以及前端页面。
实现内容
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. 数据校验
- 后端参数校验
- 前端表单验证
- 结算方式枚举值校验
使用方法
后端部署
- 执行SQL脚本创建订单表
-- 执行 tradeCattle/create_order_table.sql
- 重启后端服务
前端使用
// 在需要使用的组件中引入
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
后续优化建议
- 添加订单状态字段
- 添加更多业务字段(如金额、数量等)
- 实现订单导出功能
- 添加订单统计功能
- 实现订单审核流程
文件清单
后端文件
create_order_table.sql- 数据库表结构Order.java- 实体类OrderMapper.java- Mapper接口IOrderService.java- Service接口OrderServiceImpl.java- Service实现OrderController.java- Controller
前端文件
shipping.js- API接口(新增部分)orderDialog.vue- 订单弹窗组件
注意事项
- order是MySQL的保留关键字,创建表时需要用反引号包裹:
`order` - 买方ID和卖方ID存储为逗号分隔的字符串,使用时需要拆分
- 逻辑删除功能需要确保相关查询都使用正确的字段过滤
- 关联查询可能会影响性能,大量数据时建议添加缓存