暂存一下,防止丢失
This commit is contained in:
@@ -1,66 +1,12 @@
|
||||
BEGIN;
|
||||
-- 本脚本已停用。
|
||||
--
|
||||
-- 原实现会直接修改代理主钱包余额,绕过 Wallet Application、Domain Ledger、
|
||||
-- 幂等资金流水和 Outbox,因此在信用钱包切换后不再允许执行。
|
||||
-- 如需清理代理主钱包余额,必须先建立具有稳定业务单号的受控 Application 用例,
|
||||
-- 并在同一事务内写入权威资金流水与可靠事件;禁止恢复本文件中的历史直写逻辑。
|
||||
|
||||
-- 锁定代理主钱包,确认余额和冻结余额
|
||||
SELECT *
|
||||
FROM tb_agent_wallet
|
||||
WHERE shop_id = :shop_id
|
||||
AND wallet_type = 'main'
|
||||
AND deleted_at IS NULL
|
||||
FOR UPDATE;
|
||||
|
||||
-- 确认 frozen_balance = 0 且 balance > 0 后执行
|
||||
INSERT INTO tb_agent_wallet_transaction (
|
||||
agent_wallet_id,
|
||||
shop_id,
|
||||
user_id,
|
||||
transaction_type,
|
||||
amount,
|
||||
balance_before,
|
||||
balance_after,
|
||||
status,
|
||||
reference_type,
|
||||
reference_id,
|
||||
remark,
|
||||
metadata,
|
||||
creator,
|
||||
shop_id_tag,
|
||||
enterprise_id_tag,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
id,
|
||||
shop_id,
|
||||
:operator_user_id,
|
||||
'deduct',
|
||||
-balance,
|
||||
balance,
|
||||
0,
|
||||
1,
|
||||
NULL,
|
||||
NULL,
|
||||
'平台清理代理预充值剩余余额,历史消费流水保留',
|
||||
jsonb_build_object('reason', 'clear_agent_main_wallet_balance'),
|
||||
:operator_user_id,
|
||||
shop_id_tag,
|
||||
enterprise_id_tag,
|
||||
NOW(),
|
||||
NOW()
|
||||
FROM tb_agent_wallet
|
||||
WHERE shop_id = :shop_id
|
||||
AND wallet_type = 'main'
|
||||
AND deleted_at IS NULL
|
||||
AND balance > 0
|
||||
AND frozen_balance = 0;
|
||||
|
||||
UPDATE tb_agent_wallet
|
||||
SET balance = 0,
|
||||
version = version + 1,
|
||||
updated_at = NOW()
|
||||
WHERE shop_id = :shop_id
|
||||
AND wallet_type = 'main'
|
||||
AND deleted_at IS NULL
|
||||
AND balance > 0
|
||||
AND frozen_balance = 0;
|
||||
|
||||
COMMIT;
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE EXCEPTION '代理主钱包直写清理脚本已停用,请使用受控 Wallet Application 用例';
|
||||
END
|
||||
$$;
|
||||
|
||||
Reference in New Issue
Block a user