-- ----------------------------
|
-- 会员价格配置表
|
-- ----------------------------
|
CREATE TABLE IF NOT EXISTS `tcm_member_price_config` (
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
`month_card_price` DECIMAL(10,2) NOT NULL COMMENT '月卡会员价格',
|
`month_card_days` INT NOT NULL COMMENT '月卡时长',
|
`month_card_enabled` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '月卡是否启用',
|
`quarter_card_price` DECIMAL(10,2) NOT NULL COMMENT '季卡会员价格',
|
`quarter_card_days` INT NOT NULL COMMENT '季卡时长',
|
`quarter_card_enabled` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '季卡是否启用',
|
`deleted` TINYINT(1) NOT NULL DEFAULT 0,
|
`created_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '创建人',
|
`updated_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '更新人',
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
PRIMARY KEY (`id`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员价格配置表';
|
|
SET @has_month_card_price = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'month_card_price'
|
);
|
SET @sql_add_month_card_price = IF(
|
@has_month_card_price = 0,
|
'ALTER TABLE `tcm_member_price_config` ADD COLUMN `month_card_price` DECIMAL(10,2) NOT NULL DEFAULT 69.00 COMMENT ''月卡会员价格'' AFTER `id`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_month_card_price FROM @sql_add_month_card_price;
|
EXECUTE stmt_add_month_card_price;
|
DEALLOCATE PREPARE stmt_add_month_card_price;
|
|
SET @has_month_card_days = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'month_card_days'
|
);
|
SET @sql_add_month_card_days = IF(
|
@has_month_card_days = 0,
|
'ALTER TABLE `tcm_member_price_config` ADD COLUMN `month_card_days` INT NOT NULL DEFAULT 30 COMMENT ''月卡时长'' AFTER `month_card_price`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_month_card_days FROM @sql_add_month_card_days;
|
EXECUTE stmt_add_month_card_days;
|
DEALLOCATE PREPARE stmt_add_month_card_days;
|
|
SET @has_month_card_enabled = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'month_card_enabled'
|
);
|
SET @sql_add_month_card_enabled = IF(
|
@has_month_card_enabled = 0,
|
'ALTER TABLE `tcm_member_price_config` ADD COLUMN `month_card_enabled` TINYINT(1) NOT NULL DEFAULT 1 COMMENT ''月卡是否启用'' AFTER `month_card_days`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_month_card_enabled FROM @sql_add_month_card_enabled;
|
EXECUTE stmt_add_month_card_enabled;
|
DEALLOCATE PREPARE stmt_add_month_card_enabled;
|
|
SET @has_quarter_card_price = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'quarter_card_price'
|
);
|
SET @sql_add_quarter_card_price = IF(
|
@has_quarter_card_price = 0,
|
'ALTER TABLE `tcm_member_price_config` ADD COLUMN `quarter_card_price` DECIMAL(10,2) NOT NULL DEFAULT 199.00 COMMENT ''季卡会员价格'' AFTER `month_card_enabled`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_quarter_card_price FROM @sql_add_quarter_card_price;
|
EXECUTE stmt_add_quarter_card_price;
|
DEALLOCATE PREPARE stmt_add_quarter_card_price;
|
|
SET @has_quarter_card_days = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'quarter_card_days'
|
);
|
SET @sql_add_quarter_card_days = IF(
|
@has_quarter_card_days = 0,
|
'ALTER TABLE `tcm_member_price_config` ADD COLUMN `quarter_card_days` INT NOT NULL DEFAULT 90 COMMENT ''季卡时长'' AFTER `quarter_card_price`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_quarter_card_days FROM @sql_add_quarter_card_days;
|
EXECUTE stmt_add_quarter_card_days;
|
DEALLOCATE PREPARE stmt_add_quarter_card_days;
|
|
SET @has_quarter_card_enabled = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'quarter_card_enabled'
|
);
|
SET @sql_add_quarter_card_enabled = IF(
|
@has_quarter_card_enabled = 0,
|
'ALTER TABLE `tcm_member_price_config` ADD COLUMN `quarter_card_enabled` TINYINT(1) NOT NULL DEFAULT 1 COMMENT ''季卡是否启用'' AFTER `quarter_card_days`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_quarter_card_enabled FROM @sql_add_quarter_card_enabled;
|
EXECUTE stmt_add_quarter_card_enabled;
|
DEALLOCATE PREPARE stmt_add_quarter_card_enabled;
|
|
SET @has_legacy_member_price_columns = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME IN ('tier_one_days', 'tier_one_original_price', 'tier_one_sale_price', 'tier_two_days', 'tier_two_original_price', 'tier_two_sale_price')
|
);
|
|
SET @member_price_migration_sql = IF(
|
@has_legacy_member_price_columns = 6,
|
'UPDATE `tcm_member_price_config`
|
SET
|
`month_card_price` = CASE
|
WHEN `month_card_price` IS NULL OR `month_card_price` <= 0 THEN COALESCE(`tier_one_sale_price`, `tier_one_original_price`, 69.00)
|
ELSE `month_card_price`
|
END,
|
`month_card_days` = CASE
|
WHEN `month_card_days` IS NULL OR `month_card_days` <= 0 THEN COALESCE(`tier_one_days`, 30)
|
ELSE `month_card_days`
|
END,
|
`quarter_card_price` = CASE
|
WHEN `quarter_card_price` IS NULL OR `quarter_card_price` <= 0 THEN COALESCE(`tier_two_sale_price`, `tier_two_original_price`, 199.00)
|
ELSE `quarter_card_price`
|
END,
|
`quarter_card_days` = CASE
|
WHEN `quarter_card_days` IS NULL OR `quarter_card_days` <= 0 THEN COALESCE(`tier_two_days`, 90)
|
ELSE `quarter_card_days`
|
END',
|
'SELECT 1'
|
);
|
|
PREPARE member_price_migration_stmt FROM @member_price_migration_sql;
|
EXECUTE member_price_migration_stmt;
|
DEALLOCATE PREPARE member_price_migration_stmt;
|
|
SET @has_tier_one_name = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_one_name'
|
);
|
SET @sql_drop_tier_one_name = IF(
|
@has_tier_one_name = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_one_name`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_one_name FROM @sql_drop_tier_one_name;
|
EXECUTE stmt_drop_tier_one_name;
|
DEALLOCATE PREPARE stmt_drop_tier_one_name;
|
|
SET @has_tier_one_days = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_one_days'
|
);
|
SET @sql_drop_tier_one_days = IF(
|
@has_tier_one_days = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_one_days`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_one_days FROM @sql_drop_tier_one_days;
|
EXECUTE stmt_drop_tier_one_days;
|
DEALLOCATE PREPARE stmt_drop_tier_one_days;
|
|
SET @has_tier_one_original_price = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_one_original_price'
|
);
|
SET @sql_drop_tier_one_original_price = IF(
|
@has_tier_one_original_price = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_one_original_price`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_one_original_price FROM @sql_drop_tier_one_original_price;
|
EXECUTE stmt_drop_tier_one_original_price;
|
DEALLOCATE PREPARE stmt_drop_tier_one_original_price;
|
|
SET @has_tier_one_sale_price = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_one_sale_price'
|
);
|
SET @sql_drop_tier_one_sale_price = IF(
|
@has_tier_one_sale_price = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_one_sale_price`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_one_sale_price FROM @sql_drop_tier_one_sale_price;
|
EXECUTE stmt_drop_tier_one_sale_price;
|
DEALLOCATE PREPARE stmt_drop_tier_one_sale_price;
|
|
SET @has_tier_two_name = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_two_name'
|
);
|
SET @sql_drop_tier_two_name = IF(
|
@has_tier_two_name = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_two_name`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_two_name FROM @sql_drop_tier_two_name;
|
EXECUTE stmt_drop_tier_two_name;
|
DEALLOCATE PREPARE stmt_drop_tier_two_name;
|
|
SET @has_tier_two_days = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_two_days'
|
);
|
SET @sql_drop_tier_two_days = IF(
|
@has_tier_two_days = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_two_days`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_two_days FROM @sql_drop_tier_two_days;
|
EXECUTE stmt_drop_tier_two_days;
|
DEALLOCATE PREPARE stmt_drop_tier_two_days;
|
|
SET @has_tier_two_original_price = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_two_original_price'
|
);
|
SET @sql_drop_tier_two_original_price = IF(
|
@has_tier_two_original_price = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_two_original_price`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_two_original_price FROM @sql_drop_tier_two_original_price;
|
EXECUTE stmt_drop_tier_two_original_price;
|
DEALLOCATE PREPARE stmt_drop_tier_two_original_price;
|
|
SET @has_tier_two_sale_price = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_price_config'
|
AND COLUMN_NAME = 'tier_two_sale_price'
|
);
|
SET @sql_drop_tier_two_sale_price = IF(
|
@has_tier_two_sale_price = 1,
|
'ALTER TABLE `tcm_member_price_config` DROP COLUMN `tier_two_sale_price`',
|
'SELECT 1'
|
);
|
PREPARE stmt_drop_tier_two_sale_price FROM @sql_drop_tier_two_sale_price;
|
EXECUTE stmt_drop_tier_two_sale_price;
|
DEALLOCATE PREPARE stmt_drop_tier_two_sale_price;
|
|
-- ----------------------------
|
-- 会员介绍配置主表
|
-- ----------------------------
|
CREATE TABLE IF NOT EXISTS `tcm_member_intro_config` (
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
`module_count` INT NOT NULL DEFAULT 0 COMMENT '模块数量',
|
`description` TEXT DEFAULT NULL COMMENT '会员权益说明',
|
`deleted` TINYINT(1) NOT NULL DEFAULT 0,
|
`created_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '创建人',
|
`updated_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '更新人',
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
PRIMARY KEY (`id`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员介绍配置主表';
|
|
SET @has_member_intro_description = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_intro_config'
|
AND COLUMN_NAME = 'description'
|
);
|
SET @sql_add_member_intro_description = IF(
|
@has_member_intro_description = 0,
|
'ALTER TABLE `tcm_member_intro_config` ADD COLUMN `description` TEXT DEFAULT NULL COMMENT ''会员权益说明'' AFTER `module_count`',
|
'SELECT 1'
|
);
|
PREPARE stmt_add_member_intro_description FROM @sql_add_member_intro_description;
|
EXECUTE stmt_add_member_intro_description;
|
DEALLOCATE PREPARE stmt_add_member_intro_description;
|
|
UPDATE `tcm_member_intro_config`
|
SET `description` = COALESCE(`description`, '')
|
WHERE `description` IS NULL;
|
|
-- ----------------------------
|
-- 会员介绍图文模块表
|
-- ----------------------------
|
CREATE TABLE IF NOT EXISTS `tcm_member_intro_item` (
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
`config_id` BIGINT UNSIGNED NOT NULL COMMENT '配置ID',
|
`image_url` VARCHAR(255) NOT NULL COMMENT '权益图标',
|
`description` VARCHAR(16) NOT NULL COMMENT '权益名称',
|
`sort` INT NOT NULL DEFAULT 1 COMMENT '排序',
|
`deleted` TINYINT(1) NOT NULL DEFAULT 0,
|
`created_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '创建人',
|
`updated_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '更新人',
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
PRIMARY KEY (`id`),
|
KEY `idx_member_intro_item_config_sort` (`config_id`, `sort`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员介绍图文模块表';
|
|
SET @has_member_intro_item_description = (
|
SELECT COUNT(1)
|
FROM information_schema.COLUMNS
|
WHERE TABLE_SCHEMA = DATABASE()
|
AND TABLE_NAME = 'tcm_member_intro_item'
|
AND COLUMN_NAME = 'description'
|
);
|
|
SET @sql_fill_member_intro_description = IF(
|
@has_member_intro_item_description = 1,
|
'UPDATE `tcm_member_intro_config` config
|
LEFT JOIN (
|
SELECT
|
`config_id`,
|
GROUP_CONCAT(TRIM(`description`) ORDER BY `sort`, `id` SEPARATOR ''\n'') AS `legacy_description`
|
FROM `tcm_member_intro_item`
|
WHERE `deleted` = 0
|
AND `description` IS NOT NULL
|
AND TRIM(`description`) <> ''''
|
GROUP BY `config_id`
|
) legacy_item ON legacy_item.`config_id` = config.`id`
|
SET config.`description` = CASE
|
WHEN (config.`description` IS NULL OR TRIM(config.`description`) = '''')
|
AND legacy_item.`legacy_description` IS NOT NULL
|
THEN legacy_item.`legacy_description`
|
ELSE config.`description`
|
END
|
WHERE config.`deleted` = 0',
|
'SELECT 1'
|
);
|
PREPARE stmt_fill_member_intro_description FROM @sql_fill_member_intro_description;
|
EXECUTE stmt_fill_member_intro_description;
|
DEALLOCATE PREPARE stmt_fill_member_intro_description;
|
|
SET @sql_normalize_member_intro_item_name = IF(
|
@has_member_intro_item_description = 1,
|
'UPDATE `tcm_member_intro_item`
|
SET `description` = CASE
|
WHEN `description` IS NULL OR TRIM(`description`) = '''' THEN CONCAT(''权益'', `id`)
|
ELSE LEFT(
|
TRIM(
|
REPLACE(
|
REPLACE(
|
REPLACE(`description`, CHAR(13), ''''),
|
CHAR(10), ''''
|
),
|
CHAR(9), ''''
|
)
|
),
|
16
|
)
|
END
|
WHERE `deleted` = 0',
|
'SELECT 1'
|
);
|
PREPARE stmt_normalize_member_intro_item_name FROM @sql_normalize_member_intro_item_name;
|
EXECUTE stmt_normalize_member_intro_item_name;
|
DEALLOCATE PREPARE stmt_normalize_member_intro_item_name;
|
|
SET @sql_modify_member_intro_item_description = IF(
|
@has_member_intro_item_description = 1,
|
'ALTER TABLE `tcm_member_intro_item` MODIFY COLUMN `description` VARCHAR(16) NOT NULL COMMENT ''权益名称''',
|
'SELECT 1'
|
);
|
PREPARE stmt_modify_member_intro_item_description FROM @sql_modify_member_intro_item_description;
|
EXECUTE stmt_modify_member_intro_item_description;
|
DEALLOCATE PREPARE stmt_modify_member_intro_item_description;
|
|
UPDATE `tcm_member_intro_config` config
|
LEFT JOIN (
|
SELECT `config_id`, COUNT(1) AS `module_count`
|
FROM `tcm_member_intro_item`
|
WHERE `deleted` = 0
|
GROUP BY `config_id`
|
) item_stat ON item_stat.`config_id` = config.`id`
|
SET config.`module_count` = COALESCE(item_stat.`module_count`, 0)
|
WHERE config.`deleted` = 0;
|