diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index a723cede4..fd4d3187d 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -42,6 +42,7 @@ import com.jsowell.pile.service.programlogic.AbstractProgramLogic; import com.jsowell.pile.service.programlogic.ProgramLogicFactory; import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.util.UserUtils; +import com.jsowell.pile.vo.OrderPayRecordVO; import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.base.PileInfoVO; import com.jsowell.pile.vo.uniapp.customer.*; @@ -484,7 +485,9 @@ public class OrderService { // 支付流水对应页面支付信息 List payRecords = orderPayRecordService.selectOrderPayInfoList(orderCode); - vo.setPayRecordList(payRecords); + List payRecordList = orderPayRecordService.selectOrderPayRecordList(orderCode); + + vo.setPayRecordList(payRecordList); // 查询退款明细 List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/adapay/AdapayPayChannelEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/adapay/AdapayPayChannelEnum.java index be0d11dab..9fc4d32bb 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/adapay/AdapayPayChannelEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/adapay/AdapayPayChannelEnum.java @@ -48,4 +48,14 @@ public enum AdapayPayChannelEnum { this.value = value; this.label = label; } + + // 添加一个根据 value 查找 label 的方法 + public static String getLabelByValue(String value) { + for (AdapayPayChannelEnum channel : AdapayPayChannelEnum.values()) { + if (channel.getValue().equals(value)) { + return channel.getLabel(); + } + } + return null; + } } diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/OrderPayRecordEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/OrderPayRecordEnum.java index 654a7298f..2094e06e0 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/OrderPayRecordEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/OrderPayRecordEnum.java @@ -32,7 +32,7 @@ public enum OrderPayRecordEnum { this.label = label; } - public static String getPayModeDescription(String value) { + public static String getPayModeDesc(String value) { for (OrderPayRecordEnum orderPayModeEnum : OrderPayRecordEnum.values()) { if (orderPayModeEnum.getValue().equals(value)) { return orderPayModeEnum.getLabel(); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java index 6d83a06f3..f19e22a86 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java @@ -2,6 +2,7 @@ package com.jsowell.pile.service; import com.jsowell.adapay.vo.PaymentInfo; import com.jsowell.pile.domain.OrderPayRecord; +import com.jsowell.pile.vo.OrderPayRecordVO; import com.jsowell.pile.vo.web.OrderDetailInfoVO; import java.math.BigDecimal; @@ -33,6 +34,8 @@ public interface OrderPayRecordService{ List queryPaymentInfosByOrderCode(String orderCode); + List selectOrderPayRecordList(String orderCode); + List selectOrderPayInfoList(String orderCode); List parseDeductionRecord(String deductionRecord); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java index 442cdbdd3..2f5e2dcc6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java @@ -8,6 +8,7 @@ import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.core.text.Convert; +import com.jsowell.common.enums.adapay.AdapayPayChannelEnum; import com.jsowell.common.enums.ykc.OrderPayModeEnum; import com.jsowell.common.enums.ykc.OrderPayRecordEnum; import com.jsowell.common.enums.ykc.PaymentInstitutionsEnum; @@ -94,7 +95,9 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService { /** * 查询订单支付信息 + * 加缓存 */ + @Override public List selectOrderPayRecordList(String orderCode) { // 缓存 String redisKey = CacheConstants.SELECT_ORDER_PAY_INFO_LIST + orderCode; @@ -116,9 +119,54 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService { } for (OrderPayRecordVO orderPayRecordVO : resultList) { + orderPayRecordVO.setPayModeDesc(OrderPayRecordEnum.getPayModeDesc(orderPayRecordVO.getPayMode())); + orderPayRecordVO.setPayChannelDesc(AdapayPayChannelEnum.getLabelByValue(orderPayRecordVO.getPayChannel())); + // 支付方式(1-本金余额支付;2-赠送余额支付;3-白名单支付;4-微信支付;5-支付宝支付) + String payMode = orderPayRecordVO.getPayMode(); + if (StringUtils.equals(payMode, OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()) + || StringUtils.equals(payMode, OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) { + // 使用余额支付 + orderPayRecordVO.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); + String payModeDesc = null; + if (StringUtils.isNotBlank(OrderPayRecordEnum.getPayModeDesc(payMode))) { + payModeDesc = OrderPayRecordEnum.getPayModeDesc(payMode); + } else { + payModeDesc = OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue(); + } + orderPayRecordVO.setPayModeDesc(payModeDesc); + } else if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue())) { + // 使用微信支付 + orderPayRecordVO.setPayMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue()); + orderPayRecordVO.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getLabel()); + + // 判断是微信支付还是汇付支付 + String paymentInstitutions = orderPayRecordVO.getAcquirer(); + if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.WECHAT_PAY.getValue())) { + // 查微信支付回调记录 + WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode); + if (wxpayCallbackRecord != null) { + orderPayRecordVO.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo()); + orderPayRecordVO.setTransactionId(wxpayCallbackRecord.getTransactionId()); + } + } else if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.ADAPAY.getValue())) { + List paymentInfos = parseDeductionRecord(orderPayRecordVO.getDeductionRecord()); + // 查询汇付支付回调 + // AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode); + AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByPaymentId(paymentInfos.get(0).getPaymentId()); + if (adapayCallbackRecord != null) { + orderPayRecordVO.setOutTradeNo(adapayCallbackRecord.getPaymentId()); + orderPayRecordVO.setTransactionId(adapayCallbackRecord.getOutTransId()); + } + } + } else if (StringUtils.equals(payMode, OrderPayRecordEnum.WHITELIST_PAYMENT.getValue())) { + // 使用白名单支付 + orderPayRecordVO.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue()); + orderPayRecordVO.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getLabel()); + } } - + redisCache.setCacheList(redisKey, resultList); + redisCache.expire(redisKey, CacheConstants.cache_expire_time_1d); return resultList; } @@ -172,8 +220,8 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService { // 使用余额支付 payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); String payModeDesc = null; - if (StringUtils.isNotBlank(OrderPayRecordEnum.getPayModeDescription(payMode))) { - payModeDesc = OrderPayRecordEnum.getPayModeDescription(payMode); + if (StringUtils.isNotBlank(OrderPayRecordEnum.getPayModeDesc(payMode))) { + payModeDesc = OrderPayRecordEnum.getPayModeDesc(payMode); } else { payModeDesc = OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue(); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/OrderPayRecordVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/OrderPayRecordVO.java index 2d3087158..8a7609c7c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/OrderPayRecordVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/OrderPayRecordVO.java @@ -10,9 +10,17 @@ public class OrderPayRecordVO { private String payMode; // 支付方式(1-本金余额支付;2-赠送金余额支付;3-白名单支付;4-微信支付;5-支付宝支付) private String payModeDesc; // 支付方式描述 private String payTime; // 支付时间 + private String paymentId; // 支付流水号 private String outTradeNo; // 微信商户订单号 real_time_monitor_data private String transactionId; // 微信支付订单号 private String refundAmount; // 退款金额 private String payChannel; // 汇付定义的支付渠道 private String payChannelDesc; // 支付渠道描述 + + private String deductionRecord; + + private String partyOrderId; // 第三方订单号(汇付生成的) + private String outTransId; // 微信/支付宝订单号 + + private String acquirer; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java index c88a6bda9..a52a59a0b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java @@ -1,6 +1,7 @@ package com.jsowell.pile.vo.web; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; +import com.jsowell.pile.vo.OrderPayRecordVO; import com.jsowell.pile.vo.base.OrderAmountDetailVO; import com.jsowell.pile.vo.base.OrderPeriodAmountVO; import com.jsowell.pile.vo.base.PileInfoVO; @@ -30,7 +31,7 @@ public class OrderDetailInfoVO { private PileInfoVO pileInfo; // 支付信息 - private List payRecordList; + private List payRecordList; private List orderRefundInfoList; diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderPayRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderPayRecordMapper.xml index 76f30643f..4a8fb52b9 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderPayRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderPayRecordMapper.xml @@ -436,9 +436,14 @@ t1.order_code as orderCode, t1.pay_amount as payAmount, t1.pay_mode as payMode, - ifnull() as payTime, + ifnull(t2.create_time, t1.create_time) as payTime, + t1.acquirer as acquirer, + t1.deduction_record as deductionRecord, t1.refund_amount as refundAmount, - t2.pay_channel as payChannel + t2.pay_channel as payChannel, + t1.payment_id as paymentId, + t2.party_order_id as partyOrderId, + t2.out_trans_id as outTransId from order_pay_record t1 left join adapay_callback_record t2 on t2.payment_id = t1.payment_id where t1.order_code = #{orderCode,jdbcType=VARCHAR}