refactor(trade): 收敛网关容器与 runtime close 包结构

将 GatewayPayOrder 持久化迁入 trade.order,与 NormalPayOrder 统一为业务容器;
将 runtime.close 拆为 service.close / job / consumer,与 pay/refund/sync 对称。
This commit is contained in:
DaxPay Dev
2026-07-13 18:30:52 +08:00
parent e8f9f55b04
commit 6dcea22529
26 changed files with 59 additions and 57 deletions

View File

@@ -1,7 +1,7 @@
package cn.daxpay.open.payment.admin.controller.trade;
import cn.daxpay.open.payment.gateway.param.GatewayPayOrderQuery;
import cn.daxpay.open.payment.gateway.result.GatewayPayOrderResult;
import cn.daxpay.open.payment.trade.order.param.GatewayPayOrderQuery;
import cn.daxpay.open.payment.trade.order.result.GatewayPayOrderResult;
import cn.daxpay.open.payment.admin.service.trade.GatewayPayOrderAdminService;
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
import cn.daxpay.open.platform.core.annotation.PermCode;

View File

@@ -2,14 +2,14 @@ package cn.daxpay.open.payment.admin.service.trade;
import cn.daxpay.open.payment.common.enums.GatewayOrderStatusEnum;
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.gateway.convert.GatewayPayOrderConvert;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.convert.GatewayPayOrderConvert;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.gateway.param.GatewayPayOrderQuery;
import cn.daxpay.open.payment.gateway.result.GatewayPayOrderResult;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.order.param.GatewayPayOrderQuery;
import cn.daxpay.open.payment.trade.order.result.GatewayPayOrderResult;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.sync.PaySyncService;
import cn.daxpay.open.payment.trade.runtime.service.pay.PayUniHandleService;
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;

View File

@@ -10,7 +10,7 @@ import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.order.param.NormalPayOrderQuery;
import cn.daxpay.open.payment.trade.order.result.NormalPayOrderResult;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.sync.PaySyncService;
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

View File

@@ -10,7 +10,7 @@ import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.order.param.PayTradeQuery;
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.sync.PaySyncService;
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

View File

@@ -1,7 +1,7 @@
package cn.daxpay.open.payment.gateway.convert;
package cn.daxpay.open.payment.trade.order.convert;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.gateway.result.GatewayPayOrderResult;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.result.GatewayPayOrderResult;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

View File

@@ -1,8 +1,8 @@
package cn.daxpay.open.payment.gateway.dao;
package cn.daxpay.open.payment.trade.order.dao;
import cn.daxpay.open.payment.common.enums.GatewayOrderStatusEnum;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.gateway.param.GatewayPayOrderQuery;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.param.GatewayPayOrderQuery;
import cn.daxpay.open.platform.common.mybatisplus.impl.BaseManager;
import cn.daxpay.open.platform.common.mybatisplus.query.generator.QueryGenerator;
import cn.daxpay.open.platform.common.mybatisplus.util.MpUtil;

View File

@@ -1,6 +1,6 @@
package cn.daxpay.open.payment.gateway.dao;
package cn.daxpay.open.payment.trade.order.dao;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;

View File

@@ -1,4 +1,4 @@
package cn.daxpay.open.payment.gateway.entity;
package cn.daxpay.open.payment.trade.order.entity;
import cn.daxpay.open.payment.common.entity.MchBaseEntity;
import cn.daxpay.open.payment.common.enums.GatewayOrderStatusEnum;
@@ -20,6 +20,7 @@ import java.util.List;
/// # 网关支付业务单容器
///
/// 业务容器统一落在 trade.order NormalPayOrder 同包
/// 聚合扫码/收银台预下单场景: 创建时不知具体通道, 仅承载收款意图
/// 用户真正支付时再创建 pay_trade(trade_type=gateway) 并回填 channel/product/method
@Data

View File

