数据库迁移-添加审核字段.sql 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. -- 数据库迁移脚本:为content表添加审核相关字段
  2. -- 执行前请备份数据库
  3. USE book;
  4. -- 添加第三方发布者ID字段
  5. ALTER TABLE `content`
  6. ADD COLUMN `publisher_id` INT(11) NULL COMMENT '第三方发布者ID(userRole=3的用户ID),超级管理员发布为NULL'
  7. AFTER `is_free`;
  8. -- 添加审核状态字段
  9. ALTER TABLE `content`
  10. ADD COLUMN `audit_status` INT(11) NULL DEFAULT 0 COMMENT '审核状态:0待审核,1已通过,2已驳回'
  11. AFTER `publisher_id`;
  12. -- 添加驳回理由字段
  13. ALTER TABLE `content`
  14. ADD COLUMN `reject_reason` VARCHAR(500) NULL COMMENT '驳回理由'
  15. AFTER `audit_status`;
  16. -- 添加是否可见字段
  17. ALTER TABLE `content`
  18. ADD COLUMN `is_visible` INT(11) NULL DEFAULT 1 COMMENT '是否可见/上架:1可见,0隐藏(下架)'
  19. AFTER `reject_reason`;
  20. -- 添加删除状态字段
  21. ALTER TABLE `content`
  22. ADD COLUMN `delete_status` INT(11) NULL DEFAULT 0 COMMENT '删除状态:0正常,1待删除审核,2已删除'
  23. AFTER `is_visible`;
  24. -- 为现有数据设置默认值
  25. -- 超级管理员发布的内容:自动通过审核、可见
  26. UPDATE `content`
  27. SET `audit_status` = 1,
  28. `is_visible` = 1,
  29. `delete_status` = 0,
  30. `publisher_id` = NULL
  31. WHERE `publisher_id` IS NULL OR `audit_status` IS NULL;
  32. -- 创建索引以提高查询性能
  33. CREATE INDEX `idx_publisher_id` ON `content` (`publisher_id`);
  34. CREATE INDEX `idx_audit_status` ON `content` (`audit_status`);
  35. CREATE INDEX `idx_is_visible` ON `content` (`is_visible`);
  36. CREATE INDEX `idx_delete_status` ON `content` (`delete_status`);
  37. -- 验证数据
  38. SELECT
  39. COUNT(*) as total,
  40. SUM(CASE WHEN audit_status = 0 THEN 1 ELSE 0 END) as pending,
  41. SUM(CASE WHEN audit_status = 1 THEN 1 ELSE 0 END) as approved,
  42. SUM(CASE WHEN audit_status = 2 THEN 1 ELSE 0 END) as rejected,
  43. SUM(CASE WHEN delete_status = 1 THEN 1 ELSE 0 END) as delete_pending
  44. FROM `content`;