-- Active: xiaoding_tes@@192.168.110.85@3306@xiaoding_test


/* 删除设置相关表 */
DROP TABLE IF EXISTS `setting_values`;
DROP TABLE IF EXISTS `setting_permissions`;
DROP TABLE IF EXISTS `setting_items`;
DROP TABLE IF EXISTS `setting_groups`;

/* 创建设置组表 */
CREATE TABLE `setting_groups` (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT /* 主键ID */,
    `code` varchar(50) NOT NULL /* 设置组编码 */,
    `name` varchar(50) NOT NULL /* 设置组名称 */,
    `description` varchar(255) DEFAULT NULL /* 设置组描述 */,
    `sort` int NOT NULL DEFAULT 0 /* 排序 */,
    `created_at` timestamp NULL DEFAULT NULL /* 创建时间 */,
    `updated_at` timestamp NULL DEFAULT NULL /* 更新时间 */,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci /* 设置组表 */;

/* 创建设置项表 */
CREATE TABLE `setting_items` (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT /* 主键ID */,
    `group_id` bigint unsigned NOT NULL /* 设置组ID */,
    `code` varchar(50) NOT NULL /* 设置项编码 */,
    `name` varchar(50) NOT NULL /* 设置项名称 */,
    `description` varchar(255) DEFAULT NULL /* 设置项描述 */,
    `value_type` varchar(20) NOT NULL /* 值类型:string,number,boolean,json */,
    `default_value` text DEFAULT NULL /* 默认值 */,
    `min_value` decimal(10,2) DEFAULT NULL /* 最⼩值(数值类型) */,
    `max_value` decimal(10,2) DEFAULT NULL /* 最⼤值(数值类型) */,
    `options` json DEFAULT NULL /* 可选值(json格式) */,
    `sort` int NOT NULL DEFAULT 0 /* 排序 */,
    `created_at` timestamp NULL DEFAULT NULL /* 创建时间 */,
    `updated_at` timestamp NULL DEFAULT NULL /* 更新时间 */,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`),
    KEY `idx_group_id` (`group_id`),
    CONSTRAINT `fk_setting_items_group_id` FOREIGN KEY (`group_id`) REFERENCES `setting_groups` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci /* 设置项表 */;

/* 创建设置权限表 */
CREATE TABLE `setting_permissions` (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT /* 主键ID */,
    `item_id` bigint unsigned NOT NULL /* 设置项ID */,
    `object_type` varchar(20) NOT NULL /* 业务对象类型:PLATFORM,AGENT,SHOP,COACH */,
    `can_edit` tinyint(1) NOT NULL DEFAULT 0 /* 是否可编辑 */,
    `min_value` decimal(10,2) DEFAULT NULL /* 最⼩值限制 */,
    `max_value` decimal(10,2) DEFAULT NULL /* 最⼤值限制 */,
    `options` json DEFAULT NULL /* 可选值限制 */,
    `created_at` timestamp NULL DEFAULT NULL /* 创建时间 */,
    `updated_at` timestamp NULL DEFAULT NULL /* 更新时间 */,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_item_object` (`item_id`,`object_type`),
    KEY `idx_item_id` (`item_id`),
    CONSTRAINT `fk_setting_permissions_item_id` FOREIGN KEY (`item_id`) REFERENCES `setting_items` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci /* 设置权限表 */;

/* 创建设置值表 */
CREATE TABLE `setting_values` (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT /* 主键ID */,
    `item_id` bigint unsigned NOT NULL /* 设置项ID */,
    `object_type` varchar(20) NOT NULL /* 业务对象类型:PLATFORM,AGENT,SHOP,COACH */,
    `object_id` bigint unsigned NOT NULL /* 业务对象ID */,
    `value` text NOT NULL /* 设置值 */,
    `created_at` timestamp NULL DEFAULT NULL /* 创建时间 */,
    `updated_at` timestamp NULL DEFAULT NULL /* 更新时间 */,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_item_object` (`item_id`,`object_type`,`object_id`),
    KEY `idx_object` (`object_type`,`object_id`),
    CONSTRAINT `fk_setting_values_item_id` FOREIGN KEY (`item_id`) REFERENCES `setting_items` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci /* 设置值表 */;