分帐后也能同意退款,但是退款0元

This commit is contained in:
Hawking 2023-04-20 22:33:06 +08:00
parent 0a82851e2c
commit 777178cc45
3 changed files with 29 additions and 18 deletions

View File

@ -134,7 +134,7 @@ public class AfterServiceRecordController extends BaseController {
public AjaxResult editSave(@RequestBody AfterServiceRecord afterServiceRecord) { public AjaxResult editSave(@RequestBody AfterServiceRecord afterServiceRecord) {
logger.info("修改售后记录:{}", afterServiceRecord); logger.info("修改售后记录:{}", afterServiceRecord);
try { try {
return toAjax(afterServiceRecordService.updateAfterServiceRecord(afterServiceRecord)); return afterServiceRecordService.updateAfterServiceRecord(afterServiceRecord);
} catch (Exception exception) { } catch (Exception exception) {
logger.error(ExceptionUtils.getStackTrace(exception)); logger.error(ExceptionUtils.getStackTrace(exception));
return AjaxResult.error(exception.getMessage()); return AjaxResult.error(exception.getMessage());

View File

@ -1,23 +1,24 @@
package com.ghy.order.service; package com.ghy.order.service;
import java.util.List; import com.ghy.common.core.domain.AjaxResult;
import com.ghy.order.domain.AfterServiceRecord; import com.ghy.order.domain.AfterServiceRecord;
import java.util.List;
/** /**
* 售后记录Service接口 * 售后记录Service接口
* *
* @author clunt * @author clunt
* @date 2022-09-25 * @date 2022-09-25
*/ */
public interface IAfterServiceRecordService public interface IAfterServiceRecordService {
{
/** /**
* 查询售后记录 * 查询售后记录
* *
* @param id 售后记录主键 * @param id 售后记录主键
* @return 售后记录 * @return 售后记录
*/ */
public AfterServiceRecord selectAfterServiceRecordById(String id); AfterServiceRecord selectAfterServiceRecordById(String id);
/** /**
* 查询售后记录列表 * 查询售后记录列表
@ -25,7 +26,7 @@ public interface IAfterServiceRecordService
* @param afterServiceRecord 售后记录 * @param afterServiceRecord 售后记录
* @return 售后记录集合 * @return 售后记录集合
*/ */
public List<AfterServiceRecord> selectAfterServiceRecordList(AfterServiceRecord afterServiceRecord); List<AfterServiceRecord> selectAfterServiceRecordList(AfterServiceRecord afterServiceRecord);
/** /**
* 新增售后记录 * 新增售后记录
@ -33,7 +34,7 @@ public interface IAfterServiceRecordService
* @param afterServiceRecord 售后记录 * @param afterServiceRecord 售后记录
* @return 结果 * @return 结果
*/ */
public int insertAfterServiceRecord(AfterServiceRecord afterServiceRecord); int insertAfterServiceRecord(AfterServiceRecord afterServiceRecord);
/** /**
* 修改售后记录 * 修改售后记录
@ -41,7 +42,7 @@ public interface IAfterServiceRecordService
* @param afterServiceRecord 售后记录 * @param afterServiceRecord 售后记录
* @return 结果 * @return 结果
*/ */
public int updateAfterServiceRecord(AfterServiceRecord afterServiceRecord) throws Exception; AjaxResult updateAfterServiceRecord(AfterServiceRecord afterServiceRecord) throws Exception;
/** /**
* 批量删除售后记录 * 批量删除售后记录
@ -49,7 +50,7 @@ public interface IAfterServiceRecordService
* @param ids 需要删除的售后记录主键集合 * @param ids 需要删除的售后记录主键集合
* @return 结果 * @return 结果
*/ */
public int deleteAfterServiceRecordByIds(String ids); int deleteAfterServiceRecordByIds(String ids);
/** /**
* 删除售后记录信息 * 删除售后记录信息
@ -57,5 +58,5 @@ public interface IAfterServiceRecordService
* @param id 售后记录主键 * @param id 售后记录主键
* @return 结果 * @return 结果
*/ */
public int deleteAfterServiceRecordById(String id); int deleteAfterServiceRecordById(String id);
} }

View File

@ -2,6 +2,7 @@ package com.ghy.order.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ghy.common.adapay.model.AdapayStatusEnum; 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.core.text.Convert;
import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.PayStatus;
import com.ghy.common.enums.RefundType; import com.ghy.common.enums.RefundType;
@ -126,23 +127,32 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateAfterServiceRecord(AfterServiceRecord param) throws BaseAdaPayException { public AjaxResult updateAfterServiceRecord(AfterServiceRecord param) throws BaseAdaPayException {
AfterServiceRecord afterServiceRecord = this.selectAfterServiceRecordById(param.getId()); AfterServiceRecord afterServiceRecord = this.selectAfterServiceRecordById(param.getId());
Assert.notNull(afterServiceRecord, "售后记录不存在!"); Assert.notNull(afterServiceRecord, "售后记录不存在!");
if (Long.valueOf(1L).equals(param.getCustomerFinalCheck()) && Long.valueOf(1L).equals(afterServiceRecord.getWorkerFeedbackResult())) { if (Long.valueOf(1L).equals(param.getCustomerFinalCheck()) && Long.valueOf(1L).equals(afterServiceRecord.getWorkerFeedbackResult())) {
// 客户同意退款 // 客户同意退款
afterServiceRecord.setCustomerFinalCheck(1L); afterServiceRecord.setCustomerFinalCheck(1L);
return agreeRefund(afterServiceRecord); afterServiceRecord.setRefundApplyTime(new Date());
OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId());
// DrawCashTime不为空说明已经发起过分账
if (orderDetail.getDrawCashTime() != null) {
log.warn("子单[{}]已发起分账,不能退款", afterServiceRecord.getOrderDetailId());
afterServiceRecord.setOriginalRefund(BigDecimal.ZERO);
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
return AjaxResult.error("本单已划款,师傅/服务人员已到帐或即将到帐,双方达成退款的,请对方线下支付后点“对方已退款”");
} else {
agreeRefund(afterServiceRecord);
}
} else { } else {
return afterServiceRecordMapper.updateAfterServiceRecord(param); afterServiceRecordMapper.updateAfterServiceRecord(param);
} }
return AjaxResult.success();
} }
private int agreeRefund(AfterServiceRecord afterServiceRecord) throws BaseAdaPayException { private int agreeRefund(AfterServiceRecord afterServiceRecord) throws BaseAdaPayException {
OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId()); OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId());
Assert.notNull(orderDetail, "子单不存在!"); Assert.notNull(orderDetail, "子单不存在!");
// DrawCashTime不为空说明已经发起过分账
Assert.isTrue(orderDetail.getDrawCashTime() == null, "子单已发起分账,请联系师傅处理线下售后!");
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(afterServiceRecord.getOrderDetailId()); FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(afterServiceRecord.getOrderDetailId());
Assert.notNull(financialDetail, "财务子单不存在!"); Assert.notNull(financialDetail, "财务子单不存在!");
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
@ -190,7 +200,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
financialMasterService.updateFinancialMaster(financialMaster); financialMasterService.updateFinancialMaster(financialMaster);
// 发起支付撤销 // 发起支付撤销
if(payReverse){ if (payReverse) {
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
} }
} else { } else {
@ -201,7 +211,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
financialMasterService.updateFinancialMaster(financialMaster); financialMasterService.updateFinancialMaster(financialMaster);
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney); String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
// 发起支付撤销 // 发起支付撤销
if(payReverse){ if (payReverse) {
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
} }
} }
@ -220,7 +230,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
financialDetailService.updateFinancialDetail(financialDetail); financialDetailService.updateFinancialDetail(financialDetail);
// 发起支付撤销 // 发起支付撤销
if(payReverse){ if (payReverse) {
String reverseAmt = AdapayUtils.bigDecimalToString(financialMaster.getServerMoney()); String reverseAmt = AdapayUtils.bigDecimalToString(financialMaster.getServerMoney());
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
} }