修改退款各个环节同步订单状态的实现,增加6-退款申请中 7-退款驳回 8-退款失败三种状态

This commit is contained in:
jkcdev 2025-05-20 10:55:58 +08:00
parent 4671569308
commit 2d8cb7ff2c
3 changed files with 26 additions and 21 deletions

View File

@ -85,12 +85,7 @@ public class EbikeWxPaymentController {
@PostMapping("/refund") @PostMapping("/refund")
public JsonResult<?> refund(@RequestBody ReqRefundDto refundDto) { public JsonResult<?> refund(@RequestBody ReqRefundDto refundDto) {
HandleNotifyResult r = wxPayService.refund(refundDto); HandleNotifyResult r = wxPayService.refund(refundDto);
if (r.isSuccess()) return r.isSuccess()?JsonResult.success(true):JsonResult.failed(r.getMessage());
return JsonResult.success();
JSONObject error = JSONObject.parseObject(r.getMessage());
if (error==null)
return JsonResult.failed(r.getMessage());
return JsonResult.failed("退款失败", error);
} }
/** /**

View File

@ -42,7 +42,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
boolean r = save(ebikeRefund); boolean r = save(ebikeRefund);
// 同步发起退款 // 同步发起退款
if(r) if(r)
ordersFeignClient.refund(Long.valueOf(ebikeRefund.getOrderId())); ordersFeignClient.refundApply(Long.valueOf(ebikeRefund.getOrderId()));
return r; return r;
} }
@ -62,21 +62,24 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
// create_time到排序取最新的一条 // create_time到排序取最新的一条
QueryWrapper query = QueryWrapper.create() QueryWrapper query = QueryWrapper.create()
.where(EBIKE_REFUND.ORDER_ID.eq(orderId)) .where(EBIKE_REFUND.ORDER_ID.eq(orderId))
.orderBy(EBIKE_REFUND.CREATE_TIME.desc()) .orderBy(EBIKE_REFUND.CREATE_TIME.desc());
.limit(1);
return getOne(query); return getOne(query);
} }
@Override @Override
public Boolean updateRefundStatus(Refund refund) { public Boolean updateRefundStatus(Refund refund) {
EbikeRefund ebikeRefund = new EbikeRefund(); EbikeRefund ebikeRefund = getByOrderId(refund.getOutTradeNo());
ebikeRefund.setRefundId(refund.getOutRefundNo());
ebikeRefund.setStatus(String.valueOf(refund.getStatus().ordinal())); ebikeRefund.setStatus(String.valueOf(refund.getStatus().ordinal()));
if (Status.SUCCESS.equals(refund.getStatus())) { if (Status.SUCCESS.equals(refund.getStatus())) {
ebikeRefund.setRefundTime(LocalDateTime.now()); ebikeRefund.setRefundTime(LocalDateTime.now());
ebikeRefund.setRefund(refund.getAmount().getRefund().doubleValue() / 100.0); ebikeRefund.setRefund(refund.getAmount().getRefund().doubleValue() / 100.0);
// 退款成功 更新订单状态 }
ordersFeignClient.doneRefund(Long.valueOf(refund.getOutTradeNo())); long orderId = Long.parseLong(refund.getOutTradeNo());
// 更新订单退款状态
switch (refund.getStatus()){
case PROCESSING, CLOSED -> ordersFeignClient.refund(orderId);
case SUCCESS -> ordersFeignClient.doneRefund(orderId);
case ABNORMAL -> ordersFeignClient.failRefund(orderId);
} }
return updateById(ebikeRefund); return updateById(ebikeRefund);
} }

View File

@ -366,7 +366,6 @@ public class WxPayServiceImpl implements WxPayService {
ebikeRefund.setRefundApply(ebikePayment.getTotal()); ebikeRefund.setRefundApply(ebikePayment.getTotal());
ebikeRefund.setTransactionId(transactionId); ebikeRefund.setTransactionId(transactionId);
ebikeRefund.setReason(reason); ebikeRefund.setReason(reason);
ebikeRefund.setStatus(String.valueOf(Status.PROCESSING.ordinal()));
ebikeRefund.setProcessState(String.valueOf(RefundProcessState.applying.ordinal())); ebikeRefund.setProcessState(String.valueOf(RefundProcessState.applying.ordinal()));
ebikeRefund.setSource(String.valueOf(RefoundApplySource.user.ordinal())); ebikeRefund.setSource(String.valueOf(RefoundApplySource.user.ordinal()));
ebikeRefundService.saveRefundResult(ebikeRefund); ebikeRefundService.saveRefundResult(ebikeRefund);
@ -388,6 +387,10 @@ public class WxPayServiceImpl implements WxPayService {
ebikeRefund.setRefund(ebikeRefund.getRefundApply()); ebikeRefund.setRefund(ebikeRefund.getRefundApply());
ebikeRefund.setRefundMethod(processDto.getMethod()); ebikeRefund.setRefundMethod(processDto.getMethod());
} }
if (String.valueOf(RefundProcessState.closed.ordinal()).equals(processDto.getOperate())) {
// 更新订单状态
ordersFeignClient.rejectRefund(Long.valueOf(ebikeRefund.getOrderId()));
}
return ebikeRefundService.updateById(ebikeRefund); return ebikeRefundService.updateById(ebikeRefund);
} }
@ -452,12 +455,11 @@ public class WxPayServiceImpl implements WxPayService {
ebikeRefund.setTotal(amount.getTotal()); ebikeRefund.setTotal(amount.getTotal());
ebikeRefund.setStatus(String.valueOf(result.getStatus().ordinal())); ebikeRefund.setStatus(String.valueOf(result.getStatus().ordinal()));
ebikeRefund.setCurrency(amount.getCurrency()); ebikeRefund.setCurrency(amount.getCurrency());
if (Status.SUCCESS.equals(result.getStatus())) {
ebikeRefund.setRefund(result.getAmount().getRefund().doubleValue() / 100.0); ebikeRefund.setRefund(result.getAmount().getRefund().doubleValue() / 100.0);
ebikeRefund.setRefundTime(LocalDateTime.now()); ebikeRefund.setRefundTime(LocalDateTime.now());
ebikeRefund.setRemark(refundDto.getRemark()); ebikeRefund.setRemark(refundDto.getRemark());
ebikeRefund.setProcessState(String.valueOf(RefundProcessState.processed.ordinal()));
ebikeRefund.setRefundTransactionId(result.getRefundId()); ebikeRefund.setRefundTransactionId(result.getRefundId());
}
ebikeRefundService.updateById(ebikeRefund); ebikeRefundService.updateById(ebikeRefund);
result_.setSuccess(true); result_.setSuccess(true);
result_.setMessage("退款成功"); result_.setMessage("退款成功");
@ -468,7 +470,12 @@ public class WxPayServiceImpl implements WxPayService {
return result_; return result_;
} catch (Exception e) { } catch (Exception e) {
String err = logError("退款refund", e); String err = logError("退款refund", e);
try {
JSONObject json = JSON.parseObject(err);
result_.setMessage(json.getString("message"));
}catch (Exception ex) {
result_.setMessage(err); result_.setMessage(err);
}
return result_; return result_;
} }
} }