From ad6473f446cf0c8c6fbc868a4ad93e4f43f120c9 Mon Sep 17 00:00:00 2001 From: cb <275647614@qq.com> Date: Tue, 8 Jul 2025 10:36:12 +0800 Subject: [PATCH] no message --- .../order/OrderMasterController.java | 93 +++++++++++++++++++ .../com/ghy/order/domain/OrderMaster.java | 6 ++ .../mapper/order/OrderMasterMapper.xml | 10 +- 3 files changed, 107 insertions(+), 2 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index 297ad15c..9f9ae7f8 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -239,6 +239,99 @@ public class OrderMasterController extends BaseController { } } + /** + * 订单转单功能 + * + * @param orderMaster 订单对象,包含id、workerId(新师傅)、originalWorkerId等字段 + * @return 操作结果 + */ + @PostMapping("/transferOrder") + @ResponseBody + @Log(title = "订单转单管理", businessType = BusinessType.UPDATE) + @Transactional(rollbackFor = Exception.class) + public AjaxResult transferOrder(@RequestBody OrderMaster orderMaster) + { + try { + // 参数校验 + if (orderMaster.getId() == null) { + return AjaxResult.error("订单ID不能为空"); + } + if (orderMaster.getWorkerId() == null) { + return AjaxResult.error("新师傅ID不能为空"); + } + + // 查询原订单信息 + OrderMaster originalOrder = orderMasterService.selectById(orderMaster.getId()); + if (originalOrder == null) { + return AjaxResult.error("订单不存在"); + } + + // 检查订单状态是否允许转单 + if (originalOrder.getOrderStatus() == null || originalOrder.getOrderStatus() > OrderStatus.SERVING.code()) { + return AjaxResult.error("订单状态不允许转单,只有待接单、已接单、待上门、进行中状态的订单可以转单"); + } + + // 检查新师傅是否存在 + Worker newWorker = workerService.selectById(orderMaster.getWorkerId()); + if (newWorker == null) { + return AjaxResult.error("新师傅不存在"); + } + + // 如果原师傅和新师傅相同,则不允许转单 + if (originalOrder.getWorkerId() != null && originalOrder.getWorkerId().equals(orderMaster.getWorkerId())) { + return AjaxResult.error("新师傅不能与原师傅相同"); + } + + // 执行转单操作 + OrderMaster updateOrder = new OrderMaster(); + updateOrder.setId(orderMaster.getId()); + + // 保存原师傅ID到originalWorkerId字段 + if (originalOrder.getWorkerId() != null) { + updateOrder.setOriginalWorkerId(originalOrder.getWorkerId()); + } + + // 设置新师傅ID + updateOrder.setWorkerId(orderMaster.getWorkerId()); + updateOrder.setUpdateBy(getLoginName()); + + // 如果有转单备注,添加到原有备注中 + String newRemark = originalOrder.getRemark() != null ? originalOrder.getRemark() : ""; + if (StringUtils.isNotEmpty(orderMaster.getRemark())) { + newRemark += "【转单记录:" + getLoginName() + + "于" + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", new Date()) + + "转单给师傅ID:" + orderMaster.getWorkerId() + + ",备注:" + orderMaster.getRemark() + "】"; + } else { + newRemark += "【转单记录:" + getLoginName() + + "于" + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", new Date()) + + "转单给师傅ID:" + orderMaster.getWorkerId() + "】"; + } + updateOrder.setRemark(newRemark); + + int result = orderMasterService.updateOrderMaster(updateOrder); + + if (result > 0) { + // 记录转单日志 + logger.info("订单转单成功:订单ID={}, 原师傅ID={}, 新师傅ID={}, 操作人={}", + orderMaster.getId(), + originalOrder.getWorkerId(), + orderMaster.getWorkerId(), + getLoginName()); + + String message = String.format("转单成功!订单已从师傅[%s]转给师傅[%s]", + originalOrder.getWorkerId() != null ? originalOrder.getWorkerId() : "无", + newWorker.getName()); + return AjaxResult.success(message); + } else { + return AjaxResult.error("转单失败,请重试"); + } + } catch (Exception e) { + logger.error("订单转单失败:{}", e.getMessage(), e); + return AjaxResult.error("转单失败:" + e.getMessage()); + } + } + /** * 修改详细订单 */ diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java index 2998185d..bf859a3f 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java @@ -274,4 +274,10 @@ public class OrderMaster extends BaseEntity { */ @Excel(name = "是否需要开票", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=不需要,1=需要") private Integer isNeedBill; + + /** + * 原师傅id(转单前的师傅) + */ + @Excel(name = "原师傅id", cellType = Excel.ColumnType.NUMERIC) + private Long originalWorkerId; } diff --git a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml index 102be70d..7dc3b55d 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml @@ -60,6 +60,7 @@ + @@ -117,7 +118,8 @@ order_images, is_delivery_to_store, is_invoiced, - is_need_bill + is_need_bill, + original_worker_id FROM order_master @@ -175,7 +177,8 @@ om.order_images, om.is_delivery_to_store, om.is_invoiced, - om.is_need_bill + om.is_need_bill, + om.original_worker_id FROM order_master om LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id LEFT JOIN goods g ON g.goods_id = om.goods_id @@ -476,6 +479,7 @@ is_delivery_to_store = #{isDeliveryToStore}, is_invoiced = #{isInvoiced}, is_need_bill = #{isNeedBill}, + original_worker_id = #{originalWorkerId}, update_time = SYSDATE() WHERE id = #{id} @@ -539,6 +543,7 @@ is_delivery_to_store, is_invoiced, is_need_bill, + original_worker_id, create_time )VALUES( #{deptId}, @@ -583,6 +588,7 @@ #{isDeliveryToStore}, #{isInvoiced}, #{isNeedBill}, + #{originalWorkerId}, SYSDATE() )