-- ============================================
-- 数据库迁移脚本：移除 device_status，迁移到 pla_account
-- 执行时间：2025-01-XX
-- 说明：
--   1. 为 pla_account 表添加 device_id 字段
--   2. 删除 device_status 表（如果存在）
--   3. 创建 account_config 表（账号配置表）
-- ============================================

-- ============================================
-- 1. 为 pla_account 表添加 device_id 字段
-- ============================================
SET @exist_device_id = (
    SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'pla_account' 
    AND COLUMN_NAME = 'device_id'
);

SET @sql_device_id = IF(@exist_device_id = 0,
    'ALTER TABLE `pla_account` 
    ADD COLUMN `device_id` VARCHAR(200) NULL DEFAULT '''' COMMENT ''设备ID'' 
    AFTER `sn_code`',
    'SELECT ''字段 device_id 已存在，跳过添加'' AS message'
);

PREPARE stmt FROM @sql_device_id;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- ============================================
-- 2. 创建 account_config 表（如果不存在）
-- ============================================
CREATE TABLE IF NOT EXISTS `account_config` (
  `account_id` INT NOT NULL COMMENT '账号ID（关联 pla_account.id）',
  `platform_type` VARCHAR(50) NOT NULL DEFAULT 'boss' COMMENT '平台类型（boss- Boss直聘, liepin- 猎聘）',
  `platform_config` JSON NULL COMMENT '平台相关配置（JSON对象）',
  `auto_deliver_config` JSON NULL COMMENT '自动投递配置（JSON对象）',
  `auto_chat_config` JSON NULL COMMENT '自动沟通配置（JSON对象）',
  `auto_active_config` JSON NULL COMMENT '自动活跃配置（JSON对象）',
  `notes` TEXT NULL DEFAULT '' COMMENT '备注',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`account_id`),
  INDEX `idx_platform_type` (`platform_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='账号配置表';

-- 如果 MySQL 版本低于 5.7，不支持 JSON 类型，可以使用以下 SQL（将 JSON 改为 TEXT）：
/*
CREATE TABLE IF NOT EXISTS `account_config` (
  `account_id` INT NOT NULL COMMENT '账号ID（关联 pla_account.id）',
  `platform_type` VARCHAR(50) NOT NULL DEFAULT 'boss' COMMENT '平台类型（boss- Boss直聘, liepin- 猎聘）',
  `platform_config` TEXT NULL COMMENT '平台相关配置（JSON对象）',
  `auto_deliver_config` TEXT NULL COMMENT '自动投递配置（JSON对象）',
  `auto_chat_config` TEXT NULL COMMENT '自动沟通配置（JSON对象）',
  `auto_active_config` TEXT NULL COMMENT '自动活跃配置（JSON对象）',
  `notes` TEXT NULL DEFAULT '' COMMENT '备注',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`account_id`),
  INDEX `idx_platform_type` (`platform_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='账号配置表';
*/

-- ============================================
-- 3. 可选：迁移 device_status 中的 device_id 到 pla_account
-- ============================================
-- 注意：此步骤只在 device_status 表存在且有数据时执行
-- 如果 device_status 表已不存在，可以跳过此步骤

-- 检查 device_status 表是否存在
SET @table_exists = (
    SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'device_status'
);

-- 如果 device_status 表存在，尝试迁移 device_id 数据
-- 注意：此迁移假设 device_status 使用 sn_code 作为主键，pla_account 也有 sn_code 字段
-- 如果结构不同，请手动调整迁移 SQL
/*
SET @sql_migrate_device_id = IF(@table_exists > 0,
    'UPDATE `pla_account` pa
     INNER JOIN `device_status` ds ON pa.sn_code = ds.sn_code
     SET pa.device_id = ds.device_id
     WHERE pa.device_id IS NULL OR pa.device_id = ''''
     AND ds.device_id IS NOT NULL AND ds.device_id != ''''',
    'SELECT ''device_status 表不存在，跳过数据迁移'' AS message'
);

PREPARE stmt FROM @sql_migrate_device_id;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
*/

-- ============================================
-- 4. 删除 device_status 表（谨慎操作！）
-- ============================================
-- ⚠️ 警告：删除表会丢失所有数据，请确保已经备份或迁移了需要的数据
-- 如果确定要删除 device_status 表，请取消下面 SQL 的注释

-- DROP TABLE IF EXISTS `device_status`;

-- 如果不想直接删除，可以重命名表作为备份：
-- RENAME TABLE `device_status` TO `device_status_backup_202501XX`;

-- ============================================
-- 注意事项
-- ============================================
-- 1. 执行前请先备份数据库
-- 2. device_id 字段允许为 NULL，旧数据可能没有 device_id
-- 3. account_config 表使用 account_id 作为主键，关联 pla_account.id
-- 4. 如果 MySQL 版本低于 5.7，请使用 TEXT 类型替代 JSON 类型
-- 5. device_status 表的删除操作是可选的，建议先重命名备份
-- 6. 如果 device_status 表不存在，相关的 SQL 会自动跳过

-- ============================================
-- 验证执行结果
-- ============================================
-- 执行以下 SQL 验证迁移结果：

-- 1. 检查 pla_account 表的 device_id 字段
-- DESCRIBE pla_account;

-- 2. 检查 account_config 表是否创建成功
-- DESCRIBE account_config;

-- 3. 检查 device_status 表是否还存在（如果已删除，此查询会报错）
-- SELECT COUNT(*) FROM device_status;

-- 4. 查看已迁移 device_id 的账号数量
-- SELECT COUNT(*) FROM pla_account WHERE device_id IS NOT NULL AND device_id != '';

