Procházet zdrojové kódy

docs(omg-pay): T052 collation 已执行(开发者手动 CONVERT 3 表到 utf8mb4_unicode_ci)

定时补单 selectLeakOrderDdIds JOIN pos_order 不再报 Illegal mix of collations。
注:当前部署代码仍用旧 selectLeakOrderDdIds(MAX(id))+ getLatestByDdId,
id=26(已付)补单要等 T054 两段式遍历全量未付 + 部署。

Co-Authored-By: Claude <noreply@anthropic.com>
qmj před 2 týdny
rodič
revize
b637ffb848
1 změnil soubory, kde provedl 1 přidání a 1 odebrání
  1. 1 1
      specs/016-omg-payment/tasks.md

+ 1 - 1
specs/016-omg-payment/tasks.md

@@ -179,7 +179,7 @@ description: "Task list for OMG(歐買尬/FunPoint)AIO 支付接入"
 **Independent Test**: 同订单连点 create 9 次 → 只 1 条 is_active=1 活跃行(不堆积);ATM 取号后过期重新 create → 新行 + 旧行 is_active=0(虚帐仍可付,迟到 notify 落旧行 markSuccess);id=26 已付历史行迁移后 reconcile 补单核销;同门店多单未付 reconcile 不触发 OMG 403。
 
 - [x] T051 [P] **前置:parseKvResponse 重复键放宽**(`ruoyi-admin/.../utils/omg/OmgPay.java`):重复键 last-wins 不抛(用同一份 Map 重算 CheckMacValue 验签,避 kill-shot ⑥ 解析放宽与验签打架);仅整段无 `=` 或缺 CheckMacValue 才抛;`OmgPayTest` 补重复键用例。S 依赖 queryTrade 做换号/补单安全网,重复键仍抛会让安全网失效。
-- [ ] T052 **collation 对齐执行确认**:执行 `updatesql/sql.md` 2026-08-12 节(pos_order_omg_payment/pos_order_omg_refund/pos_store_omg CONVERT 到 utf8mb4_unicode_ci);执行后 `selectLeakOrderDdIds` JOIN 不再报 Illegal mix of collations。
+- [x] T052 **collation 对齐执行确认**:执行 `updatesql/sql.md` 2026-08-12 节(pos_order_omg_payment/pos_order_omg_refund/pos_store_omg CONVERT 到 utf8mb4_unicode_ci);执行后 `selectLeakOrderDdIds` JOIN 不再报 Illegal mix of collations。
 - [x] T053 **reconcile 扫描改全量未付**(`PosOrderOmgPaymentMapper.xml` + Service):`selectLeakOrderDdIds` 改 `EXISTS(任意 pay_status=0 行)` 去重 ddId(不再 MAX(id) 取一条);新增 `listUnpaidByDdId`(全量 pay_status=0,is_active 不限);`selectLatestPaidByDdId` 扩 `IN(1,3,4)`(修退款中/已退返 null);新增 `selectLatestRefundableByDdId`(pay_status IN(1,3,4))、`existsPaidByDdId`。
 - [ ] T054 **reconcileByQuery 两段式**(`OmgPayController.reconcileByQuery`):① 先 selectLatestPaidByDdId(pay_status=1 且 order.payStatus=0 → handlePaymentSuccess 自愈,L774 不能变死代码);② 否则 listUnpaidByDdId 遍历全量未付行 queryTrade:TradeStatus=1 applyPaidResult break / 0 no-op / 10200095 且 trade_no IS NULL markFail / 10200095 且 trade_no 非空 no-op。
 - [ ] T055 **三道节流闸(防 OMG 403)**(新建 queryTrade 节流组件 `ruoyi-admin/.../utils/omg/OmgQueryThrottle.java` + Redis):首查跳过 create_time<NOW()-INTERVAL 40 MINUTE;per-MerchantID 令牌桶 `omg:qt:token:{merchantId}`(1token/3s,burst1)acquire 失败 skip 本行本轮;per-ddId TTL(`omg:reconcile:dd:{ddId}` 180s / `omg:query:dd:{ddId}` 60s)。reconcileByQuery 与 /query 接入。