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