feat: add dashboard and virtual pay enhancements

This commit is contained in:
王鹏
2026-07-29 14:34:54 +08:00
parent 2250f744d1
commit 349f1c0374
55 changed files with 3085 additions and 213 deletions

View File

@@ -0,0 +1,30 @@
-- 资源虚拟支付:同一用户、同一规格有效订单防重
-- 前置条件:已经执行 sql/virtual_pay_resource_specs.sql。
-- 执行前请先备份数据库。
-- 下面的查询必须返回空结果。
-- 如果存在结果,说明上线防重前已经产生重复待支付/已支付订单,
-- 需要先结合微信订单状态人工核对,不能直接批量关闭或删除。
SELECT user_id,
resource_id,
COALESCE(resource_list_id, 0) AS resource_list_key,
COUNT(*) AS active_order_count,
GROUP_CONCAT(order_no ORDER BY id) AS order_nos
FROM app_virtual_order
WHERE status IN (0, 1)
GROUP BY user_id, resource_id, COALESCE(resource_list_id, 0)
HAVING COUNT(*) > 1;
-- status=0待支付和 status=1已支付共用一个唯一购买键。
-- 退款或关闭后键值自动变为 NULL允许用户重新购买。
ALTER TABLE app_virtual_order
ADD COLUMN active_purchase_key VARCHAR(80)
GENERATED ALWAYS AS (
CASE
WHEN status IN (0, 1)
THEN CONCAT(user_id, ':', resource_id, ':', COALESCE(resource_list_id, 0))
ELSE NULL
END
) STORED COMMENT '待支付/已支付订单防重键' AFTER last_query_time,
ADD UNIQUE KEY uk_virtual_order_active_purchase (active_purchase_key);