-- ========================================
-- 多多畅职平台 - 完整数据库初始化SQL脚本
-- ========================================
-- 使用说明：
-- 1. 在Navicat中使用root或管理员账号连接MySQL
-- 2. 打开此SQL文件，点击"运行"执行整个脚本
-- 3. 执行完成后即可使用
-- ========================================

-- 创建数据库
CREATE DATABASE IF NOT EXISTS `ddcz_platform`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE `ddcz_platform`;

-- ========================================
-- 表1: users（用户表）
-- ========================================
CREATE TABLE IF NOT EXISTS `users` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    `username` VARCHAR(50) NOT NULL COMMENT '用户名',
    `password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希',
    `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
    `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
    `role` ENUM('user', 'admin') NOT NULL DEFAULT 'user' COMMENT '用户角色',
    `status` ENUM('active', 'inactive', 'banned') NOT NULL DEFAULT 'active' COMMENT '账号状态',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `last_login` TIMESTAMP NULL DEFAULT NULL COMMENT '最后登录时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_username` (`username`),
    UNIQUE KEY `unique_email` (`email`),
    UNIQUE KEY `unique_phone` (`phone`),
    KEY `idx_username` (`username`),
    KEY `idx_email` (`email`),
    KEY `idx_role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

-- ========================================
-- 表2: user_profiles（用户资料表）
-- ========================================
CREATE TABLE IF NOT EXISTS `user_profiles` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '资料ID',
    `user_id` INT NOT NULL COMMENT '用户ID',
    `real_name` VARCHAR(50) DEFAULT NULL COMMENT '真实姓名',
    `gender` ENUM('male', 'female', 'other') DEFAULT NULL COMMENT '性别',
    `birth_date` DATE DEFAULT NULL COMMENT '出生日期',
    `id_card` VARCHAR(18) DEFAULT NULL COMMENT '身份证号',
    `education` VARCHAR(50) DEFAULT NULL COMMENT '学历',
    `major` VARCHAR(100) DEFAULT NULL COMMENT '专业',
    `school` VARCHAR(100) DEFAULT NULL COMMENT '学校',
    `graduation_year` YEAR DEFAULT NULL COMMENT '毕业年份',
    `city` VARCHAR(50) DEFAULT NULL COMMENT '所在城市',
    `address` TEXT DEFAULT NULL COMMENT '详细地址',
    `avatar_url` VARCHAR(255) DEFAULT NULL COMMENT '头像URL',
    `resume_url` VARCHAR(255) DEFAULT NULL COMMENT '简历URL',
    `self_intro` TEXT DEFAULT NULL COMMENT '自我介绍',
    `skills` TEXT DEFAULT NULL COMMENT '技能标签（JSON数组）',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_user_id` (`user_id`),
    KEY `idx_user_id` (`user_id`),
    CONSTRAINT `fk_profile_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户资料表';

-- ========================================
-- 表3: job_applications（投递记录表）
-- ========================================
CREATE TABLE IF NOT EXISTS `job_applications` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '投递记录ID',
    `user_id` INT NOT NULL COMMENT '用户ID',
    `job_type` ENUM('transition', 'referral') NOT NULL COMMENT '岗位类型：transition-过渡岗位, referral-内推岗位',
    `job_name` VARCHAR(100) NOT NULL COMMENT '岗位名称',
    `company_name` VARCHAR(100) NOT NULL COMMENT '企业名称',
    `company_short_name` VARCHAR(50) DEFAULT NULL COMMENT '企业简称',
    `city` VARCHAR(50) DEFAULT NULL COMMENT '城市',
    `province` VARCHAR(50) DEFAULT NULL COMMENT '省份',
    `segment_name` VARCHAR(100) DEFAULT NULL COMMENT '业务板块名称',
    `status` ENUM('pending', 'reviewing', 'interviewed', 'offered', 'rejected', 'withdrawn') NOT NULL DEFAULT 'pending' COMMENT '投递状态',
    `application_data` JSON DEFAULT NULL COMMENT '投递详细数据（岗位详情JSON）',
    `applied_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '投递时间',
    `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `notes` TEXT DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_job_type` (`job_type`),
    KEY `idx_status` (`status`),
    KEY `idx_applied_at` (`applied_at`),
    CONSTRAINT `fk_application_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='投递记录表';

-- ========================================
-- 表4: favorites（收藏表）
-- ========================================
CREATE TABLE IF NOT EXISTS `favorites` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
    `user_id` INT NOT NULL COMMENT '用户ID',
    `favorite_type` ENUM('company', 'job') NOT NULL COMMENT '收藏类型',
    `company_name` VARCHAR(100) DEFAULT NULL COMMENT '企业名称',
    `job_name` VARCHAR(100) DEFAULT NULL COMMENT '岗位名称',
    `favorite_data` JSON DEFAULT NULL COMMENT '收藏详细数据',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_type` (`favorite_type`),
    UNIQUE KEY `unique_favorite` (`user_id`, `favorite_type`, `company_name`, `job_name`),
    CONSTRAINT `fk_favorite_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收藏表';

-- ========================================
-- 插入默认管理员账号
-- ========================================
-- 注意：密码哈希需要在Node.js中生成
-- 默认密码：admin123456
-- 这里使用bcrypt哈希后的值（rounds=10）
INSERT INTO `users` (`username`, `password_hash`, `email`, `role`, `status`)
VALUES (
    'admin',
    '$2a$10$YourBcryptHashWillBeGeneratedByNodeJS',
    'admin@ddcz.com',
    'admin',
    'active'
) ON DUPLICATE KEY UPDATE `username` = `username`;

-- ========================================
-- 授予权限（如果需要）
-- ========================================
-- 如果您使用的是root账号创建的数据库，需要给 ddcz_bitmap 授权
-- GRANT ALL PRIVILEGES ON `ddcz_platform`.* TO 'ddcz_bitmap'@'%';
-- FLUSH PRIVILEGES;

-- ========================================
-- 验证表创建
-- ========================================
SELECT '✅ 数据库创建完成！' AS message;
SHOW TABLES;
SELECT '✅ 以上是已创建的表' AS message;

-- 查看users表结构
DESC `users`;
