You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.4 KiB
57 lines
2.4 KiB
-- 只读账务核查 SQL,不自动修正数据。
|
|
|
|
-- 用户余额与统一账务净额核对。
|
|
SELECT
|
|
u.id AS user_id,
|
|
u.traffic_balance AS snapshot_bytes,
|
|
COALESCE(SUM(CASE WHEN l.direction = 'credit' THEN l.amount_bytes ELSE -l.amount_bytes END), 0) AS ledger_net_bytes,
|
|
u.traffic_balance - COALESCE(SUM(CASE WHEN l.direction = 'credit' THEN l.amount_bytes ELSE -l.amount_bytes END), 0) AS difference_bytes
|
|
FROM `user` u
|
|
LEFT JOIN traffic_ledger l ON l.account_type = 'user' AND l.account_id = u.id
|
|
GROUP BY u.id, u.traffic_balance
|
|
HAVING difference_bytes <> 0;
|
|
|
|
-- 平台资源池与采购、平台消费流水核对。
|
|
SELECT
|
|
p.id AS pool_id,
|
|
p.total_bytes,
|
|
p.available_bytes,
|
|
p.consumed_bytes,
|
|
COALESCE((SELECT SUM(total_bytes) FROM platform_resource_purchase WHERE status <> 'cancelled'), 0) AS purchased_bytes,
|
|
COALESCE((SELECT SUM(amount_bytes) FROM traffic_ledger WHERE account_type = 'platform' AND direction = 'debit'), 0) AS ledger_consumed_bytes,
|
|
p.total_bytes - COALESCE((SELECT SUM(total_bytes) FROM platform_resource_purchase WHERE status <> 'cancelled'), 0) AS purchase_difference_bytes,
|
|
p.consumed_bytes - COALESCE((SELECT SUM(amount_bytes) FROM traffic_ledger WHERE account_type = 'platform' AND direction = 'debit'), 0) AS consumption_difference_bytes
|
|
FROM platform_resource_pool p;
|
|
|
|
-- 充值订单与充值流水核对。
|
|
SELECT
|
|
o.id AS order_id,
|
|
o.user_id,
|
|
o.pay_status,
|
|
o.credit_status,
|
|
o.amount_bytes,
|
|
l.id AS ledger_id,
|
|
l.amount_bytes AS ledger_amount_bytes,
|
|
l.idempotency_key
|
|
FROM traffic_order o
|
|
LEFT JOIN traffic_ledger l ON l.id = o.credit_ledger_id
|
|
WHERE o.pay_status = 'paid'
|
|
AND (o.credit_status <> 'credited' OR l.id IS NULL OR l.direction <> 'credit' OR l.amount_bytes <> o.amount_bytes);
|
|
|
|
-- 直播计费段中未完成结算的记录。
|
|
SELECT id, session_id, user_id, period_start, period_end, bytes, status, idempotency_key
|
|
FROM live_billing_segment
|
|
WHERE status <> 'settled'
|
|
ORDER BY created_at ASC, id ASC;
|
|
|
|
-- 下载记录与下载消费流水核对。
|
|
SELECT
|
|
d.id AS download_id,
|
|
d.user_id,
|
|
d.video_id,
|
|
d.bytes,
|
|
l.id AS ledger_id,
|
|
l.amount_bytes AS ledger_amount_bytes
|
|
FROM download_log d
|
|
LEFT JOIN traffic_ledger l ON l.idempotency_key = CONCAT('download:', d.idempotency_key, ':user')
|
|
WHERE l.id IS NULL OR l.direction <> 'debit' OR l.amount_bytes <> d.bytes;
|
|
|