-- ============================================================================ -- 反馈回复:官方回复 + 用户端未读提醒(幂等,可重复执行) -- -- 本迁移与 internal/logic/migrate.go 的 migrateColumns() 内容一致: -- 服务端启动时 Migrate() 会自动加列(项目约定:升级只需重启服务)。 -- -- 新增列: -- feedbacks.reply_content 官方回复内容 -- feedbacks.reply_by 回复管理员 id,0=无 -- feedbacks.reply_at 最近回复时间 -- feedbacks.reply_read 用户端已读:0有新回复未读 1已读 -- ============================================================================ SET @db := DATABASE(); SET @sql := ( SELECT IF(COUNT(*) = 0, 'ALTER TABLE `feedbacks` ADD COLUMN `reply_content` varchar(1000) NOT NULL DEFAULT '''' COMMENT ''官方回复内容''', 'SELECT ''feedbacks.reply_content already exists'' AS msg') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'feedbacks' AND COLUMN_NAME = 'reply_content' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @sql := ( SELECT IF(COUNT(*) = 0, 'ALTER TABLE `feedbacks` ADD COLUMN `reply_by` bigint NOT NULL DEFAULT 0 COMMENT ''回复管理员 id,0=无''', 'SELECT ''feedbacks.reply_by already exists'' AS msg') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'feedbacks' AND COLUMN_NAME = 'reply_by' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @sql := ( SELECT IF(COUNT(*) = 0, 'ALTER TABLE `feedbacks` ADD COLUMN `reply_at` datetime DEFAULT NULL COMMENT ''最近回复时间''', 'SELECT ''feedbacks.reply_at already exists'' AS msg') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'feedbacks' AND COLUMN_NAME = 'reply_at' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @sql := ( SELECT IF(COUNT(*) = 0, 'ALTER TABLE `feedbacks` ADD COLUMN `reply_read` tinyint NOT NULL DEFAULT 0 COMMENT ''用户端已读:0有新回复未读 1已读''', 'SELECT ''feedbacks.reply_read already exists'' AS msg') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'feedbacks' AND COLUMN_NAME = 'reply_read' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;