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

5.9 KiB
Raw Blame History

订单表功能实现报告

概述

根据需求,重新设计并实现了一个新的订单管理系统,包含订单表的数据库设计、后端接口以及前端页面。

实现内容

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脚本创建订单表
-- 执行 tradeCattle/create_order_table.sql
  1. 重启后端服务

前端使用

// 在需要使用的组件中引入
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. 关联查询可能会影响性能,大量数据时建议添加缓存