diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java index 0a80869c..afbf9eb1 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java @@ -1527,6 +1527,59 @@ public class OrderDetailController extends BaseController { return AjaxResult.success(orderDetailService.afterDetailOrderCount(orderDetail)); } + @GetMapping("/after/dispute/count") + @ResponseBody + public AjaxResult countAfterDisputeList(OrderDetail orderDetail) { + try { + logger.info("查询子单售后纠纷数量"); + + // 设置查询条件:售后纠纷状态 + orderDetail.setAfterServiceStatus(1); + + // 设置部门权限 + if (this.getSysUser().getDept().getParentId() != 101) { + orderDetail.setDeptId(this.getSysUser().getDept().getParentId()); + } + + return AjaxResult.success(orderDetailService.countOrderDetailList(orderDetail)); + } catch (Exception e) { + logger.error("查询子单售后纠纷数量异常", e); + return AjaxResult.error("查询售后纠纷数量失败:" + e.getMessage()); + } + } + + @PostMapping("/after/records/byDetailId") + @ResponseBody + public AjaxResult getAfterServiceRecordsByDetailId(Long orderDetailId) { + try { + logger.info("查询子单[{}]的售后纠纷记录", orderDetailId); + + // 直接查询该子单的售后纠纷记录 + AfterServiceRecord queryRecord = new AfterServiceRecord(); + queryRecord.setOrderDetailId(orderDetailId); + queryRecord.setCustomerFinalCheck(0L); // 客户不同意 + queryRecord.setExcludeAfterServiceFinished(Boolean.TRUE); // 排除已完成的售后 + + List disputeRecords = afterServiceRecordService.selectAfterServiceRecordList(queryRecord); + + logger.info("子单[{}]找到{}条售后纠纷记录", orderDetailId, disputeRecords.size()); + + // 为每个售后记录添加子单信息 + OrderDetail detail = orderDetailService.selectById(orderDetailId); + if (detail != null) { + disputeRecords.forEach(record -> { + record.setOrderDetailCode(detail.getCode()); + }); + } + + return AjaxResult.success(disputeRecords); + + } catch (Exception e) { + logger.error("查询子单[{}]售后纠纷记录异常", orderDetailId, e); + return AjaxResult.error("查询售后纠纷记录失败:" + e.getMessage()); + } + } + @ResponseBody @Operation(summary = "获取当天订单统计数据", method = "GET") @GetMapping(path = "/statistics/now", produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/ghy-admin/src/main/resources/templates/order/master.html b/ghy-admin/src/main/resources/templates/order/master.html index ecb5994f..ff27b525 100644 --- a/ghy-admin/src/main/resources/templates/order/master.html +++ b/ghy-admin/src/main/resources/templates/order/master.html @@ -127,7 +127,7 @@ 售后纠纷 - (0) + (0)
@@ -553,6 +553,20 @@ } } }) + + // 售后纠纷数量统计 + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/after/dispute/count', + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#afterServiceDisputeNum').text(result.data); + } else { + $.modal.msgError("售后纠纷数量加载错误,请重试!") + } + } + }) }); function changeOrderMode(orderMode) { 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 909b9176..5ae31f82 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 @@ -534,7 +534,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus()); log.info("当前订单是否已支付: {}", payReverse); // 申请退款金额 - BigDecimal refundMoney; + BigDecimal refundMoney=BigDecimal.ZERO; if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) { refundMoney = afterServiceRecord.getAgreedRefund(); } else { @@ -547,6 +547,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService if (isMaster) { // 如果这是大师傅的子单 退款金额最大可以等于主单服务金额 // 判断退款金额 >= 主单服务金额 + if (refundMoney==null){ + refundMoney=BigDecimal.ZERO; + } boolean refundAll = refundMoney.compareTo(financialMaster.getServerMoney()) > -1; log.info("refundAll: {}", refundAll); List orderDetails = orderDetailService.selectByOrderMasterId(orderMaster.getId()); @@ -876,11 +879,14 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService */ private void updateAfterServiceStatus(Long orderDetailId, Integer afterServiceStatus) { try { + log.info("开始更新售后状态,子单ID:{},售后状态:{}", orderDetailId, afterServiceStatus); + // 更新子单售后状态 OrderDetail orderDetail = new OrderDetail(); orderDetail.setId(orderDetailId); orderDetail.setAfterServiceStatus(afterServiceStatus); - orderDetailService.updateOrderDetail(orderDetail); + int updateResult = orderDetailService.updateOrderDetail(orderDetail); + log.info("子单售后状态更新结果:{}", updateResult); // 获取主单ID并更新主单售后状态 OrderDetail detail = orderDetailService.selectById(orderDetailId); @@ -888,10 +894,13 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService OrderMaster orderMaster = new OrderMaster(); orderMaster.setId(detail.getOrderMasterId()); orderMaster.setAfterServiceStatus(afterServiceStatus); - orderMasterService.updateOrderMaster(orderMaster); + int masterUpdateResult = orderMasterService.updateOrderMaster(orderMaster); + log.info("主单售后状态更新结果:{}", masterUpdateResult); log.info("更新售后状态成功,子单ID:{},主单ID:{},售后状态:{}", orderDetailId, detail.getOrderMasterId(), afterServiceStatus); + } else { + log.warn("未找到子单或主单ID为空,子单ID:{}", orderDetailId); } } catch (Exception e) { log.error("更新售后状态失败,子单ID:{},售后状态:{}", orderDetailId, afterServiceStatus, e); diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index 4a74f64a..dbcc6b8c 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -80,7 +80,8 @@ return_reason, return_reason_detail, return_images, - worker_remark + worker_remark, + after_service_status FROM order_detail @@ -120,7 +121,8 @@ od.return_reason, od.return_reason_detail, od.return_images, - od.worker_remark + od.worker_remark, + od.after_service_status FROM order_detail od LEFT JOIN order_master om ON om.id = od.order_master_id LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id @@ -323,6 +325,9 @@ AND od.id in ( ${orderDetailIds} ) + + AND od.after_service_status = #{afterServiceStatus} + order by od.create_time @@ -394,6 +399,7 @@ return_reason_detail = #{returnReasonDetail}, return_images = #{returnImages}, worker_remark = #{workerRemark}, + after_service_status = #{afterServiceStatus}, update_time = SYSDATE() WHERE id = #{id} diff --git a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml index 751705e6..8f3a3452 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml @@ -517,6 +517,7 @@ return_reason_detail = #{returnReasonDetail}, return_images = #{returnImages}, worker_remark = #{workerRemark}, + after_service_status = #{afterServiceStatus}, update_time = SYSDATE() WHERE id = #{id}