From bc96277f86b0f1deec96566c4adf2e51dd28a17a Mon Sep 17 00:00:00 2001 From: cb <275647614@qq.com> Date: Thu, 23 Oct 2025 17:33:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=94=AE=E5=90=8E=E5=A4=84?= =?UTF-8?q?=E7=90=86=20=E4=BB=A5=E5=8F=8A=E4=B8=BB=E5=8D=95=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E7=BA=A0=E7=BA=B7=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/OrderMasterController.java | 53 ++++++++++++++++++- .../resources/templates/order/master.html | 2 +- .../impl/AfterServiceRecordServiceImpl.java | 45 ++++++++++++++++ 3 files changed, 97 insertions(+), 3 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 24292a75..aef40f99 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 @@ -2088,8 +2088,15 @@ public class OrderMasterController extends BaseController { public TableDataInfo list(OrderMaster orderMaster) { // 检查是否是售后纠纷查询 if (orderMaster.getOrderStatusName() != null && "售后纠纷".equals(orderMaster.getOrderStatusName())) { - // 直接使用afterServiceStatus字段查询售后纠纷订单 - orderMaster.setAfterServiceStatus(1); + // 通过查询AfterServiceRecord表中customerFinalCheck=0的记录获取售后纠纷的主单ID + List disputeOrderMasterIds = getDisputeOrderMasterIds(); + if (disputeOrderMasterIds.isEmpty()) { + // 如果没有售后纠纷记录,返回空结果 + return getDataTable(new ArrayList<>()); + } + // 将售后纠纷的主单ID设置到查询条件中 + String ids = disputeOrderMasterIds.stream().map(String::valueOf).collect(Collectors.joining(",")); + orderMaster.setOrderMasterIds(ids); orderMaster.setOrderStatus(null); // 清除orderStatus条件,避免冲突 } else if (orderMaster.getSearchAfterList() != null && orderMaster.getSearchAfterList()) { // 保持原有的售后查询逻辑 @@ -2963,4 +2970,46 @@ public class OrderMasterController extends BaseController { return shop; } + + /** + * 获取售后纠纷的主单ID列表 + * 通过查询AfterServiceRecord表中customerFinalCheck=0的记录 + * + * @return 售后纠纷的主单ID列表 + */ + private List getDisputeOrderMasterIds() { + try { + // 创建查询条件:customerFinalCheck = 0 表示售后纠纷 + AfterServiceRecord queryParam = new AfterServiceRecord(); + queryParam.setCustomerFinalCheck(0L); + + // 查询售后纠纷记录 + List disputeRecords = afterServiceRecordService.selectAfterServiceRecordList(queryParam); + + if (disputeRecords.isEmpty()) { + return new ArrayList<>(); + } + + // 获取售后记录对应的订单详情ID + List orderDetailIds = disputeRecords.stream() + .map(AfterServiceRecord::getOrderDetailId) + .distinct() + .collect(Collectors.toList()); + + // 通过订单详情ID获取对应的主单ID + Set orderMasterIds = new HashSet<>(); + for (Long orderDetailId : orderDetailIds) { + OrderDetail orderDetail = orderDetailService.selectById(orderDetailId); + if (orderDetail != null && orderDetail.getOrderMasterId() != null) { + orderMasterIds.add(orderDetail.getOrderMasterId()); + } + } + + return new ArrayList<>(orderMasterIds); + + } catch (Exception e) { + logger.error("获取售后纠纷主单ID列表失败", e); + return new ArrayList<>(); + } + } } diff --git a/ghy-admin/src/main/resources/templates/order/master.html b/ghy-admin/src/main/resources/templates/order/master.html index ff27b525..92afafa7 100644 --- a/ghy-admin/src/main/resources/templates/order/master.html +++ b/ghy-admin/src/main/resources/templates/order/master.html @@ -701,7 +701,7 @@ actions.push('拨号详情 '); actions.push('师傅退单 '); // actions.push('商家退单 '); - + // actions.push('指派 '); if (row.payStatus == 0) { actions.push('付款 '); } diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index 8197074d..aaa7a4e8 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -416,6 +416,8 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService (afterServiceRecord.getWorkerFeedbackResult().equals(0L) || afterServiceRecord.getWorkerFeedbackResult().equals(1L)))) { afterServiceRecord.setRedoCompleteTime(null); } + + }else{ afterServiceRecord.setCustomerFinalCheck(0L); @@ -432,6 +434,16 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService if (param.getCustomerDisagreeReason() != null) { afterServiceRecord.setCustomerDisagreeReason(param.getCustomerDisagreeReason()); } + try { + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + if (orderMaster != null) { + orderMaster.setAfterServiceStatus(1); + orderMasterService.updateOrderMaster(orderMaster); + log.info("客户不同意处理方案,已将主单[{}]标记为售后纠纷状态", orderMaster.getId()); + } + } catch (Exception e) { + log.error("更新主单售后纠纷状态失败,主单ID:{}", orderDetail.getOrderMasterId(), e); + } } afterServiceRecord.setRefundApplyTime(new Date()); @@ -456,6 +468,17 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService } catch (Exception e) { log.error(e.getMessage(), e); } + if (afterServiceRecord.getCustomerFinalCheck().equals(0L)) { + return AjaxResult.success("客户不同意师傅方案,进入售后纠纷处理。"); + } + // 新增:如果师傅拒绝(workerFeedbackResult=2)且客户同意,则不执行退款流程 + if (afterServiceRecord.getWorkerFeedbackResult() != null && afterServiceRecord.getWorkerFeedbackResult().equals(0L) && one.equals(param.getCustomerFinalCheck())) { + log.info("师傅拒绝且客户同意,不执行退款流程,售后记录ID:{}", afterServiceRecord.getId()); + afterServiceRecord.setRefundApplyTime(new Date()); + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); + return AjaxResult.success("客户同意师傅拒绝方案,售后流程结束,不执行退款"); + } + // DrawCashTime不为空说明已经发起过分账 if (drawCash) { log.warn("子单[{}]已发起分账,不能退款", afterServiceRecord.getOrderDetailId()); @@ -675,6 +698,18 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService afterServiceRecord.setRefund(param.getRefund()); } + // 客户不同意时,将对应主单的afterServiceStatus字段设置为1(售后纠纷状态) + try { + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + if (orderMaster != null) { + orderMaster.setAfterServiceStatus(1); + orderMasterService.updateOrderMaster(orderMaster); + log.info("客户不同意处理方案,已将主单[{}]标记为售后纠纷状态", orderMaster.getId()); + } + } catch (Exception e) { + log.error("更新主单售后纠纷状态失败,主单ID:{}", orderDetail.getOrderMasterId(), e); + } + log.info("商品售后-客户不同意处理方案"); } @@ -700,6 +735,16 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService } catch (Exception e) { log.error("商品售后通知发送失败", e); } + if (afterServiceRecord.getCustomerFinalCheck().equals(0L)) { + return AjaxResult.success("客户不同意师傅方案,进入售后纠纷处理。"); + } + // 新增:如果师傅拒绝(workerFeedbackResult=2)且客户同意,则不执行退款流程 + if (afterServiceRecord.getWorkerFeedbackResult() != null && afterServiceRecord.getWorkerFeedbackResult().equals(0L) && one.equals(param.getCustomerFinalCheck())) { + log.info("商品售后-师傅拒绝且客户同意,不执行退款流程,售后记录ID:{}", afterServiceRecord.getId()); + afterServiceRecord.setRefundApplyTime(new Date()); + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); + return AjaxResult.success("客户同意师傅拒绝方案,售后流程结束,不执行退款"); + } // DrawCashTime不为空说明已经发起过分账 if (drawCash) {