-- =====================================================
-- 雪花算法ID改造 - 数据库表结构变更脚本
-- 执行时间: 请在低峰期执行
-- 影响范围: 54张表的主键ID字段
-- =====================================================

-- 说明: 
-- 1. 将所有表的id字段从 AUTO_INCREMENT 改为普通 BIGINT
-- 2. 雪花算法ID由MyBatis-Plus在应用层生成,不再依赖数据库自增
-- 3. 执行前请务必备份数据库!

-- 核心业务表
ALTER TABLE t_user MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_order MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_order_item MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_order_goods MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_product MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_device MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_shop MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_device_inventory MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_account MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_fund_log MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 营销相关表
ALTER TABLE t_marketing_activity MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_coupon_template MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_user_coupon MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_coupon_product MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_coupon_shop MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_coupon_distribute MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_timed_discount_activity MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_timed_discount_device MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_timed_discount_product MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_timed_discount_shop MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_timed_discount_record MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_timed_discount_statistics MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_activity_device MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_activity_product MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_activity_shop MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 库存相关表
ALTER TABLE t_stock_record MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stock_record_item MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_inventory_log MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stocker MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
-- 注意: t_shop_replenisher 表已被 V2 独立补货员体系取代,即将 DROP
-- ALTER TABLE t_shop_replenisher MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 日志记录表
ALTER TABLE t_operation_log MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_door_record MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_sync_log MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_sync_record MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_dict_log MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_price_adjustment_log MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_new_product_apply MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_checkin_record MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 系统管理表
ALTER TABLE t_admin MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_role MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_data_permission MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_role_permission MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_dict_type MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_dict_data MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 邀请相关表
ALTER TABLE t_invite_activity MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_invite_record MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_invite_reward MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 统计表
ALTER TABLE t_marketing_statistics MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stat_category_daily MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stat_device_daily MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stat_product_daily MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stat_shop_daily MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';
ALTER TABLE t_stat_user_repurchase MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- 其他表
ALTER TABLE t_announcement MODIFY COLUMN id BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)';

-- =====================================================
-- 验证SQL - 执行后可运行以下SQL确认修改成功
-- =====================================================

-- 检查是否还有AUTO_INCREMENT的id字段(应该返回0条记录)
SELECT TABLE_NAME, COLUMN_NAME, EXTRA
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'haha' 
  AND COLUMN_NAME = 'id'
  AND EXTRA = 'auto_increment';

-- 查看所有表的id字段类型(应该都是bigint且没有auto_increment)
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'haha' 
  AND COLUMN_NAME = 'id'
ORDER BY TABLE_NAME;

-- =====================================================
-- 回滚SQL - 如需回滚,可执行以下SQL恢复AUTO_INCREMENT
-- =====================================================

-- 回滚示例(以t_user为例):
-- ALTER TABLE t_user MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID';

-- 批量生成回滚SQL:
-- SELECT CONCAT(
--     'ALTER TABLE ', TABLE_NAME, 
--     ' MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT ''', COLUMN_COMMENT, ''';'
-- ) AS rollback_sql
-- FROM information_schema.COLUMNS
-- WHERE TABLE_SCHEMA = 'haha' 
--   AND COLUMN_NAME = 'id'
--   AND EXTRA = '';
