-- 会员代理业务 user_id 兼容升级脚本
-- 说明：
-- 1. 当前代理业务表最初按 sys_user 体系设计，user_id 为 NOT NULL。
-- 2. 会员体系接入后，会员侧业务主要依赖 member_user_id，很多写入场景不会再写 user_id。
-- 3. 因此需要将相关表的 user_id 调整为可空，避免会员新增、会员下单、钱包、静态/动态资源落库时报错。

ALTER TABLE `xxk_wallet_account`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_wallet_flow`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_proxy_order`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_proxy_order_item`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_static_proxy_asset`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_static_proxy_whitelist`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_dynamic_channel`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_dynamic_channel_traffic_log`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

ALTER TABLE `xxk_dynamic_proxy_generate_log`
    MODIFY COLUMN `user_id` BIGINT NULL COMMENT '用户ID';

-- 会员钱包账户应保持 member_user_id 唯一，避免同一会员生成多条钱包账户
ALTER TABLE `xxk_wallet_account`
    DROP INDEX `idx_xxk_wallet_account_member_user_id`,
    ADD UNIQUE INDEX `uk_xxk_wallet_account_member_user_id` (`member_user_id`);

-- 会员白名单也应按 member_user_id + whitelist_ip 去重
ALTER TABLE `xxk_static_proxy_whitelist`
    ADD UNIQUE INDEX `uk_member_whitelist_ip` (`member_user_id`, `whitelist_ip`);
