Files
qnc-server-v3/deploy/sql/uuid_migration_simple.sql

446 lines
16 KiB
MySQL
Raw Permalink Normal View History

2025-12-13 17:44:18 +08:00
-- ============================================
-- UUID迁移脚本简化版 - 开发环境)
-- 将系统中所有bigint类型的ID字段改为CHAR(36)类型的UUID
-- 注意:此脚本直接修改表结构,不保留旧数据,适用于开发环境
-- ============================================
-- 注意user表和product表已经是CHAR(36)类型,跳过修改
-- ============================================
-- 第一部分:修改核心业务表
-- ============================================
-- user表已经是CHAR(36),跳过
-- product表已经是CHAR(36),跳过
-- order表修改主键和外键字段
ALTER TABLE `order`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- query表修改主键和外键字段
ALTER TABLE `query`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- user_auth表修改主键和外键字段注意user_id需要关联到user表的UUID
ALTER TABLE `user_auth`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD UNIQUE INDEX `uk_auth_type_key` (`auth_type`, `auth_key`) COMMENT '确保同一个认证方式只能绑定一个用户';
-- agent表修改主键和外键字段
ALTER TABLE `agent`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `team_leader_id` CHAR(36) NULL COMMENT '团队首领UUID',
MODIFY COLUMN `invite_code_id` CHAR(36) NULL COMMENT '邀请码UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD UNIQUE INDEX `uk_user_id` (`user_id`),
ADD INDEX `idx_team_leader_id` (`team_leader_id`),
ADD INDEX `idx_invite_code_id` (`invite_code_id`);
-- ============================================
-- 第二部分:修改代理相关表
-- ============================================
-- agent_commission表
ALTER TABLE `agent_commission`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- agent_invite_code表
ALTER TABLE `agent_invite_code`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NULL COMMENT '代理UUID',
MODIFY COLUMN `used_user_id` CHAR(36) NULL COMMENT '使用用户UUID',
MODIFY COLUMN `used_agent_id` CHAR(36) NULL COMMENT '使用代理UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_used_user_id` (`used_user_id`),
ADD INDEX `idx_used_agent_id` (`used_agent_id`);
-- agent_link表
ALTER TABLE `agent_link`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- agent_order表
ALTER TABLE `agent_order`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- agent_wallet表
ALTER TABLE `agent_wallet`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD UNIQUE INDEX `uk_agent_id` (`agent_id`);
-- agent_withdrawal表
ALTER TABLE `agent_withdrawal`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `wallet_id` CHAR(36) NOT NULL COMMENT '钱包UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_wallet_id` (`wallet_id`);
-- agent_withdrawal_tax表
ALTER TABLE `agent_withdrawal_tax`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `withdrawal_id` CHAR(36) NOT NULL COMMENT '提现UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_withdrawal_id` (`withdrawal_id`);
-- agent_rebate表
ALTER TABLE `agent_rebate`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- agent_relation表
ALTER TABLE `agent_relation`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `parent_agent_id` CHAR(36) NULL COMMENT '上级代理UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_parent_agent_id` (`parent_agent_id`);
-- agent_upgrade表
ALTER TABLE `agent_upgrade`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`);
-- agent_real_name表
ALTER TABLE `agent_real_name`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`);
-- agent_config表
ALTER TABLE `agent_config`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- agent_product_config表
ALTER TABLE `agent_product_config`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_product_id` (`product_id`);
-- agent_short_link表
ALTER TABLE `agent_short_link`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `invite_code_id` CHAR(36) NULL COMMENT '邀请码UUID',
MODIFY COLUMN `link_id` CHAR(36) NULL COMMENT '链接UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_invite_code_id` (`invite_code_id`),
ADD INDEX `idx_link_id` (`link_id`);
-- agent_invite_code_usage表
ALTER TABLE `agent_invite_code_usage`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `invite_code_id` CHAR(36) NOT NULL COMMENT '邀请码UUID',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_invite_code_id` (`invite_code_id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_agent_id` (`agent_id`);
-- agent_freeze_task表
ALTER TABLE `agent_freeze_task`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `agent_id` CHAR(36) NOT NULL COMMENT '代理UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `commission_id` CHAR(36) NOT NULL COMMENT '佣金UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_agent_id` (`agent_id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_commission_id` (`commission_id`);
-- ============================================
-- 第三部分:修改订单相关表
-- ============================================
-- order_refund表
ALTER TABLE `order_refund`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- ============================================
-- 第四部分:修改查询相关表
-- ============================================
-- query_cleanup_log表
ALTER TABLE `query_cleanup_log`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- query_cleanup_detail表
ALTER TABLE `query_cleanup_detail`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `cleanup_log_id` CHAR(36) NOT NULL COMMENT '清理日志UUID',
MODIFY COLUMN `query_id` CHAR(36) NOT NULL COMMENT '查询UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_cleanup_log_id` (`cleanup_log_id`),
ADD INDEX `idx_query_id` (`query_id`),
ADD INDEX `idx_order_id` (`order_id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_product_id` (`product_id`);
-- query_cleanup_config表
ALTER TABLE `query_cleanup_config`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- ============================================
-- 第五部分:修改产品相关表
-- ============================================
-- product_feature表
ALTER TABLE `product_feature`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `product_id` CHAR(36) NOT NULL COMMENT '产品UUID',
MODIFY COLUMN `feature_id` CHAR(36) NOT NULL COMMENT '功能UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_product_id` (`product_id`),
ADD INDEX `idx_feature_id` (`feature_id`);
-- feature表
ALTER TABLE `feature`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- ============================================
-- 第六部分:修改其他表
-- ============================================
-- authorization_document表
ALTER TABLE `authorization_document`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '用户UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_order_id` (`order_id`);
-- global_notifications表注意原表id是int类型
ALTER TABLE `global_notifications`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- example表
ALTER TABLE `example`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `feature_id` CHAR(36) NOT NULL COMMENT '功能UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_feature_id` (`feature_id`);
-- ============================================
-- 第七部分:修改管理后台表
-- ============================================
-- admin_user表
ALTER TABLE `admin_user`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- admin_role表
ALTER TABLE `admin_role`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- admin_menu表注意字段名是pid不是parent_id
ALTER TABLE `admin_menu`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `pid` CHAR(36) NOT NULL DEFAULT '0' COMMENT '父菜单UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_pid` (`pid`);
-- admin_api表
ALTER TABLE `admin_api`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- admin_dict_type表
ALTER TABLE `admin_dict_type`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- admin_dict_data表注意没有dict_type_id字段使用dict_type字符串
-- 此表不需要修改外键字段因为使用的是dict_type字符串而不是ID
ALTER TABLE `admin_dict_data`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
-- admin_user_role表
ALTER TABLE `admin_user_role`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT '用户UUID',
MODIFY COLUMN `role_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT '角色UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_user_id` (`user_id`),
ADD INDEX `idx_role_id` (`role_id`);
-- admin_role_menu表
ALTER TABLE `admin_role_menu`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `role_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT '角色UUID',
MODIFY COLUMN `menu_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT '菜单UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_role_id` (`role_id`),
ADD INDEX `idx_menu_id` (`menu_id`);
-- admin_role_api表
ALTER TABLE `admin_role_api`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `role_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT '角色UUID',
MODIFY COLUMN `api_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT 'API UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_role_id` (`role_id`),
ADD INDEX `idx_api_id` (`api_id`);
-- ============================================
-- 第八部分:修改推广相关表(新增)
-- ============================================
-- admin_promotion_link表
ALTER TABLE `admin_promotion_link`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `admin_user_id` CHAR(36) NOT NULL DEFAULT '0' COMMENT '推广者账号UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_admin_user_id` (`admin_user_id`);
-- admin_promotion_link_stats_history表
ALTER TABLE `admin_promotion_link_stats_history`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `link_id` CHAR(36) NOT NULL COMMENT '推广链接UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_link_id` (`link_id`);
-- admin_promotion_link_stats_total表
ALTER TABLE `admin_promotion_link_stats_total`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `link_id` CHAR(36) NOT NULL COMMENT '推广链接UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD INDEX `idx_link_id` (`link_id`);
-- admin_promotion_order表
ALTER TABLE `admin_promotion_order`
MODIFY COLUMN `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
MODIFY COLUMN `link_id` CHAR(36) NOT NULL COMMENT '推广链接UUID',
MODIFY COLUMN `order_id` CHAR(36) NOT NULL COMMENT '订单UUID',
MODIFY COLUMN `user_id` CHAR(36) NOT NULL COMMENT '下单用户UUID',
MODIFY COLUMN `admin_user_id` CHAR(36) NOT NULL COMMENT '推广者账号UUID',
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD UNIQUE INDEX `uk_order_id` (`order_id`) COMMENT '确保每个订单只有一条推广记录',
ADD INDEX `idx_link_id` (`link_id`),
ADD INDEX `idx_user_id` (`user_id`) COMMENT '优化用户查询',
ADD INDEX `idx_admin_user_id` (`admin_user_id`);
-- ============================================
-- 注意事项
-- ============================================
-- 1. 此脚本直接修改表结构,不保留旧数据
-- 2. user表和product表已经是CHAR(36)类型,已跳过
-- 3. 执行后所有ID字段都是CHAR(36)类型
-- 4. 插入新记录时需要在应用层生成UUID使用uuid.NewString()
-- 5. 如果表中有数据需要先清空数据或手动填充UUID
-- 6. 建议在开发环境先测试,确认无误后再应用到生产环境
-- 7. admin_menu表使用pid字段而不是parent_id
-- 8. admin_dict_data表使用dict_type字符串字段不是dict_type_id
-- 9. global_notifications表的id原为int类型现改为CHAR(36)