feat(distribution): 通道费改主站承担,并按冷却期自动释放结算

利润不再扣支付通道费;站点可配置结算冷却期,到期自动入账,已释放后退款从收款站钱包回冲。同时修复当日自动批次无法追加、三方回冲打错钱包,以及测试库自增重置被 MySQL 统计缓存跳过的问题。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
yml2213
2026-09-10 17:11:58 +08:00
co-authored by Cursor
parent 47ceb53c09
commit 647fdc0b4a
24 changed files with 1399 additions and 129 deletions
@@ -0,0 +1,30 @@
-- +goose Up
-- 分销站点结算冷却期:订单完成后 N 天自动释放到可提现余额,0 表示立即释放。
ALTER TABLE distribution_sites
ADD COLUMN settlement_hold_days INT NOT NULL DEFAULT 7 COMMENT '订单完成后结算释放冷却天数,0=立即释放';
-- 财务快照记录释放时间:release_at 为订单完成时间 + 站点冷却期,released_at 为实际入账时间。
ALTER TABLE distribution_order_financials
ADD COLUMN release_at DATETIME(6) NULL COMMENT '预计释放时间(订单完成时间+站点冷却期)',
ADD COLUMN released_at DATETIME(6) NULL COMMENT '实际释放入账时间',
ADD KEY idx_distribution_financial_release (settlement_status, release_at);
-- 回填历史已完成订单的释放时间,使其纳入自动释放。
UPDATE distribution_order_financials f
JOIN rental_orders ro ON ro.id = f.order_id
JOIN distribution_sites s ON s.id = f.site_id
SET f.release_at = DATE_ADD(COALESCE(ro.settled_at, f.created_at), INTERVAL s.settlement_hold_days DAY)
WHERE f.settlement_status = 'pending'
AND f.release_at IS NULL
AND ro.status = 'completed';
-- +goose Down
ALTER TABLE distribution_order_financials
DROP KEY idx_distribution_financial_release,
DROP COLUMN released_at,
DROP COLUMN release_at;
ALTER TABLE distribution_sites
DROP COLUMN settlement_hold_days;