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 7ebafe88..e0147acf 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
@@ -7,6 +7,8 @@ import com.alibaba.fastjson.JSONObject;
import com.ghy.common.adapay.model.AdapayStatusEnum;
import com.ghy.common.adapay.model.PaymentDTO;
import com.ghy.common.core.domain.AjaxResult;
+import com.ghy.common.enums.PayStatus;
+import com.ghy.common.enums.PayTypeEnum;
import com.ghy.common.exception.base.BaseException;
import com.ghy.common.utils.DateUtils;
import com.ghy.common.utils.ObjectUtils;
@@ -122,7 +124,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
AfterServiceRecord afterServiceRecord = this.selectAfterServiceRecordById(param.getId());
Assert.notNull(afterServiceRecord, "售后记录不存在!");
// 实际同意,需要发起退款,减少原单分账金额-调用退款接口
- if(param.getCustomerFinalCheck() == 1){
+ if(param.getCustomerFinalCheck() != null && param.getCustomerFinalCheck() == 1){
OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId());
Assert.notNull(orderDetail, "子单不存在!");
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(afterServiceRecord.getOrderDetailId());
@@ -144,23 +146,27 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
Assert.notNull(orderMaster, "找不到对应的订单");
FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId());
Assert.notNull(financialMaster, "找不到订单");
- Assert.isTrue(financialMaster.getPayStatus() == 1, "订单未支付");
- Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员");
- JSONObject response = null;
- try {
- response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), String.valueOf(refundMoney));
- if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) {
+ if(PayTypeEnum.ALIPAY_QR.getCode().equals(orderMaster.getPayType()) && ! PayStatus.PAID.getCode().equals(financialMaster.getPayStatus())){
+ financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney));
+ financialMasterService.updateFinancialMaster(financialMaster);
+ financialDetailService.updateFinancialDetail(financialDetail);
+ }else {
+ Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员");
+ JSONObject response = null;
+ try {
+ response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), String.valueOf(refundMoney));
if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) {
- afterServiceRecord.setCustomerFinalCheck(1L);
- financialDetailService.updateFinancialDetail(financialDetail);
+ if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) {
+ financialDetailService.updateFinancialDetail(financialDetail);
+ }
}
+ } catch (BaseAdaPayException e) {
+ throw new BaseException("发起退款异常!");
}
- } catch (BaseAdaPayException e) {
- throw new BaseException("发起退款异常!");
}
}
- afterServiceRecord.setUpdateTime(DateUtils.getNowDate());
- return afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
+ param.setUpdateTime(DateUtils.getNowDate());
+ return afterServiceRecordMapper.updateAfterServiceRecord(param);
}
/**
diff --git a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml
index b01e3322..0dff5062 100644
--- a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml
+++ b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml
@@ -40,6 +40,9 @@
and refund = #{refund}
and agreed_refund = #{agreedRefund}
and customer_final_check = #{customerFinalCheck}
+
+ and ( customer_final_check = '0' or customer_final_check is null )
+
@@ -113,7 +116,7 @@
- delete from after_service_record where customer_final_check != 1 and id in
+ delete from after_service_record where (customer_final_check is NULL or customer_final_check = 0) and id in
#{id}