修改售后处理 以及主单售后纠纷查询

This commit is contained in:
cb 2025-10-23 17:33:12 +08:00
parent c733349a9e
commit bc96277f86
3 changed files with 97 additions and 3 deletions

View File

@ -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<Long> 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<Long> getDisputeOrderMasterIds() {
try {
// 创建查询条件customerFinalCheck = 0 表示售后纠纷
AfterServiceRecord queryParam = new AfterServiceRecord();
queryParam.setCustomerFinalCheck(0L);
// 查询售后纠纷记录
List<AfterServiceRecord> disputeRecords = afterServiceRecordService.selectAfterServiceRecordList(queryParam);
if (disputeRecords.isEmpty()) {
return new ArrayList<>();
}
// 获取售后记录对应的订单详情ID
List<Long> orderDetailIds = disputeRecords.stream()
.map(AfterServiceRecord::getOrderDetailId)
.distinct()
.collect(Collectors.toList());
// 通过订单详情ID获取对应的主单ID
Set<Long> 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<>();
}
}
}

View File

@ -701,7 +701,7 @@
actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="callDetail(\'' + row.orderMasterId + '\')"><i class="fa fa-info"></i>拨号详情</a> ');
actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="orderDetailReject(\'' + row.id + '\')"></i>师傅退单</a> ');
// actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="orderMasterReject(\'' + row.orderMasterId + '\')"></i>商家退单</a> ');
<!-- actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="showOrderWorker(\'' + row.id + '\')"></i>指派</a> ');-->
// actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="showOrderWorker(\'' + row.id + '\')"></i>指派</a> ');
if (row.payStatus == 0) {
actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="showPayQrcode(\'' + row.id + '\')"></i>付款</a> ');
}

View File

@ -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) {