|
@@ -8,30 +8,61 @@
|
|
|
-- ============================================
|
|
-- ============================================
|
|
|
|
|
|
|
|
-- 1. 签到配置表字段变更(保留旧字段兼容,增加新字段)
|
|
-- 1. 签到配置表字段变更(保留旧字段兼容,增加新字段)
|
|
|
-ALTER TABLE `t_checkin_config`
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `start_time` DATETIME DEFAULT NULL COMMENT '活动开始时间' AFTER `enabled`,
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `end_time` DATETIME DEFAULT NULL COMMENT '活动结束时间' AFTER `start_time`,
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `reward_level` VARCHAR(20) NOT NULL DEFAULT 'PRO' COMMENT '奖励会员等级' AFTER `reward_type`,
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `max_reward_count` INT NOT NULL DEFAULT 3 COMMENT '每用户最多领取次数' AFTER `continuous_cap`,
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `cycle_mode` VARCHAR(20) NOT NULL DEFAULT 'FRI_THU' COMMENT '周期模式默认值' AFTER `max_reward_count`,
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `required_days` INT NOT NULL DEFAULT 4 COMMENT '周期需签到天数默认值' AFTER `cycle_mode`,
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `reward_mode` VARCHAR(20) NOT NULL DEFAULT 'CUMULATIVE' COMMENT '达标模式:CUMULATIVE-累计/CONSECUTIVE-连续' AFTER `required_days`;
|
|
|
|
|
-
|
|
|
|
|
--- 更新已有默认配置
|
|
|
|
|
-UPDATE `t_checkin_config` SET
|
|
|
|
|
- `start_time` = COALESCE(`start_time`, '2026-07-10 00:00:00'),
|
|
|
|
|
- `end_time` = COALESCE(`end_time`, '2026-07-31 23:59:59'),
|
|
|
|
|
- `reward_level` = COALESCE(`reward_level`, 'PRO'),
|
|
|
|
|
- `max_reward_count` = COALESCE(`max_reward_count`, 3),
|
|
|
|
|
- `cycle_mode` = COALESCE(`cycle_mode`, 'FRI_THU'),
|
|
|
|
|
- `required_days` = COALESCE(`required_days`, 4),
|
|
|
|
|
- `reward_mode` = COALESCE(`reward_mode`, 'CUMULATIVE')
|
|
|
|
|
-WHERE `id` = 1;
|
|
|
|
|
-
|
|
|
|
|
--- 2. 签到记录表新增 period_id 字段
|
|
|
|
|
-ALTER TABLE `t_checkin_record`
|
|
|
|
|
- ADD COLUMN IF NOT EXISTS `period_id` BIGINT DEFAULT NULL COMMENT '所属周期ID' AFTER `checkin_date`,
|
|
|
|
|
- ADD INDEX IF NOT EXISTS `idx_period` (`period_id`);
|
|
|
|
|
|
|
+-- start_time
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'start_time');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `start_time` DATETIME DEFAULT NULL COMMENT '活动开始时间' AFTER `enabled`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+-- end_time
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'end_time');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `end_time` DATETIME DEFAULT NULL COMMENT '活动结束时间' AFTER `start_time`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+-- reward_level
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'reward_level');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `reward_level` VARCHAR(20) NOT NULL DEFAULT 'PRO' COMMENT '奖励会员等级' AFTER `reward_type`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+-- max_reward_count
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'max_reward_count');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `max_reward_count` INT NOT NULL DEFAULT 3 COMMENT '每用户最多领取次数' AFTER `continuous_cap`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+-- cycle_mode
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'cycle_mode');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `cycle_mode` VARCHAR(20) NOT NULL DEFAULT 'FRI_THU' COMMENT '周期模式默认值' AFTER `max_reward_count`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+-- required_days
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'required_days');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `required_days` INT NOT NULL DEFAULT 4 COMMENT '周期需签到天数默认值' AFTER `cycle_mode`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+-- reward_mode
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_config' AND COLUMN_NAME = 'reward_mode');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_config` ADD COLUMN `reward_mode` VARCHAR(20) NOT NULL DEFAULT 'CUMULATIVE' COMMENT '达标模式:CUMULATIVE-累计/CONSECUTIVE-连续' AFTER `required_days`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+-- 2. 签到记录表新增 period_id 字段及索引
|
|
|
|
|
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_record' AND COLUMN_NAME = 'period_id');
|
|
|
|
|
+SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_checkin_record` ADD COLUMN `period_id` BIGINT DEFAULT NULL COMMENT '所属周期ID' AFTER `checkin_date`", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
+
|
|
|
|
|
+SET @idx_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_checkin_record' AND INDEX_NAME = 'idx_period');
|
|
|
|
|
+SET @sql = IF(@idx_exists = 0, "ALTER TABLE `t_checkin_record` ADD INDEX `idx_period` (`period_id`)", 'SELECT 1');
|
|
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
|
|
|
|
|
-- 3. 新建签到周期表
|
|
-- 3. 新建签到周期表
|
|
|
CREATE TABLE IF NOT EXISTS `t_checkin_period` (
|
|
CREATE TABLE IF NOT EXISTS `t_checkin_period` (
|