-- 字典表
CREATE TABLE IF NOT EXISTS `t_sys_dict` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `name` VARCHAR(50) NOT NULL COMMENT '字典名称',
    `code` VARCHAR(50) NOT NULL COMMENT '字典编码（在租户内唯一）',
    `description` VARCHAR(200) DEFAULT NULL COMMENT '字典描述',
    `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_code` (`tenant_id`, `code`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_code` (`code`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典表';

-- 字典项表
CREATE TABLE IF NOT EXISTS `t_sys_dict_item` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `dict_id` BIGINT NOT NULL COMMENT '字典 ID',
    `label` VARCHAR(100) NOT NULL COMMENT '字典项标签',
    `value` VARCHAR(100) NOT NULL COMMENT '字典项值',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `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`),
    KEY `idx_dict_id` (`dict_id`),
    KEY `idx_sort` (`sort`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典项表';

-- 初始化基础字典数据
INSERT INTO `t_sys_dict` (`tenant_id`, `name`, `code`, `description`, `valid_state`) VALUES
(1, '性别', 'gender', '性别字典', 1),
(1, '用户类型', 'user_type', '用户类型字典', 1),
(1, '账号状态', 'user_status', '账号状态字典', 1)
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

INSERT INTO `t_sys_dict_item` (`dict_id`, `label`, `value`, `sort`, `valid_state`) VALUES
(1, '男', 'male', 1, 1),
(1, '女', 'female', 2, 1),
(2, '成人', 'adult', 1, 1),
(2, '儿童', 'child', 2, 1),
(3, '启用', 'enabled', 1, 1),
(3, '禁用', 'disabled', 2, 1)
ON DUPLICATE KEY UPDATE `label` = VALUES(`label`);
