Browse Source

fix: add auto-migration for articles audit fields in DatabaseInitializer

Sisyphus 2 months ago
parent
commit
df12066e45

+ 20 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -2823,6 +2823,26 @@ log.info("已添加template_id列到tasks表");
         } catch (Exception e) {
             log.warn("health_norm_reference 常模种子数据初始化失败: {}", e.getMessage());
         }
+
+        // 迁移: articles表添加审核和作者类型字段
+        try {
+            Integer exists = jdbcTemplate.queryForObject(
+                "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'articles' AND COLUMN_NAME = 'audit_status'",
+                Integer.class);
+            if (exists == null || exists == 0) {
+                jdbcTemplate.execute("ALTER TABLE articles " +
+                    "ADD COLUMN author_type VARCHAR(20) DEFAULT 'admin' COMMENT '作者类型:admin/parent/child' AFTER created_by, " +
+                    "ADD COLUMN audit_status VARCHAR(20) DEFAULT 'approved' COMMENT '审核状态:approved/pending/rejected' AFTER status, " +
+                    "ADD COLUMN audit_reason TEXT COMMENT '驳回原因' AFTER audit_status, " +
+                    "ADD COLUMN auditor_id BIGINT DEFAULT 0 COMMENT '审核人 ID' AFTER audit_reason, " +
+                    "ADD COLUMN audited_at DATETIME COMMENT '审核时间' AFTER auditor_id");
+                log.info("已添加审核和作者类型字段到articles表");
+            } else {
+                log.info("articles表审核字段已存在,跳过");
+            }
+        } catch (Exception e) {
+            log.warn("检查/添加articles表审核字段失败: {}", e.getMessage());
+        }
     }
 
     private void initializeDefaultData() {