@@ -19,6 +19,7 @@ import java.util.List;
/// # 普通支付业务单容器
///
/// 业务容器统一落在 trade.order与 GatewayPayOrder 等同包,纯持久化无编排 service
/// 普通支付场景的容器承载商户业务单信息bizOrderNo / 商品标题 / 回调地址 等)
/// 与 pay_trade 一对一关联trade_type = normal
/// 冗余存储金额/支付/时间线字段,便于后台查询无需 JOIN pay_trade

View File

@@ -1,4 +1,4 @@
package cn.daxpay.open.payment.gateway.param;
package cn.daxpay.open.payment.trade.order.param;
import cn.daxpay.open.platform.core.annotation.QueryParam;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package cn.daxpay.open.payment.gateway.result;
package cn.daxpay.open.payment.trade.order.result;
import cn.daxpay.open.platform.core.result.BaseResult;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,6 +1,6 @@
package cn.daxpay.open.payment.trade.runtime.close.consumer;
package cn.daxpay.open.payment.trade.runtime.consumer;
import cn.daxpay.open.payment.trade.runtime.close.service.GatewayTimeoutService;
import cn.daxpay.open.payment.trade.runtime.service.close.GatewayTimeoutService;
import cn.daxpay.open.payment.trade.runtime.mq.GatewayTimeoutMessage;
import cn.daxpay.open.payment.trade.runtime.mq.PayArtemisConstants;
import cn.daxpay.open.platform.common.json.util.JacksonUtil;

View File

@@ -1,6 +1,6 @@
package cn.daxpay.open.payment.trade.runtime.close.consumer;
package cn.daxpay.open.payment.trade.runtime.consumer;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.mq.NormalPayTimeoutMessage;
import cn.daxpay.open.payment.trade.runtime.mq.PayArtemisConstants;
import cn.daxpay.open.platform.common.json.util.JacksonUtil;

View File

@@ -1,11 +1,11 @@
package cn.daxpay.open.payment.trade.runtime.close.job;
package cn.daxpay.open.payment.trade.runtime.job;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.runtime.close.service.GatewayTimeoutService;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.close.GatewayTimeoutService;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;

View File

@@ -1,8 +1,8 @@
package cn.daxpay.open.payment.trade.runtime.close.job;
package cn.daxpay.open.payment.trade.runtime.job;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;

View File

@@ -4,8 +4,8 @@ import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager;
import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -3,10 +3,10 @@ package cn.daxpay.open.payment.trade.runtime.service.callback;
import cn.daxpay.open.payment.common.callback.CallbackData;
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.runtime.service.pay.PayUniHandleService;

View File

@@ -1,11 +1,11 @@
package cn.daxpay.open.payment.trade.runtime.close.service;
package cn.daxpay.open.payment.trade.runtime.service.close;
import cn.daxpay.open.payment.common.context.PaymentContext;
import cn.daxpay.open.payment.common.enums.GatewayOrderStatusEnum;
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.runtime.service.pay.PayUniHandleService;
import cn.hutool.core.util.StrUtil;

View File

@@ -1,4 +1,4 @@
package cn.daxpay.open.payment.trade.runtime.close.service;
package cn.daxpay.open.payment.trade.runtime.service.close;
import cn.daxpay.open.payment.common.context.PaymentContext;
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
@@ -6,10 +6,10 @@ import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.strategy.PaymentStrategyFactory;
import cn.daxpay.open.payment.strategy.pay.AbsPayCloseStrategy;
import cn.daxpay.open.payment.strategy.pay.PayStrategyContext;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.record.entity.PayCloseRecord;

View File

@@ -6,10 +6,10 @@ import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.trade.runtime.bo.PaySyncResultBo;
import cn.daxpay.open.payment.trade.runtime.bo.PayTradeResultBo;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import lombok.RequiredArgsConstructor;

View File

@@ -8,10 +8,10 @@ import cn.daxpay.open.payment.strategy.pay.PayStrategyContext;
import cn.daxpay.open.payment.strategy.sync.AbsSyncPayOrderStrategy;
import cn.daxpay.open.payment.trade.runtime.bo.PaySyncResultBo;
import cn.daxpay.open.payment.trade.runtime.service.pay.PayUniHandleService;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.NormalPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.trade.record.entity.PaySyncRecord;

