退款成功

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;
import java.math.BigDecimal;
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.ObjectUtils;
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.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.stereotype.Service;
import com.ghy.order.mapper.AfterServiceRecordMapper;
import com.ghy.order.domain.AfterServiceRecord;
import com.ghy.order.service.IAfterServiceRecordService;
import com.ghy.common.core.text.Convert;
import org.springframework.util.Assert;
/**
* 售后记录Service业务层处理
@ -26,6 +45,21 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
@Autowired
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 结果
*/
@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());
return afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
}