b6b5bccde6
Build docker and publish / build (20.15.1) (push) Failing after 8m20s
Co-authored-by: multica-agent <github@multica.ai>
46 lines
1.6 KiB
SQL
46 lines
1.6 KiB
SQL
-- Migration: refund commission for existing pending (status=0) withdrawals
|
|
--
|
|
-- Under the old logic, commission was deducted when a withdrawal was submitted.
|
|
-- Under the new logic, commission is only deducted on approval.
|
|
-- This migration refunds the deducted amounts back to each user so that
|
|
-- the system is in a consistent state before the new code is deployed.
|
|
--
|
|
-- Idempotency: the UPDATE only touches rows whose commission would need
|
|
-- to increase, and each execution produces the same result because
|
|
-- COALESCE(SUM(amount),0) is deterministic given the same pending set.
|
|
-- Running this script multiple times is safe only if no new pending
|
|
-- withdrawals are created between runs; deploy new code immediately after.
|
|
|
|
-- Step 1: refund commission for all users with pending withdrawals.
|
|
UPDATE `user` u
|
|
JOIN (
|
|
SELECT user_id, COALESCE(SUM(amount), 0) AS pending_total
|
|
FROM withdrawals
|
|
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;
|
|
|
|
-- Step 2: write a migration log entry for each refunded user.
|
|
INSERT INTO system_log (type, date, object_id, content, created_at)
|
|
SELECT
|
|
3 AS type,
|
|
DATE(NOW()) AS date,
|
|
p.user_id AS object_id,
|
|
JSON_OBJECT(
|
|
'type', 99,
|
|
'amount', p.pending_total,
|
|
'order_no', '',
|
|
'timestamp', UNIX_TIMESTAMP(NOW()) * 1000,
|
|
'note', 'migration: refund pending withdrawal commission (HIF-22)'
|
|
) AS content,
|
|
NOW() AS created_at
|
|
FROM (
|
|
SELECT user_id, COALESCE(SUM(amount), 0) AS pending_total
|
|
FROM withdrawals
|
|
WHERE status = 0
|
|
GROUP BY user_id
|
|
HAVING pending_total > 0
|
|
) p;
|