diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java
index 142dfa69e..86c017783 100644
--- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java
+++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java
@@ -63,7 +63,8 @@ public class DaxPayKit {
.execute();
// 响应码只有200 才可以进行支付
if (execute.getStatus() != HttpStatus.HTTP_OK){
- throw new HttpException("请求失败,请排查配置的支付网关地址是否正常");
+ log.error("请求第三方支付平台失败,请排查配置的支付网关地址是否正常");
+ throw new HttpException("请求失败,内部异常");
}
String body = execute.body();
diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java
new file mode 100644
index 000000000..ce7c226d1
--- /dev/null
+++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java
@@ -0,0 +1,38 @@
+package cn.bootx.platform.daxpay.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.concurrent.atomic.AtomicLong;
+
+@Slf4j
+public class OrderNoGenerateUtil {
+
+ private static final AtomicLong ATOMIC_LONG = new AtomicLong();
+ private final static long ORDER_MAX_LIMIT = 999999L;
+
+ private static String machineNo;
+
+ public static String trade() {
+ StringBuilder orderNo = new StringBuilder();
+ String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss"));
+ long id = ATOMIC_LONG.incrementAndGet();
+ log.info("dataStr:{},id:{}", dateStr, id);
+ orderNo.append("T").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT));
+ return orderNo.toString();
+ }
+
+ public static String refund() {
+ StringBuilder orderNo = new StringBuilder();
+ String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss"));
+ long id = ATOMIC_LONG.incrementAndGet();
+ log.info("dataStr:{},id:{}", dateStr, id);
+ orderNo.append("R").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT));
+ return orderNo.toString();
+ }
+
+ public static void setMachineNo(String machineNo) {
+ OrderNoGenerateUtil.machineNo = machineNo;
+ }
+}
diff --git a/daxpay-single/daxpay-single-service/pom.xml b/daxpay-single/daxpay-single-service/pom.xml
index 4c477fa96..b56b23694 100644
--- a/daxpay-single/daxpay-single-service/pom.xml
+++ b/daxpay-single/daxpay-single-service/pom.xml
@@ -133,5 +133,10 @@
lock4j-redis-template-spring-boot-starter
${lock4j.version}
+
+ org.postgresql
+ postgresql
+ runtime
+
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java
index 472055cda..429a8f748 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java
@@ -1,5 +1,6 @@
package cn.bootx.platform.daxpay.service.configuration;
+import cn.bootx.platform.daxpay.util.OrderNoGenerateUtil;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -21,4 +22,11 @@ public class DaxPayProperties {
/** 前端地址(web) */
private String frontWebUrl;
+
+ private String machineNo;
+
+ public void setMachineNo(String machineNo) {
+ this.machineNo = machineNo;
+ OrderNoGenerateUtil.setMachineNo(machineNo);
+ }
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayCloseService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayCloseService.java
index 53b5803e0..0aabd7c5b 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayCloseService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayCloseService.java
@@ -41,7 +41,7 @@ public class AliPayCloseService {
@Retryable(value = RetryableException.class)
public void close(PayOrder payOrder) {
AlipayTradeCloseModel model = new AlipayTradeCloseModel();
- model.setOutTradeNo(String.valueOf(payOrder.getId()));
+ model.setOutTradeNo(payOrder.getOrderNo());
try {
AlipayTradeCloseResponse response = AliPayApi.tradeCloseToResponse(model);
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java
index 84c8e7cf5..a919ee75b 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java
@@ -32,7 +32,7 @@ public class AliPayRefundService {
public void refund(RefundOrder refundOrder, int amount) {
RefundLocal refundInfo = PaymentContextLocal.get().getRefundInfo();
AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel();
- refundModel.setOutTradeNo(String.valueOf(refundOrder.getPaymentId()));
+ refundModel.setOutTradeNo(String.valueOf(refundOrder.getRefundNo()));
refundModel.setOutRequestNo(String.valueOf(refundOrder.getId()));
// 金额转换
String refundAmount = String.valueOf(amount*0.01);
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java
index 78b716de3..3156b9805 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java
@@ -102,7 +102,7 @@ public class AliPayService {
NoticeLocal noticeInfo = PaymentContextLocal.get().getNoticeInfo();
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
model.setSubject(payOrder.getTitle());
- model.setOutTradeNo(String.valueOf(payOrder.getId()));
+ model.setOutTradeNo(payOrder.getOrderNo());
model.setTotalAmount(String.valueOf(amount*0.01));
// 过期时间
model.setTimeExpire(PayUtil.getAliTimeExpire(payOrder.getExpiredTime()));
@@ -136,7 +136,7 @@ public class AliPayService {
model.setSubject(payOrder.getTitle());
model.setProductCode(QUICK_MSECURITY_PAY);
- model.setOutTradeNo(String.valueOf(payOrder.getId()));
+ model.setOutTradeNo(payOrder.getOrderNo());
// 过期时间
model.setTimeExpire(PayUtil.getAliTimeExpire(payOrder.getExpiredTime()));
model.setTotalAmount(String.valueOf(amount*0.01));
@@ -160,7 +160,7 @@ public class AliPayService {
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.setSubject(payOrder.getTitle());
- model.setOutTradeNo(String.valueOf(payOrder.getId()));
+ model.setOutTradeNo(payOrder.getOrderNo());
// 过期时间
model.setTimeExpire(PayUtil.getAliTimeExpire(payOrder.getExpiredTime()));
model.setTotalAmount(String.valueOf(amount*0.01));
@@ -190,7 +190,7 @@ public class AliPayService {
public String qrCodePay(int amount, PayOrder payOrder, AliPayConfig alipayConfig) {
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
model.setSubject(payOrder.getTitle());
- model.setOutTradeNo(String.valueOf(payOrder.getId()));
+ model.setOutTradeNo(payOrder.getOrderNo());
model.setTotalAmount(String.valueOf(amount*0.01));
// 过期时间
@@ -215,7 +215,7 @@ public class AliPayService {
AlipayTradePayModel model = new AlipayTradePayModel();
model.setSubject(payOrder.getTitle());
- model.setOutTradeNo(String.valueOf(payOrder.getId()));
+ model.setOutTradeNo(payOrder.getOrderNo());
model.setScene(AliPayCode.BAR_CODE);
model.setAuthCode(aliPayParam.getAuthCode());
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java
index 01c3f78b8..d9884e214 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java
@@ -48,7 +48,7 @@ public class AliPaySyncService {
// 查询
try {
AlipayTradeQueryModel queryModel = new AlipayTradeQueryModel();
- queryModel.setOutTradeNo(String.valueOf(payOrder.getId()));
+ queryModel.setOutTradeNo(payOrder.getOrderNo());
AlipayTradeQueryResponse response = AliPayApi.tradeQueryToResponse(queryModel);
String tradeStatus = response.getTradeStatus();
syncResult.setSyncInfo(JSONUtil.toJsonStr(response));
@@ -103,7 +103,7 @@ public class AliPaySyncService {
// 退款请求号
queryModel.setOutRequestNo(String.valueOf(refundOrder.getId()));
// 商户订单号
- queryModel.setOutTradeNo(String.valueOf(refundOrder.getPaymentId()));
+ queryModel.setOutTradeNo(String.valueOf(refundOrder.getRefundNo()));
// 设置返回退款完成时间
queryModel.setQueryOptions(Collections.singletonList(GMT_REFUND_PAY));
AlipayTradeFastpayRefundQueryResponse response = AliPayApi.tradeRefundQueryToResponse(queryModel);
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayRefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayRefundService.java
index c0956ef7a..d3e2de664 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayRefundService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayRefundService.java
@@ -36,7 +36,7 @@ public class UnionPayRefundService {
BigDecimal orderAmount = BigDecimal.valueOf(channelOrder.getAmount() * 0.01);
UnionRefundOrder unionRefundOrder = new UnionRefundOrder();
- unionRefundOrder.setRefundNo(String.valueOf(refundOrder.getId()));
+ unionRefundOrder.setRefundNo(refundOrder.getRefundNo());
unionRefundOrder.setTradeNo(String.valueOf(payOrder.getGatewayOrderNo()));
unionRefundOrder.setRefundAmount(refundAmount);
unionRefundOrder.setTotalAmount(orderAmount);
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayService.java
index 685fbbbd2..090b433a0 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayService.java
@@ -103,7 +103,7 @@ public class UnionPayService {
Date expiredTime = DateUtil.date(payOrder.getExpiredTime());
UnionPayOrder unionPayOrder = new UnionPayOrder();
- unionPayOrder.setOutTradeNo(String.valueOf(payOrder.getId()));
+ unionPayOrder.setOutTradeNo(payOrder.getOrderNo());
unionPayOrder.setSubject(payOrder.getTitle());
unionPayOrder.setPrice(amount);
unionPayOrder.setExpirationTime(expiredTime);
@@ -118,7 +118,7 @@ public class UnionPayService {
Date expiredTime = DateUtil.date(payOrder.getExpiredTime());
UnionPayOrder unionPayOrder = new UnionPayOrder();
- unionPayOrder.setOutTradeNo(String.valueOf(payOrder.getId()));
+ unionPayOrder.setOutTradeNo(payOrder.getOrderNo());
unionPayOrder.setSubject(payOrder.getTitle());
unionPayOrder.setPrice(amount);
unionPayOrder.setExpirationTime(expiredTime);
@@ -135,7 +135,7 @@ public class UnionPayService {
UnionPayOrder unionPayOrder = new UnionPayOrder();
- unionPayOrder.setOutTradeNo(String.valueOf(payOrder.getId()));
+ unionPayOrder.setOutTradeNo(payOrder.getOrderNo());
unionPayOrder.setSubject(payOrder.getTitle());
unionPayOrder.setPrice(amount);
unionPayOrder.setExpirationTime(expiredTime);
@@ -160,7 +160,7 @@ public class UnionPayService {
Date expiredTime = DateUtil.date(payOrder.getExpiredTime());
UnionPayOrder unionPayOrder = new UnionPayOrder();
- unionPayOrder.setOutTradeNo(String.valueOf(payOrder.getId()));
+ unionPayOrder.setOutTradeNo(payOrder.getOrderNo());
unionPayOrder.setSubject(payOrder.getTitle());
unionPayOrder.setPrice(amount);
unionPayOrder.setExpirationTime(expiredTime);
@@ -175,7 +175,7 @@ public class UnionPayService {
UnionPayOrder unionPayOrder = new UnionPayOrder();
unionPayOrder.setAuthCode(authCode);
- unionPayOrder.setOutTradeNo(String.valueOf(payOrder.getId()));
+ unionPayOrder.setOutTradeNo(payOrder.getOrderNo());
unionPayOrder.setSubject(payOrder.getTitle());
unionPayOrder.setPrice(amount);
unionPayOrder.setExpirationTime(expiredTime);
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCloseService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCloseService.java
index 6508ceab2..ea2ff11ff 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCloseService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCloseService.java
@@ -37,7 +37,7 @@ public class WeChatPayCloseService {
Map params = CloseOrderModel.builder()
.appid(weChatPayConfig.getWxAppId())
.mch_id(weChatPayConfig.getWxMchId())
- .out_trade_no(String.valueOf(payOrder.getId()))
+ .out_trade_no(payOrder.getOrderNo())
.nonce_str(WxPayKit.generateStr())
.build()
.createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256);
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java
index fe6a773a9..16c6a58ad 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java
@@ -240,7 +240,7 @@ public class WeChatPayService {
// 反正v2版本的超时时间无效
.time_expire(PayUtil.getWxExpiredTime(payOrder.getExpiredTime()))
.body(payOrder.getTitle())
- .out_trade_no(String.valueOf(payOrder.getId()))
+ .out_trade_no(payOrder.getOrderNo())
.total_fee(amount)
.spbill_create_ip(NetUtil.getLocalhostStr())
.notify_url(weChatPayConfig.getNotifyUrl())
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java
index 6bef8033c..666050e42 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java
@@ -46,7 +46,7 @@ public class WechatPayRefundService {
.appid(weChatPayConfig.getWxAppId())
.mch_id(weChatPayConfig.getWxMchId())
.notify_url(weChatPayConfig.getNotifyUrl())
- .out_trade_no(String.valueOf(refundOrder.getPaymentId()))
+ .out_trade_no(String.valueOf(refundOrder.getRefundNo()))
.out_refund_no(String.valueOf(refundOrder.getId()))
.total_fee(totalFee)
.refund_fee(refundFee)
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java
index 421ec8354..e03ce874c 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java
@@ -13,6 +13,7 @@ import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal;
import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayChannelOrder;
import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder;
import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra;
+import cn.bootx.platform.daxpay.util.OrderNoGenerateUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
@@ -54,6 +55,7 @@ public class PayBuilder {
// 构建支付订单对象
return new PayOrder()
.setBusinessNo(payParam.getBusinessNo())
+ .setOrderNo(OrderNoGenerateUtil.trade())
.setTitle(payParam.getTitle())
.setStatus(PayStatusEnum.PROGRESS.getCode())
.setAmount(sumAmount)
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderMapper.java
index 96f19fff6..f6bfc6897 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderMapper.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderMapper.java
@@ -3,6 +3,9 @@ package cn.bootx.platform.daxpay.service.core.order.pay.dao;
import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* 支付订单
@@ -11,4 +14,6 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface PayOrderMapper extends BaseMapper {
+
+ int insertList(@Param("list")List list);
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java
index fb1838f5b..d38619781 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java
@@ -33,7 +33,7 @@ import java.time.LocalDateTime;
public class PayChannelOrder extends MpCreateEntity implements EntityBaseFunction {
@DbColumn(comment = "支付id")
- private Long paymentId;
+ private String paymentId;
@DbColumn(comment = "异步支付方式")
private boolean async;
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java
index dcbfe8b8b..8455b5d25 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java
@@ -36,6 +36,9 @@ public class PayOrder extends MpBaseEntity implements EntityBaseFunction {
/** 原支付id */
- @DbColumn(comment = "原支付id")
- private Long paymentId;
+ @DbColumn(comment = "原支付订单号")
+ private String orderNo;
+
/** 原支付业务号 */
@DbColumn(comment = "原支付业务号")
@@ -49,6 +50,8 @@ public class RefundOrder extends MpBaseEntity implements EntityBaseFunctionr.setRefundId(refundOrder.getId()));
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java
index 1a819f5d8..5ea3e7d2f 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java
@@ -247,7 +247,7 @@ public class RefundService {
// 构建策略
List refundChannels = refundChannelOrderManager
.findAllByRefundId(refundOrder.getId());
- PayOrder payOrder = payOrderService.findById(refundOrder.getPaymentId())
+ PayOrder payOrder = payOrderService.findById(refundOrder.getId())
.orElseThrow(() -> new DataNotExistException("未查找到支付订单"));
List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getId());
Map orderChannelMap = payChannelOrders.stream()
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java
index 7e5fce7e7..f9f91aff0 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java
@@ -73,10 +73,10 @@ public class RefundRepairService {
}
try {
// 获取关联支付单
- PayOrder payOrder = payOrderQueryService.findById(refundOrder.getPaymentId())
+ PayOrder payOrder = payOrderQueryService.findById(refundOrder.getId())
.orElseThrow(() -> new RuntimeException("支付单不存在"));
// 关联支付通道支付单
- Map payChannelOrderMap = payChannelOrderManager.findAllByPaymentId(refundOrder.getPaymentId())
+ Map payChannelOrderMap = payChannelOrderManager.findAllByPaymentId(refundOrder.getId())
.stream()
.collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainLatest));
// 异步通道退款单
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java
index 4e457f5ad..3bc60eb3a 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java
@@ -55,7 +55,7 @@ public abstract class AbsPayStrategy implements PayStrategy{
*/
public void generateChannelOrder() {
PayChannelOrder payChannelOrder = PayBuilder.buildPayChannelOrder(this.getPayChannelParam());
- payChannelOrder.setPaymentId(this.getOrder().getId());
+ payChannelOrder.setPaymentId(this.getOrder().getOrderNo());
this.channelOrder = payChannelOrder;
}
diff --git a/daxpay-single/daxpay-single-service/src/main/resources/mapper/PayOrderMapper.xml b/daxpay-single/daxpay-single-service/src/main/resources/mapper/PayOrderMapper.xml
new file mode 100644
index 000000000..7b254595a
--- /dev/null
+++ b/daxpay-single/daxpay-single-service/src/main/resources/mapper/PayOrderMapper.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ insert into pay_order (id,`status`,`version`,`deleted`)
+ values
+
+ (#{item.id,jdbcType=BIGINT},
+ #{item.status,jdbcType=VARCHAR},
+ #{item.version,jdbcType=INTEGER},
+ #{item.deleted,jdbcType=BIT})
+
+
+
+
\ No newline at end of file
diff --git a/daxpay-single/daxpay-single-start/pom.xml b/daxpay-single/daxpay-single-start/pom.xml
index e38bd3e5b..16637edac 100644
--- a/daxpay-single/daxpay-single-start/pom.xml
+++ b/daxpay-single/daxpay-single-start/pom.xml
@@ -40,7 +40,15 @@
daxpay-single-demo
${daxpay.version}
-
+
+ junit
+ junit
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
daxpay-start
diff --git a/daxpay-single/daxpay-single-start/src/test/java/SprintBootAppTest.java b/daxpay-single/daxpay-single-start/src/test/java/SprintBootAppTest.java
new file mode 100644
index 000000000..1792ac530
--- /dev/null
+++ b/daxpay-single/daxpay-single-start/src/test/java/SprintBootAppTest.java
@@ -0,0 +1,43 @@
+import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayOrderMapper;
+import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder;
+import cn.bootx.platform.daxpay.start.DaxpaySingleStart;
+import cn.hutool.core.util.IdUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = DaxpaySingleStart.class)
+@WebAppConfiguration
+public class SprintBootAppTest {
+
+ @Resource
+ private PayOrderMapper payOrderMapper;
+
+ @Test
+ public void test2() {
+ long time = System.currentTimeMillis();
+ for (int a = 0; a < 10; a++) {
+ List list = new ArrayList<>();
+ for (int i = 0; i <= 5000; i++) {
+ PayOrder payOrder = new PayOrder();
+ payOrder.setVersion(1);
+ payOrder.setDeleted(false);
+ payOrder.setStatus("fail");
+ payOrder.setId(IdUtil.getSnowflakeNextId());
+ list.add(payOrder);
+ }
+ payOrderMapper.insertList(list);
+ }
+ log.info("耗时:{}秒", (double) (System.currentTimeMillis() - time) / 1000);
+
+ }
+}