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 17e37f75..4f333af4 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 @@ -770,6 +770,11 @@ public class OrderDetailController extends BaseController { @Transactional(rollbackFor = Exception.class) public AjaxResult applyFinishOrder(@RequestBody OrderProcessRequest request) { logger.info("师傅发起完单,orderDetailId={}", request.getOrderDetailId()); + // 判断是否有未完成的售后记录,如果有则不允许完单 + AfterServiceRecord unfinishedByOrderDetailId = afterServiceRecordService.getUnfinishedByOrderDetailId(request.getOrderDetailId()); + if(unfinishedByOrderDetailId != null){ + return AjaxResult.error("存在未处理完的售后,不允许申请完单!"); + } // 判断工单状态是否为服务中以及是否已支付 OrderDetail orderDetail = orderDetailService.selectById(request.getOrderDetailId()); OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); diff --git a/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java b/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java index 24132cbf..8aa93a55 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java @@ -44,6 +44,8 @@ public interface IAfterServiceRecordService { */ AjaxResult updateAfterServiceRecord(AfterServiceRecord afterServiceRecord) throws Exception; + public AfterServiceRecord getUnfinishedByOrderDetailId(Long orderDetailId); + /** * 批量删除售后记录 * 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 2d7d0836..d6edd010 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.ghy.common.adapay.model.AdapayStatusEnum; import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.core.text.Convert; +import com.ghy.common.enums.OrderStatus; import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.RefundType; import com.ghy.common.exception.base.BaseException; @@ -119,6 +120,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService return afterServiceRecordMapper.unfinished(orderDetailId); } + public AfterServiceRecord getUnfinishedByOrderDetailId(Long orderDetailId) { + return afterServiceRecordMapper.unfinished(orderDetailId); + } + /** * 修改售后记录 * @@ -129,6 +134,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService @Transactional(rollbackFor = Exception.class) public AjaxResult updateAfterServiceRecord(AfterServiceRecord param) throws BaseAdaPayException { Long one = 1L; + Long two = 2L; AfterServiceRecord afterServiceRecord = this.selectAfterServiceRecordById(param.getId()); Assert.notNull(afterServiceRecord, "售后记录不存在!"); OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId()); @@ -152,6 +158,19 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService afterServiceRecordMapper.updateAfterServiceRecord(param); return drawCash ? AjaxResult.error("本单银联已确认货款结算完毕(订单支付完成),款项已到达或即将到达您所绑定帐户,需同意退款的同意后您线下与客户另行操作,系统无法提供原路返回退款!") : AjaxResult.success(); } else { + if(two.equals(param.getCustomerFinalCheck())){ + // 客户不同意师傅的意见,如果订单是确认中,则需要将订单改为服务中 + if(orderDetail.getOrderStatus() == OrderStatus.FINISH_CHECK.code() && orderDetail.getDrawCashTime()!= null ){ + orderDetail.setOrderStatus(OrderStatus.SERVER.code()); + orderDetailService.updateOrderDetail(orderDetail); + // 如果发现是唯一子单,则需要将主单也更新为服务中 + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + if(orderMaster.getOrderStatus() == OrderStatus.FINISH_CHECK.code()){ + orderMaster.setOrderStatus(OrderStatus.SERVER.code()); + orderMasterService.updateOrderMaster(orderMaster); + } + } + } afterServiceRecordMapper.updateAfterServiceRecord(param); } return AjaxResult.success();