用户退款
This commit is contained in:
parent
4f06b79e77
commit
87dc496944
@ -78,8 +78,8 @@ public class EbikeWxPaymentController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/refundApply")
|
@PostMapping("/refundApply")
|
||||||
public JsonResult<?> refundApply(@RequestBody EbikeOrderRefundDto ebikeRefundDto) {
|
public JsonResult<?> refundApply(@RequestBody EbikeOrderRefundDto ebikeRefundDto) {
|
||||||
Long r = wxPayService.refundApply(ebikeRefundDto.getOrderId(), ebikeRefundDto.getReason());
|
Long refundId = wxPayService.refundApply(ebikeRefundDto.getOrderId(), ebikeRefundDto.getReason());
|
||||||
return JsonResult.success(r);
|
return JsonResult.success(refundId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -149,7 +149,7 @@ public class EbikeWxPaymentController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 退款订单详情
|
* 退款订单详情 bu
|
||||||
*
|
*
|
||||||
* @param refundId 退款id
|
* @param refundId 退款id
|
||||||
* @return 退款详情
|
* @return 退款详情
|
||||||
@ -172,20 +172,20 @@ public class EbikeWxPaymentController {
|
|||||||
return JsonResult.success(refundApplyOrderInfoVo);
|
return JsonResult.success(refundApplyOrderInfoVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 退款申请用户详情
|
// * 退款申请用户详情
|
||||||
*
|
// *
|
||||||
* @param refundId 退款id
|
// * @param refundId 退款id
|
||||||
* @return 退款申请用户详情
|
// * @return 退款申请用户详情
|
||||||
*/
|
// */
|
||||||
@GetMapping("/refundApplyUserDetail/{refundId}")
|
// @GetMapping("/refundApplyUserDetail/{refundId}")
|
||||||
public JsonResult<?> refundApplyUserDetail(@PathVariable(name = "refundId") Long refundId) {
|
// public JsonResult<?> refundApplyUserDetail(@PathVariable(name = "refundId") Long refundId) {
|
||||||
EbikeRefundUserDetailInfoVo refundUserDetailInfoVo = wxPayService.queryRefundUserInfoById(refundId);
|
// EbikeRefundUserDetailInfoVo refundUserDetailInfoVo = wxPayService.queryRefundUserInfoById(refundId);
|
||||||
return JsonResult.success(refundUserDetailInfoVo);
|
// return JsonResult.success(refundUserDetailInfoVo);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 退款申请用户交易记录
|
* 退款申请用户交易记录 -bu
|
||||||
*
|
*
|
||||||
* @param userQueryDto 查询条件
|
* @param userQueryDto 查询条件
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import java.time.LocalDateTime;
|
|||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Table("ebike_Refund")
|
@Table("ebike_refund")
|
||||||
public class EbikeRefund implements Serializable {
|
public class EbikeRefund implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ public class EbikeRefund implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 退款单号
|
* 退款单号
|
||||||
*/
|
*/
|
||||||
private String refundOrder;
|
private String refundOrderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单号
|
* 订单号
|
||||||
|
|||||||
@ -82,7 +82,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
|
|||||||
*/
|
*/
|
||||||
private EbikeRefund getByRefundOrderId(String refundOrderId) {
|
private EbikeRefund getByRefundOrderId(String refundOrderId) {
|
||||||
QueryWrapper query = QueryWrapper.create()
|
QueryWrapper query = QueryWrapper.create()
|
||||||
.where(EBIKE_REFUND.REFUND_ORDER.eq(refundOrderId))
|
.where(EBIKE_REFUND.REFUND_ORDER_ID.eq(refundOrderId))
|
||||||
.orderBy(EBIKE_REFUND.CREATE_TIME.desc());
|
.orderBy(EBIKE_REFUND.CREATE_TIME.desc());
|
||||||
return getOne(query);
|
return getOne(query);
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
|
|||||||
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
|
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
|
||||||
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
|
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
|
||||||
.leftJoin(EBIKE_ORDER).on(EBIKE_ORDER.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
|
.leftJoin(EBIKE_ORDER).on(EBIKE_ORDER.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
|
||||||
.where(EBIKE_REFUND.PROCESS_STATUS.eq(String.valueOf(refundDto.getProcessStatus())));
|
.where(EBIKE_REFUND.PROCESS_STATUS.eq(refundDto.getProcessStatus()));
|
||||||
// 查询条件
|
// 查询条件
|
||||||
buildQueryConditions(query, refundDto);
|
buildQueryConditions(query, refundDto);
|
||||||
Page<EbikeProcessedRefundVo> page = refundDto.getPageParam().getPage();
|
Page<EbikeProcessedRefundVo> page = refundDto.getPageParam().getPage();
|
||||||
@ -268,7 +268,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
|
|||||||
.from(EBIKE_REFUND)
|
.from(EBIKE_REFUND)
|
||||||
.select(EBIKE_PAYMENT.TOTAL.as("amount"),
|
.select(EBIKE_PAYMENT.TOTAL.as("amount"),
|
||||||
EBIKE_PAYMENT.CREATE_TIME,
|
EBIKE_PAYMENT.CREATE_TIME,
|
||||||
EBIKE_ORDER.ORDER_TYPE.as("transactionContent"))
|
(EBIKE_ORDER.ORDER_TYPE).as("transactionContent"))
|
||||||
.select("'支出' as transactionType")
|
.select("'支出' as transactionType")
|
||||||
.leftJoin(EBIKE_PAYMENT).on(EBIKE_REFUND.ORDER_ID.eq(EBIKE_PAYMENT.ORDER_ID))
|
.leftJoin(EBIKE_PAYMENT).on(EBIKE_REFUND.ORDER_ID.eq(EBIKE_PAYMENT.ORDER_ID))
|
||||||
.leftJoin(EBIKE_USER).on(EBIKE_PAYMENT.USER_ID.eq(EBIKE_USER.USER_ID))
|
.leftJoin(EBIKE_USER).on(EBIKE_PAYMENT.USER_ID.eq(EBIKE_USER.USER_ID))
|
||||||
@ -359,7 +359,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
|
|||||||
QueryWrapper query = QueryWrapper.create()
|
QueryWrapper query = QueryWrapper.create()
|
||||||
.select(QueryMethods.count(EBIKE_FAULT_REPORT.ALL_COLUMNS))
|
.select(QueryMethods.count(EBIKE_FAULT_REPORT.ALL_COLUMNS))
|
||||||
.from(EBIKE_FAULT_REPORT)
|
.from(EBIKE_FAULT_REPORT)
|
||||||
.where(EBIKE_FAULT_REPORT.ORDER_CODE.eq(orderId));
|
.where(EBIKE_FAULT_REPORT.ORDER_CODE.eq(String.valueOf(orderId)));
|
||||||
return (long) getObj(query);
|
return (long) getObj(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -423,7 +423,8 @@ public class EbikeWxPayServiceImpl implements EbikeWxPayService {
|
|||||||
String outRefundNo = StringUtils.generateSnowflakeId("refundId");
|
String outRefundNo = StringUtils.generateSnowflakeId("refundId");
|
||||||
ebikeRefund = new EbikeRefund();
|
ebikeRefund = new EbikeRefund();
|
||||||
ebikeRefund.setCreateTime(LocalDateTime.now());
|
ebikeRefund.setCreateTime(LocalDateTime.now());
|
||||||
ebikeRefund.setRefundOrder(outRefundNo);
|
ebikeRefund.setRefundOrderId(outRefundNo);
|
||||||
|
ebikeRefund.setOperatorId(ebikePayment.getOperatorId());
|
||||||
ebikeRefund.setOrderId(orderId);
|
ebikeRefund.setOrderId(orderId);
|
||||||
ebikeRefund.setCurrency(ebikePayment.getCurrency());
|
ebikeRefund.setCurrency(ebikePayment.getCurrency());
|
||||||
ebikeRefund.setTotal(ebikePayment.getCostPrice());
|
ebikeRefund.setTotal(ebikePayment.getCostPrice());
|
||||||
@ -477,16 +478,11 @@ public class EbikeWxPayServiceImpl implements EbikeWxPayService {
|
|||||||
notifyVo.setMessage(String.format("{%s}退款已经成功,不能重复退款", refundDto.getRefundId()));
|
notifyVo.setMessage(String.format("{%s}退款已经成功,不能重复退款", refundDto.getRefundId()));
|
||||||
return notifyVo;
|
return notifyVo;
|
||||||
}
|
}
|
||||||
if (Status.PROCESSING.ordinal() == ebikeRefund.getRefundStatus()) {
|
|
||||||
log.error("退款refund失败,{} 退款中,不能重复退款", refundDto.getRefundId());
|
|
||||||
notifyVo.setMessage(String.format("{%s}退款中,不能重复退款", refundDto.getRefundId()));
|
|
||||||
return notifyVo;
|
|
||||||
}
|
|
||||||
if (Status.CLOSED.ordinal() == ebikeRefund.getRefundStatus() ||
|
if (Status.CLOSED.ordinal() == ebikeRefund.getRefundStatus() ||
|
||||||
Status.ABNORMAL.ordinal() == ebikeRefund.getRefundStatus()) {
|
Status.ABNORMAL.ordinal() == ebikeRefund.getRefundStatus()) {
|
||||||
//重新发起
|
//重新发起
|
||||||
String newOrder = StringUtils.generateSnowflakeId("refundId");
|
String newOrder = StringUtils.generateSnowflakeId("refundId");
|
||||||
ebikeRefund.setRefundOrder(newOrder);
|
ebikeRefund.setRefundOrderId(newOrder);
|
||||||
}
|
}
|
||||||
// 查询支付记录
|
// 查询支付记录
|
||||||
Long orderId = ebikeRefund.getOrderId();
|
Long orderId = ebikeRefund.getOrderId();
|
||||||
@ -499,13 +495,13 @@ public class EbikeWxPayServiceImpl implements EbikeWxPayService {
|
|||||||
// 发起退款
|
// 发起退款
|
||||||
CreateRequest request = new CreateRequest();
|
CreateRequest request = new CreateRequest();
|
||||||
request.setTransactionId(transactionId);
|
request.setTransactionId(transactionId);
|
||||||
request.setOutTradeNo(String.valueOf(orderId));
|
request.setOutTradeNo(ebikePayment.getTradeId());
|
||||||
request.setOutRefundNo(ebikeRefund.getRefundOrder());
|
request.setOutRefundNo(ebikeRefund.getRefundOrderId());
|
||||||
request.setReason(ebikeRefund.getReason());
|
request.setReason(ebikeRefund.getReason());
|
||||||
request.setNotifyUrl(wxPayConfig.getRefundNotifyUrl());
|
request.setNotifyUrl(wxPayConfig.getRefundNotifyUrl());
|
||||||
AmountReq amountReq = new AmountReq();
|
AmountReq amountReq = new AmountReq();
|
||||||
amountReq.setRefund(amount.getRefund().longValue());
|
amountReq.setRefund(yuanToCent(amount.getRefund()));
|
||||||
amountReq.setTotal(amount.getTotal().longValue());
|
amountReq.setTotal(yuanToCent(amount.getTotal()));
|
||||||
amountReq.setCurrency(amount.getCurrency());
|
amountReq.setCurrency(amount.getCurrency());
|
||||||
request.setAmount(amountReq);
|
request.setAmount(amountReq);
|
||||||
try {
|
try {
|
||||||
@ -555,7 +551,7 @@ public class EbikeWxPayServiceImpl implements EbikeWxPayService {
|
|||||||
log.error("{}退款订单不存在", refundId);
|
log.error("{}退款订单不存在", refundId);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return queryRefundByOutTradeNo(ebikeRefund.getRefundOrder());
|
return queryRefundByOutTradeNo(ebikeRefund.getRefundOrderId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -591,7 +587,7 @@ public class EbikeWxPayServiceImpl implements EbikeWxPayService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Refund refund = queryRefundByOutTradeNo(ebikeRefund.getRefundOrder());
|
Refund refund = queryRefundByOutTradeNo(ebikeRefund.getRefundOrderId());
|
||||||
|
|
||||||
if (refund != null && Status.SUCCESS.equals(refund.getStatus())) {
|
if (refund != null && Status.SUCCESS.equals(refund.getStatus())) {
|
||||||
result.setSuccess(true);
|
result.setSuccess(true);
|
||||||
@ -856,4 +852,13 @@ public class EbikeWxPayServiceImpl implements EbikeWxPayService {
|
|||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Long yuanToCent(BigDecimal yuan) {
|
||||||
|
if (yuan == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return yuan.multiply(BigDecimal.valueOf(100))
|
||||||
|
.setScale(0, RoundingMode.HALF_UP)
|
||||||
|
.longValue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,7 +90,7 @@ public class WxPayTask {
|
|||||||
for (EbikeRefund ebikeRefund : ebikeRefundList) {
|
for (EbikeRefund ebikeRefund : ebikeRefundList) {
|
||||||
log.warn("超时未退款的退款单号 ===> {}", ebikeRefund.getRefundId());
|
log.warn("超时未退款的退款单号 ===> {}", ebikeRefund.getRefundId());
|
||||||
// 调用微信退款查询接口,查询退款状态
|
// 调用微信退款查询接口,查询退款状态
|
||||||
Refund refund = wxPayService.queryRefundByOutTradeNo(ebikeRefund.getRefundOrder());
|
Refund refund = wxPayService.queryRefundByOutTradeNo(ebikeRefund.getRefundOrderId());
|
||||||
if (refund != null) {
|
if (refund != null) {
|
||||||
// 3. 更新退款单状态
|
// 3. 更新退款单状态
|
||||||
ebikeRefundService.updateRefundStatus(refund);
|
ebikeRefundService.updateRefundStatus(refund);
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
package com.cdzy.user.service;
|
package com.cdzy.user.service;
|
||||||
|
|
||||||
import com.cdzy.user.model.dto.EbikeUserRealInfoDto;
|
|
||||||
import com.cdzy.user.model.entity.EbikeUserRealInfo;
|
import com.cdzy.user.model.entity.EbikeUserRealInfo;
|
||||||
import com.cdzy.user.model.vo.EbikeUserVo;
|
|
||||||
import com.mybatisflex.core.paginate.Page;
|
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user