View File

@@ -3,7 +3,7 @@ package cn.daxpay.open.payment.unipay.gateway.service;
import cn.daxpay.open.payment.common.enums.AggregateConfigLevelEnum;
import cn.daxpay.open.payment.common.enums.CashierSceneEnum;
import cn.daxpay.open.payment.common.enums.GatewayPayTypeEnum;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.merchant.dao.gateway.GatewayAggregateSceneManager;
import cn.daxpay.open.payment.merchant.entity.gateway.GatewayAggregateConfig;
import cn.daxpay.open.payment.merchant.entity.gateway.GatewayAggregateScene;

View File

@@ -2,9 +2,9 @@ package cn.daxpay.open.payment.unipay.gateway.service;
import cn.daxpay.open.payment.common.assist.MerchantContextLoader;
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.unipay.gateway.param.GatewayOrderQueryParam;
import cn.daxpay.open.payment.unipay.gateway.result.GatewayOrderResult;

View File

@@ -3,8 +3,8 @@ package cn.daxpay.open.payment.unipay.gateway.service;
import cn.daxpay.open.payment.common.enums.GatewayOrderStatusEnum;
import cn.daxpay.open.payment.common.enums.GatewayPayTypeEnum;
import cn.daxpay.open.payment.common.assist.MerchantContextLoader;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.runtime.service.pay.PayAssistService;
import cn.daxpay.open.payment.trade.runtime.mq.GatewayTimeoutMessage;
import cn.daxpay.open.payment.trade.runtime.mq.PayArtemisConstants;

View File

@@ -4,15 +4,15 @@ import cn.daxpay.open.payment.common.enums.GatewayOrderStatusEnum;
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
import cn.daxpay.open.payment.common.assist.MerchantContextLoader;
import cn.daxpay.open.payment.route.PayRouteFacade;
import cn.daxpay.open.payment.merchant.service.route.runtime.PayRouteService;
import cn.daxpay.open.payment.strategy.PaymentStrategyFactory;
import cn.daxpay.open.payment.strategy.pay.AbsNormalPayStrategy;
import cn.daxpay.open.payment.strategy.pay.PayStrategyContext;
import cn.daxpay.open.payment.trade.runtime.bo.PayTradeResultBo;
import cn.daxpay.open.payment.trade.runtime.service.pay.PayUniHandleService;
import cn.daxpay.open.payment.gateway.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.gateway.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
@@ -44,7 +44,7 @@ public class GatewayPayHandleService {
private final GatewayPayOrderManager gatewayPayOrderManager;
private final PayTradeManager payTradeManager;
private final PayRouteFacade payRouteFacade;
private final PayRouteService payRouteService;
private final MerchantContextLoader merchantContextLoader;
private final PayUniHandleService payUniHandleService;
private final GatewayPayAssistService gatewayPayAssistService;
@@ -95,7 +95,7 @@ public class GatewayPayHandleService {
// 组装路由用参数
NormalPayParam payParam = this.buildPayParam(order, product, method, channelMchNo, capability, openId, clientIp);
payRouteFacade.resolve(payParam);
payRouteService.resolve(payParam);
var payStrategy = PaymentStrategyFactory.createByProduct(payParam.getProduct(), AbsNormalPayStrategy.class);
var context = new PayStrategyContext().setPayParam(payParam);
payStrategy.doBeforePay(context);

View File

@@ -8,7 +8,7 @@ import cn.daxpay.open.payment.common.result.DaxResult;
import cn.daxpay.open.payment.common.util.DaxRes;
import cn.daxpay.open.payment.merchant.service.permission.MerchantPermissionService;
import cn.daxpay.open.payment.unipay.aop.PaymentVerify;
import cn.daxpay.open.payment.trade.runtime.close.service.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
import cn.daxpay.open.payment.trade.runtime.service.pay.NormalPayService;
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayCloseParam;
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;