70 lines
3.4 KiB
SQL
70 lines
3.4 KiB
SQL
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
||
-- 弹窗配置是 App 启动/回前台读取的轻量运营配置;图片可为空,展示周期由客户端本地频控执行。
|
||
SET @now_ms = CAST(UNIX_TIMESTAMP(UTC_TIMESTAMP(3)) * 1000 AS UNSIGNED);
|
||
|
||
CREATE TABLE IF NOT EXISTS admin_app_popups (
|
||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID',
|
||
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
|
||
code VARCHAR(80) NOT NULL COMMENT '弹窗编码,用于客户端本地频控和埋点识别',
|
||
name VARCHAR(80) NOT NULL COMMENT '弹窗名称',
|
||
image_url VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '弹窗图片 URL,可为空',
|
||
jump_type VARCHAR(16) NOT NULL COMMENT '跳转类型:h5 或 app',
|
||
jump_url VARCHAR(2048) NOT NULL DEFAULT '' COMMENT '跳转地址',
|
||
display_period_days INT NOT NULL DEFAULT 0 COMMENT '展示周期天数,0 表示每次打开都展示',
|
||
status VARCHAR(24) NOT NULL DEFAULT 'active' COMMENT '业务状态',
|
||
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序权重,数值越小越靠前',
|
||
starts_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '生效开始时间,UTC epoch ms',
|
||
ends_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '生效结束时间,UTC epoch ms',
|
||
created_at_ms BIGINT NOT NULL COMMENT '创建时间,UTC epoch ms',
|
||
updated_at_ms BIGINT NOT NULL COMMENT '更新时间,UTC epoch ms',
|
||
UNIQUE KEY uk_admin_app_popups_code (app_code, code),
|
||
INDEX idx_admin_app_popups_app_sort (app_code, status, sort_order, id),
|
||
INDEX idx_admin_app_popups_window (app_code, status, starts_at_ms, ends_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='后台 App 弹窗配置表';
|
||
|
||
-- 开发阶段如果已经执行过旧版 049,这里补齐 code 列,并用历史 ID 生成稳定默认值,避免多个空 code 破坏唯一索引。
|
||
SET @ddl := IF(
|
||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'admin_app_popups' AND COLUMN_NAME = 'code') = 0,
|
||
'ALTER TABLE admin_app_popups ADD COLUMN code VARCHAR(80) NOT NULL DEFAULT '''' COMMENT ''弹窗编码,用于客户端本地频控和埋点识别'' AFTER app_code',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
UPDATE admin_app_popups
|
||
SET code = CONCAT('popup-', id)
|
||
WHERE code = '';
|
||
|
||
SET @ddl := IF(
|
||
(SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'admin_app_popups' AND INDEX_NAME = 'uk_admin_app_popups_code') = 0,
|
||
'ALTER TABLE admin_app_popups ADD UNIQUE KEY uk_admin_app_popups_code (app_code, code)',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
INSERT INTO admin_menus (parent_id, title, code, path, icon, permission_code, sort, visible, created_at_ms, updated_at_ms)
|
||
SELECT parent.id, '弹窗配置', 'app-config-popups', '/app-config/popups', 'image', 'app-config:view', 69, TRUE, @now_ms, @now_ms
|
||
FROM admin_menus parent
|
||
WHERE parent.code = 'app-config'
|
||
ON DUPLICATE KEY UPDATE
|
||
parent_id = VALUES(parent_id),
|
||
title = VALUES(title),
|
||
path = VALUES(path),
|
||
icon = VALUES(icon),
|
||
permission_code = VALUES(permission_code),
|
||
sort = VALUES(sort),
|
||
visible = VALUES(visible),
|
||
updated_at_ms = @now_ms;
|
||
|
||
UPDATE admin_menus
|
||
SET sort = 70, updated_at_ms = @now_ms
|
||
WHERE code = 'app-config-explore' AND sort < 70;
|
||
|
||
UPDATE admin_menus
|
||
SET sort = 72, updated_at_ms = @now_ms
|
||
WHERE code = 'app-config-versions' AND sort < 72;
|