fix(worker): 售后追缴自动驳回提现并扣冻结资金,修复欠款抵扣 500
- 修复欠款抵扣 SQL 参数类型冲突(debt_amount = $1 与 $1 = 0 推断不一致), 此前手动偿还、验收报酬抵扣、充值/押金解冻/寄卖自动抵扣都会 500 - 追缴顺序改为 待解冻押金 → 提现冻结 → 可用余额 → 欠款: 驳回待审核提现并直接扣走冻结资金,扣不完的部分退回可用余额 - 迁移 109:售后单记录 withdraw_deduction_amount,补 pending 提现部分索引 - 新增流水类型 after_sales_withdraw_deduction,前后端展示与标签同步 - 提现驳回退回余额后补调欠款自动抵扣,与充值/结算/解冻/寄卖路径对齐 - 补追缴分配单测与 SQL 参数类型静态门禁
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
-- 109_after_sales_withdraw_deduction.sql
|
||||
--
|
||||
-- 售后追缴要能把「提现冻结中」的钱一并扣掉。
|
||||
--
|
||||
-- 背景:追缴原本只扣「待解冻押金 + 可用余额」,打手在验收后立刻申请提现,
|
||||
-- 钱就从可用余额挪进 frozen_withdraw_amount,追缴只能扣到零头,剩下挂欠款;
|
||||
-- 而提现驳回后钱回到可用余额,也不会再抵扣。生产 case AS4f0566f0a192 即为此:
|
||||
-- 追缴 75.15,实扣 0.35,1 分 27 秒后提现被驳回,75.00 停留在可用余额。
|
||||
--
|
||||
-- 现在的口径:追缴按 待解冻押金 → 提现冻结 → 可用余额 → 欠款 依次扣,
|
||||
-- 动到提现冻结时自动把对应提现申请置为 rejected(备注写明是售后追缴驳回)。
|
||||
|
||||
ALTER TABLE worker_after_sales_cases
|
||||
ADD COLUMN IF NOT EXISTS withdraw_deduction_amount BIGINT NOT NULL DEFAULT 0;
|
||||
|
||||
COMMENT ON COLUMN worker_after_sales_cases.withdraw_deduction_amount IS
|
||||
'本单从「提现冻结」中扣走的金额(同时会驳回对应提现申请)';
|
||||
|
||||
-- 追缴时需要按打手捞 pending 提现申请并加行锁,补一个部分索引。
|
||||
CREATE INDEX IF NOT EXISTS idx_worker_finance_requests_worker_pending_withdraw
|
||||
ON worker_finance_requests (worker_id, created_at, id)
|
||||
WHERE request_type = 'withdraw' AND status = 'pending';
|
||||
Reference in New Issue
Block a user