退款成功

This commit is contained in:
clunt 2022-10-09 23:06:49 +08:00
parent afdaa2a491
commit ff2c4e92be
1 changed files with 76 additions and 3 deletions

View File

@ -1,15 +1,34 @@
package com.ghy.order.service.impl; package com.ghy.order.service.impl;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
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.exception.base.BaseException;
import com.ghy.common.utils.DateUtils; import com.ghy.common.utils.DateUtils;
import com.ghy.common.utils.ObjectUtils;
import com.ghy.order.domain.AfterServiceImgs; import com.ghy.order.domain.AfterServiceImgs;
import com.ghy.order.domain.OrderDetail;
import com.ghy.order.domain.OrderMaster;
import com.ghy.order.service.IAfterServiceImgsService; import com.ghy.order.service.IAfterServiceImgsService;
import com.ghy.order.service.OrderDetailService;
import com.ghy.order.service.OrderMasterService;
import com.ghy.payment.domain.FinancialDetail;
import com.ghy.payment.domain.FinancialMaster;
import com.ghy.payment.service.AdapayService;
import com.ghy.payment.service.FinancialDetailService;
import com.ghy.payment.service.FinancialMasterService;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ghy.order.mapper.AfterServiceRecordMapper; import com.ghy.order.mapper.AfterServiceRecordMapper;
import com.ghy.order.domain.AfterServiceRecord; import com.ghy.order.domain.AfterServiceRecord;
import com.ghy.order.service.IAfterServiceRecordService; import com.ghy.order.service.IAfterServiceRecordService;
import com.ghy.common.core.text.Convert; import com.ghy.common.core.text.Convert;
import org.springframework.util.Assert;
/** /**
* 售后记录Service业务层处理 * 售后记录Service业务层处理
@ -26,6 +45,21 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
@Autowired @Autowired
private IAfterServiceImgsService afterServiceImgsService; private IAfterServiceImgsService afterServiceImgsService;
@Autowired
private FinancialDetailService financialDetailService;
@Autowired
private OrderMasterService orderMasterService;
@Autowired
private FinancialMasterService financialMasterService;
@Autowired
private AdapayService adapayService;
@Autowired
private OrderDetailService orderDetailService;
/** /**
* 查询售后记录 * 查询售后记录
* *
@ -80,12 +114,51 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
/** /**
* 修改售后记录 * 修改售后记录
* *
* @param afterServiceRecord 售后记录 * @param param 售后记录
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateAfterServiceRecord(AfterServiceRecord afterServiceRecord) public int updateAfterServiceRecord(AfterServiceRecord param) {
{ AfterServiceRecord afterServiceRecord = this.selectAfterServiceRecordById(param.getId());
Assert.notNull(afterServiceRecord, "售后记录不存在!");
// 实际同意,需要发起退款减少原单分账金额-调用退款接口
if(param.getCustomerFinalCheck() == 1){
OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId());
Assert.notNull(orderDetail, "子单不存在!");
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(afterServiceRecord.getOrderDetailId());
Assert.notNull(financialDetail, "财务子单不存在!");
BigDecimal refundMoney = BigDecimal.ZERO;
if(ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())){
refundMoney = afterServiceRecord.getAgreedRefund();
}else {
refundMoney = afterServiceRecord.getRefund();
}
if(refundMoney.compareTo(financialDetail.getPayMoney()) < 0){
financialDetail.setPayMoney(financialDetail.getPayMoney().subtract(afterServiceRecord.getAgreedRefund()));
}else {
refundMoney = financialDetail.getPayMoney();
financialDetail.setPayMoney(BigDecimal.ZERO);
}
// 发起支付撤销
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
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 (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) {
afterServiceRecord.setCustomerFinalCheck(1L);
financialDetailService.updateFinancialDetail(financialDetail);
}
}
} catch (BaseAdaPayException e) {
throw new BaseException("发起退款异常!");
}
}
afterServiceRecord.setUpdateTime(DateUtils.getNowDate()); afterServiceRecord.setUpdateTime(DateUtils.getNowDate());
return afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); return afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
} }