yeg
2026-09-17 e528e66851ea030e3b144760ef8d5a12e752eb3f
refs
用户 yeg <1347747024@qq.com>
星期四, 九月 17, 2026 12:37 +0800
提交者 yeg <1347747024@qq.com>
星期四, 九月 17, 2026 12:37 +0800
提交e528e66851ea030e3b144760ef8d5a12e752eb3f
目录 6bef8f1b363be85e4cca6fce2cc8c9da6e6a8966 目录 | zip | gz
parent 865346eeb1293be7156e98ce091d36b5a4a270c7 查看 | 对比
feat(merchant): 新增商户端收款能力自查与手动核实接口

商户端此前没有任何接口暴露通道商户状态与最近核实时间,商户只能靠「下单被拒」感知。

- GET /api/merchant/payment-readiness:只读,不查通道;reason 直接复用下单闸门抛出的那句话,
保证页面与「下单被拒」逐字一致;只返回派生结果(ready/reason/verifiedAt/verifyAvailable/
nextVerifyAt),不下发 merchant_stat 等通道原始值。
- POST /api/merchant/payment-readiness/verify:手动查一次通道,受冷却保护。冷却用一个 UPDATE
兼做判定与占位,抢到窗口的那次才查询,成功与失败都推进冷却——capability_verified_at 失败不推进
(会被连点),updated_at 是 MySQL 的 on-update 列(会被无关 UPDATE 重置),都不能当节流依据。
- 新增列 capability_sync_until(V148,并同步进 MerchantOnboardingSchemaInitializer:
开发库 Flyway 关着,只写迁移会让本地的列永远不存在)。
- merchantVerify 刻意不加 @Transactional:冷却窗口要在通道查询之前落库,且查询不能夹在持有
该行锁的事务里。
- 两个端点放在 MerchantSettlementService 复用既有 store(principal) 门店校验,控制器不加新依赖。
2个文件已添加
4个文件已修改
294 ■■■■■ 已修改文件
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingSchemaInitializer.java 2 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessService.java 64 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantSettlementService.java 23 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantWorkController.java 8 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/resources/db/migration/V148__merchant_capability_sync_until.sql 14 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessMerchantViewTests.java 183 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史