878d5006f0
- commissionWithdrawLogic: remove upfront commission deduction; balance check now includes sum of all pending withdrawals to prevent double-spending; transaction only creates the withdrawal record (status=0) - approveWithdrawal: add FOR UPDATE lock on user row, balance check before deducting, atomic commission decrement and commission log inside one transaction; clear user cache after commit - rejectWithdrawal: remove commission refund and log — commission was never deducted on application under the new flow - add migration 02150: refund commission for existing status=0 withdrawals that were deducted under the old logic; includes rollback script Co-authored-by: multica-agent <github@multica.ai>
20 lines
746 B
SQL
20 lines
746 B
SQL
-- Rollback: re-deduct commission for users with pending (status=0) withdrawals.
|
|
-- This re-applies the OLD behaviour where commission is deducted on application.
|
|
-- Only run this if you are rolling back to the old code; do NOT run against
|
|
-- the new code or commission will be double-deducted on approval.
|
|
|
|
UPDATE `user` u
|
|
JOIN (
|
|
SELECT user_id, COALESCE(SUM(amount), 0) AS pending_total
|
|
FROM user_withdrawal
|
|
WHERE status = 0
|
|
GROUP BY user_id
|
|
) p ON u.id = p.user_id
|
|
SET u.commission = u.commission - p.pending_total
|
|
WHERE p.pending_total > 0;
|
|
|
|
-- Remove the migration log entries written by the up migration.
|
|
DELETE FROM system_log
|
|
WHERE type = 3
|
|
AND content LIKE '%migration: refund pending withdrawal commission (HIF-22)%';
|