update 订单退款明细

This commit is contained in:
2023-09-15 14:00:45 +08:00
parent 923aaa3537
commit cadfa31c98
6 changed files with 298 additions and 250 deletions

View File

@@ -122,6 +122,9 @@ public class OrderService {
@Resource
private IPileMerchantInfoService pileMerchantInfoService;
@Resource
private IMemberWalletLogService memberWalletLogService;
@Resource
private RedisCache redisCache;
@@ -293,69 +296,6 @@ public class OrderService {
log.info("订单号:{}发送停机指令成功", dto.getOrderCode());
}
/**
* 微信支付回调
*
* @param request
* @param body
* @throws Exception
*/
// public void wechatPayCallback(HttpServletRequest request, WechatPayNotifyParameter body) throws Exception {
// // 获取微信支付成功返回的信息
// Map<String, Object> map = wechatPayService.wechatPayCallbackInfo(request, body);
// String type = (String) map.get("type");
// BigDecimal amount = (BigDecimal) map.get("amount"); // 微信给的amount单位是分
// amount = amount.divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); // 转换为元
//
// String orderCode = (String) map.get("orderCode");
// String memberId = (String) map.get("memberId");
// if (StringUtils.equals(type, ScenarioEnum.ORDER.getValue())) { // 1-订单支付
// // 支付订单成功
// // orderCode = (String) map.get("orderCode");
// PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder()
// .orderCode(orderCode)
// .payAmount(amount)
// .payMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())
// .acquirer(AcquirerEnum.WECHAT_PAY.getValue())
// .build();
// // 订单支付成功 支付回调
// orderBasicInfoService.payOrderSuccessCallback(callbackDTO);
//
// // 记录订单支付流水
// // OrderPayRecord orderPayRecord = OrderPayRecord.builder()
// // .orderCode(orderCode)
// // .payMode(OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue())
// // .payAmount(amount)
// // .acquirer(AcquirerEnum.WECHAT_PAY.getValue())
// // .createBy(null)
// // .build();
// // orderPayRecordService.batchInsert(Lists.newArrayList(orderPayRecord));
// } else if (StringUtils.equals(type, ScenarioEnum.BALANCE.getValue())) { // 2-充值余额
// // 充值余额成功
// // memberId = (String) map.get("memberId");
// UpdateMemberBalanceDTO dto = new UpdateMemberBalanceDTO();
// dto.setMemberId(memberId);
// dto.setType(MemberWalletEnum.TYPE_IN.getValue());
// dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue());
// dto.setUpdatePrincipalBalance(amount);
// memberBasicInfoService.updateMemberBalance(dto);
// }
//
// // 微信支付订单 记录会员交易流水
// MemberTransactionRecord record = MemberTransactionRecord.builder()
// .orderCode(orderCode)
// .scenarioType(type)
// .memberId(memberId)
// .actionType(ActionTypeEnum.FORWARD.getValue())
// .payMode(PayModeEnum.PAYMENT_OF_WECHATPAY.getValue())
// .paymentInstitutions(PaymentInstitutionsEnum.WECHAT_PAY.getValue())
// .amount(amount) // 单位元
// .outTradeNo(String.valueOf(map.get("out_trade_no")))
// .transactionId(String.valueOf(map.get("transaction_id")))
// .build();
// memberTransactionRecordService.insertSelective(record);
// }
/**
* 微信退款
*
@@ -458,86 +398,9 @@ public class OrderService {
// 支付流水
List<OrderDetailInfoVO.PayRecord> payRecords = orderPayRecordService.selectOrderPayInfoList(orderCode);
vo.setPayRecordList(payRecords);
/*List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
if (CollectionUtils.isNotEmpty(orderPayRecordList)) {
List<OrderDetailInfoVO.PayRecord> payRecordList = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
OrderDetailInfoVO.PayRecord payInfo = new OrderDetailInfoVO.PayRecord();
// 余额支付如果是由本金和赠送一起支付的,合并为一个
BigDecimal bigDecimal = orderPayRecordList.stream()
.map(OrderPayRecord::getPayAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
payInfo.setPayAmount(bigDecimal.toString());
payInfo.setPayStatus(orderBasicInfo.getPayStatus());
payInfo.setPayTime(DateUtils.formatDateTime(orderBasicInfo.getPayTime()));
if (orderPayRecord.getRefundAmount() != null) {
payInfo.setRefundAmount(orderPayRecord.getRefundAmount().toString());
}
String payMode = orderPayRecord.getPayMode();
if (StringUtils.equals(payMode, OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|| StringUtils.equals(payMode, OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) {
// 使用余额支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_BALANCE.getLabel());
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue())){
// 使用微信支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getLabel());
// 判断是微信支付还是汇付支付
MemberTransactionRecord record = memberTransactionRecordService.selectByOrderCode(orderCode, ActionTypeEnum.FORWARD.getValue());
if (record != null) {
String paymentInstitutions = record.getPaymentInstitutions();
if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.WECHAT_PAY.getValue())) {
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.ADAPAY.getValue())) {
// 查询汇付支付回调
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode);
if (adapayCallbackRecord != null) {
payInfo.setOutTradeNo(adapayCallbackRecord.getPaymentId());
payInfo.setTransactionId(adapayCallbackRecord.getOutTransId());
}
}
}
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WHITELIST_PAYMENT.getValue())){
// 使用白名单支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getLabel());
}
payRecordList.add(payInfo);
}
vo.setPayRecordList(payRecordList);
}*/
// 查询退款明细
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList();
List<PaymentReverseResponse> paymentReverseResponses = orderBasicInfoService.queryOrderAdapayRefund(orderBasicInfo);
if (CollectionUtils.isNotEmpty(paymentReverseResponses)) {
OrderDetailInfoVO.OrderRefundInfo refundInfo;
for (PaymentReverseResponse reverseResponse : paymentReverseResponses) {
refundInfo = new OrderDetailInfoVO.OrderRefundInfo();
refundInfo.setReverseId(reverseResponse.getId());
refundInfo.setPaymentId(reverseResponse.getPayment_id());
refundInfo.setReverseAmt(reverseResponse.getReverse_amt());
LocalDateTime createdTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getCreated_time()));
refundInfo.setCreatedTime(DateUtils.formatDateTime(createdTime));
LocalDateTime succeedTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getSucceed_time()));
refundInfo.setSucceedTime(DateUtils.formatDateTime(succeedTime));
orderRefundInfoList.add(refundInfo);
}
}
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = getOrderRefundInfoList(orderBasicInfo);
vo.setOrderRefundInfoList(orderRefundInfoList);
// 查订单明细
@@ -567,6 +430,36 @@ public class OrderService {
return vo;
}
/**
* 获取退款明细列表
* @param orderBasicInfo
* @return
*/
private List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList();
if (OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
// 查新member_wallet_log订单退款记录
// memberWalletLogService.
} else if (OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue().equals(orderBasicInfo.getPayMode())) {
List<PaymentReverseResponse> paymentReverseResponses = orderBasicInfoService.queryOrderAdapayRefund(orderBasicInfo);
if (CollectionUtils.isNotEmpty(paymentReverseResponses)) {
OrderDetailInfoVO.OrderRefundInfo refundInfo;
for (PaymentReverseResponse reverseResponse : paymentReverseResponses) {
refundInfo = new OrderDetailInfoVO.OrderRefundInfo();
refundInfo.setReverseId(reverseResponse.getId());
refundInfo.setPaymentId(reverseResponse.getPayment_id());
refundInfo.setReverseAmt(reverseResponse.getReverse_amt());
LocalDateTime createdTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getCreated_time()));
refundInfo.setCreatedTime(DateUtils.formatDateTime(createdTime));
LocalDateTime succeedTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getSucceed_time()));
refundInfo.setSucceedTime(DateUtils.formatDateTime(succeedTime));
orderRefundInfoList.add(refundInfo);
}
}
}
return orderRefundInfoList;
}
/**
* 微信支付退款回调
*