From aad9f2c3b0c9de725b5482e339261ab4c9681efb Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Mon, 20 Jul 2026 09:50:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(payment):=20checkSandboxOnStartup=20?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E5=90=AF=E5=8A=A8=E6=97=A5=E5=BF=97,=20?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E7=94=9F=E4=BA=A7/=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 部署级沙箱隔离方案配套: 通过 sandbox-enabled 全局开关识别部署环境类型, 启动时打明显日志便于运维巡检: - sandbox-enabled=true (测试/开发环境): 打 WARN 提示「禁止用于生产部署」 - sandbox-enabled=false (生产环境): 打 INFO 提示「数据保证为生产数据」 若有产品 activeEnv=sandbox, 同步提示强制重置的产品数 --- .../masterdata/product/PayProductConfigService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/masterdata/product/PayProductConfigService.java b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/masterdata/product/PayProductConfigService.java index f4b3a2322..4e864bae3 100644 --- a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/masterdata/product/PayProductConfigService.java +++ b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/masterdata/product/PayProductConfigService.java @@ -99,10 +99,14 @@ public class PayProductConfigService { /// /// 注意: 通道商户的 sandbox 字段固化为创建时的快照, 此处不级联回写。 /// 重置后若存量 sandbox=true 的商户与产品当前 prod 环境不匹配, 路由层会按环境过滤将其排除。 + /// + /// 部署规范: 生产环境必须配置 daxpay.platform.config.sandbox-enabled=false; + /// 测试/开发环境才允许 sandbox-enabled=true 用于沙箱联调。 @EventListener(ApplicationReadyEvent.class) @Transactional(rollbackFor = Exception.class) public void checkSandboxOnStartup() { if (platformConfigProperties.isSandboxEnabled()) { + log.warn("⚠️ 沙箱环境已全局启用 (daxpay.platform.config.sandbox-enabled=true) → 当前为测试/开发环境, 切勿用于生产部署"); return; } List sandboxConfigs = payProductConfigManager.lambdaQuery() @@ -112,10 +116,8 @@ public class PayProductConfigService { config.setActiveEnv(PayEnvEnum.PROD.getCode()); payProductConfigManager.updateById(config); } - if (!sandboxConfigs.isEmpty()) { - log.info("沙箱环境已禁用(daxpay.platform.config.sandbox-enabled=false), {} 个产品从 sandbox 重置为 prod", - sandboxConfigs.size()); - } + log.info("✓ 沙箱环境已全局禁用 (daxpay.platform.config.sandbox-enabled=false) → 生产模式启动, 数据保证为生产数据{}", + sandboxConfigs.isEmpty() ? "" : ", 已将 " + sandboxConfigs.size() + " 个产品从 sandbox 强制重置为 prod"); } /// PayProduct + 库表 + 策略合并为配置结果