35 lines
1.9 KiB
SQL
35 lines
1.9 KiB
SQL
SET @daily_chat_limit_exists=(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='membership_plans' AND COLUMN_NAME='daily_active_chat_limit');
|
|
SET @daily_chat_limit_sql=IF(@daily_chat_limit_exists=0,'ALTER TABLE membership_plans ADD COLUMN daily_active_chat_limit INT UNSIGNED NOT NULL DEFAULT 20 AFTER duration_days','SELECT 1');
|
|
PREPARE daily_chat_limit_stmt FROM @daily_chat_limit_sql;
|
|
EXECUTE daily_chat_limit_stmt;
|
|
DEALLOCATE PREPARE daily_chat_limit_stmt;
|
|
|
|
UPDATE membership_plans
|
|
SET daily_active_chat_limit=CASE WHEN level>=2 THEN 100 ELSE 20 END
|
|
WHERE daily_active_chat_limit=20;
|
|
|
|
INSERT INTO system_configs(config_key,config_value,value_type,description) VALUES
|
|
('membership.free_daily_active_chat_limit','5','integer','普通用户每日可主动聊天的不同用户数,0 表示不限制')
|
|
ON DUPLICATE KEY UPDATE description=VALUES(description);
|
|
|
|
CREATE TABLE IF NOT EXISTS im_daily_active_chat_usage (
|
|
user_id BIGINT UNSIGNED NOT NULL,
|
|
usage_date DATE NOT NULL,
|
|
used_count INT UNSIGNED NOT NULL DEFAULT 0,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (user_id,usage_date),
|
|
KEY idx_daily_chat_usage_date (usage_date)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS im_daily_active_chat_targets (
|
|
user_id BIGINT UNSIGNED NOT NULL,
|
|
target_user_id BIGINT UNSIGNED NOT NULL,
|
|
usage_date DATE NOT NULL,
|
|
conversation_id BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (user_id,target_user_id,usage_date),
|
|
KEY idx_daily_chat_target_date (target_user_id,usage_date),
|
|
KEY idx_daily_chat_conversation (conversation_id,created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|