feat(database): 为 cms_website 表新增发布管理相关字段
- 添加发布状态、定价模式和订阅周期字段 - 新增应用简介、详细说明和应用截图字段 - 增加安装次数、评分及审核相关字段 - 提供幂等的 SQL 脚本,支持重复执行 - 兼容 MySQL 5.7 和 8.0,支持存储过程逐列判断添加字段 - 适用于生产环境,执行前建议备份 cms_website 表
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
-- 为 cms_website 表新增发布管理相关字段(幂等版,可重复执行)
|
||||
-- 适用于生产环境:1Panel-mysql-Bqdt:3306 / modules
|
||||
-- 执行前请确认已连接正确的数据库,并建议先备份 cms_website 表
|
||||
|
||||
ALTER TABLE `cms_website`
|
||||
ADD COLUMN IF NOT EXISTS `publish_status` VARCHAR(20) NULL DEFAULT 'developing' COMMENT '发布状态: developing开发中 pending_review待审核 published已上架 rejected审核未通过 deprecated已下架' AFTER `market`,
|
||||
ADD COLUMN IF NOT EXISTS `price_type` VARCHAR(20) NULL COMMENT '定价模式: free免费 one_time一次性 subscription订阅' AFTER `publish_status`,
|
||||
ADD COLUMN IF NOT EXISTS `subscription_period` VARCHAR(10) NULL COMMENT '订阅周期: month按月 year按年' AFTER `price_type`,
|
||||
ADD COLUMN IF NOT EXISTS `app_description` VARCHAR(500) NULL COMMENT '应用简介(市场展示用)' AFTER `subscription_period`,
|
||||
ADD COLUMN IF NOT EXISTS `detail_description` TEXT NULL COMMENT '详细说明(富文本)' AFTER `app_description`,
|
||||
ADD COLUMN IF NOT EXISTS `screenshots` TEXT NULL COMMENT '应用截图(JSON数组字符串)' AFTER `detail_description`,
|
||||
ADD COLUMN IF NOT EXISTS `install_count` INT NULL DEFAULT 0 COMMENT '安装/使用次数' AFTER `screenshots`,
|
||||
ADD COLUMN IF NOT EXISTS `rating` DECIMAL(3,1) NULL DEFAULT 0.0 COMMENT '评分(1-5)' AFTER `install_count`,
|
||||
ADD COLUMN IF NOT EXISTS `reject_reason` VARCHAR(500) NULL COMMENT '审核拒绝原因' AFTER `rating`,
|
||||
ADD COLUMN IF NOT EXISTS `publish_apply_time` DATETIME NULL COMMENT '提交审核时间' AFTER `reject_reason`,
|
||||
ADD COLUMN IF NOT EXISTS `publish_time` DATETIME NULL COMMENT '正式发布上架时间' AFTER `publish_apply_time`,
|
||||
ADD COLUMN IF NOT EXISTS `reviewer_id` INT NULL COMMENT '审核人用户ID' AFTER `publish_time`,
|
||||
ADD COLUMN IF NOT EXISTS `review_time` DATETIME NULL COMMENT '审核操作时间' AFTER `reviewer_id`;
|
||||
|
||||
-- 校验:确认 13 个字段已就位(应为 13 行)
|
||||
-- SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
||||
-- WHERE TABLE_SCHEMA = 'modules' AND TABLE_NAME = 'cms_website'
|
||||
-- AND COLUMN_NAME IN ('publish_status','price_type','subscription_period','app_description','detail_description','screenshots','install_count','rating','reject_reason','publish_apply_time','publish_time','reviewer_id','review_time');
|
||||
@@ -0,0 +1,56 @@
|
||||
-- cms_website 发布字段迁移(幂等版,兼容 MySQL 5.7 / 8.0)
|
||||
-- 通过存储过程逐列判断,已存在则跳过,可重复执行
|
||||
-- 注意:本脚本使用 DELIMITER,需在支持该语法的客户端执行
|
||||
-- (mysql CLI、Navicat、MySQL Workbench 等);
|
||||
-- 若用 1Panel 网页 SQL 控制台(不支持 DELIMITER),请改跑 cms_website_publish.sql(一次性)。
|
||||
|
||||
DELIMITER $$
|
||||
|
||||
DROP PROCEDURE IF EXISTS `add_cms_website_publish_columns`$$
|
||||
CREATE PROCEDURE `add_cms_website_publish_columns`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='publish_status') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `publish_status` VARCHAR(20) NULL DEFAULT 'developing' COMMENT '发布状态: developing开发中 pending_review待审核 published已上架 rejected审核未通过 deprecated已下架' AFTER `market`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='price_type') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `price_type` VARCHAR(20) NULL COMMENT '定价模式: free免费 one_time一次性 subscription订阅' AFTER `publish_status`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='subscription_period') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `subscription_period` VARCHAR(10) NULL COMMENT '订阅周期: month按月 year按年' AFTER `price_type`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='app_description') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `app_description` VARCHAR(500) NULL COMMENT '应用简介(市场展示用)' AFTER `subscription_period`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='detail_description') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `detail_description` TEXT NULL COMMENT '详细说明(富文本)' AFTER `app_description`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='screenshots') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `screenshots` TEXT NULL COMMENT '应用截图(JSON数组字符串)' AFTER `detail_description`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='install_count') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `install_count` INT NULL DEFAULT 0 COMMENT '安装/使用次数' AFTER `screenshots`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='rating') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `rating` DECIMAL(3,1) NULL DEFAULT 0.0 COMMENT '评分(1-5)' AFTER `install_count`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='reject_reason') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `reject_reason` VARCHAR(500) NULL COMMENT '审核拒绝原因' AFTER `rating`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='publish_apply_time') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `publish_apply_time` DATETIME NULL COMMENT '提交审核时间' AFTER `reject_reason`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='publish_time') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `publish_time` DATETIME NULL COMMENT '正式发布上架时间' AFTER `publish_apply_time`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='reviewer_id') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `reviewer_id` INT NULL COMMENT '审核人用户ID' AFTER `publish_time`;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='modules' AND TABLE_NAME='cms_website' AND COLUMN_NAME='review_time') THEN
|
||||
ALTER TABLE `cms_website` ADD COLUMN `review_time` DATETIME NULL COMMENT '审核操作时间' AFTER `reviewer_id`;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
CALL `add_cms_website_publish_columns`();
|
||||
DROP PROCEDURE IF EXISTS `add_cms_website_publish_columns`;
|
||||
Reference in New Issue
Block a user