-- 资源虚拟支付：简版多规格迁移
-- 前置条件：已经执行 sql/virtual_pay_resource.sql。
-- 约定：app_resource_list 的每一行就是一个可单独购买的规格。
-- 执行前请备份数据库。

ALTER TABLE app_resource_list
    ADD COLUMN price_fen INT NOT NULL DEFAULT 0 COMMENT '规格价格，单位分' AFTER password,
    ADD COLUMN status TINYINT NOT NULL DEFAULT 1 COMMENT '1启用 0停用' AFTER price_fen,
    ADD COLUMN sort_order INT NOT NULL DEFAULT 0 COMMENT '显示顺序' AFTER status;

-- 现有付费资源的下载项继承原资源价格；非付费资源价格保持0。
UPDATE app_resource_list rl
INNER JOIN app_resource r ON r.id = rl.app_resource_id
SET rl.price_fen = r.price_fen
WHERE r.is_ad = 3 AND rl.price_fen = 0;

ALTER TABLE app_virtual_order
    ADD COLUMN resource_list_id BIGINT NULL COMMENT '购买的资源规格ID，NULL表示旧版整项购买' AFTER resource_id,
    ADD COLUMN spec_name_snapshot VARCHAR(255) NULL COMMENT '下单时的规格名称快照' AFTER resource_list_id,
    ADD KEY idx_virtual_order_resource_list (resource_list_id);

ALTER TABLE app_resource_entitlement
    ADD COLUMN resource_list_id BIGINT NULL COMMENT '解锁的资源规格ID，NULL表示旧版整项权益' AFTER resource_id,
    DROP INDEX uk_resource_entitlement_user_resource,
    ADD UNIQUE KEY uk_entitlement_user_resource_spec (user_id, resource_id, resource_list_id),
    ADD KEY idx_entitlement_resource_list (resource_list_id);

-- 旧订单和旧权益保留 resource_list_id=NULL，继续拥有整项资源访问权限。
-- 新订单必须写入具体 resource_list_id，只解锁所购买的规格。
