-- 用户表
CREATE TABLE IF NOT EXISTS `t_sys_user` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `username` VARCHAR(50) NOT NULL COMMENT '用户名（在租户内唯一）',
    `password` VARCHAR(100) NOT NULL COMMENT '密码（加密存储）',
    `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称',
    `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱（在租户内唯一，可选）',
    `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号（全局唯一，用于手机号登录）',
    `wx_openid` VARCHAR(100) DEFAULT NULL COMMENT '微信 OpenID',
    `wx_unionid` VARCHAR(100) DEFAULT NULL COMMENT '微信 UnionID',
    `user_source` VARCHAR(50) DEFAULT 'admin_created' COMMENT '用户来源：admin_created/self_registered/child_migrated',
    `user_type` VARCHAR(20) DEFAULT 'adult' COMMENT '用户类型：adult/child',
    `city` VARCHAR(50) DEFAULT NULL COMMENT '所在城市',
    `birthday` DATE DEFAULT NULL COMMENT '出生日期',
    `gender` VARCHAR(10) DEFAULT NULL COMMENT '性别：male-男，female-女',
    `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像 URL',
    `organization` VARCHAR(100) DEFAULT NULL COMMENT '所属单位（用于评委等独立用户）',
    `status` VARCHAR(20) DEFAULT 'enabled' COMMENT '账号状态：enabled-启用，disabled-停用',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_tenant_username` (`tenant_id`, `username`),
    UNIQUE KEY `uk_tenant_email` (`tenant_id`, `email`),
    UNIQUE KEY `uk_phone` (`phone`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_user_type` (`user_type`),
    KEY `idx_user_source` (`user_source`),
    KEY `idx_status` (`status`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

-- 用户角色关联表
CREATE TABLE IF NOT EXISTS `t_auth_user_role` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `user_id` BIGINT NOT NULL COMMENT '用户 ID',
    `role_id` BIGINT NOT NULL COMMENT '角色 ID',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';

-- 初始化管理员账户（密码为 admin123，使用 bcrypt 加密）
INSERT INTO `t_sys_user` (`tenant_id`, `username`, `password`, `nickname`, `status`, `valid_state`)
VALUES (1, 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lqkkO9QS3TzCjH3rS', '管理员', 'enabled', 1)
ON DUPLICATE KEY UPDATE `username` = VALUES(`username`);
