create_inbox_tables.sql 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. -- 站内信相关表
  2. CREATE TABLE IF NOT EXISTS inbox_messages (
  3. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '站内信ID',
  4. message_type VARCHAR(32) NOT NULL COMMENT '消息类型: energy_gift/news_notice',
  5. title VARCHAR(200) NOT NULL COMMENT '中文标题',
  6. title_en VARCHAR(200) NOT NULL DEFAULT '' COMMENT '英文标题',
  7. content TEXT NOT NULL COMMENT '中文正文',
  8. content_en TEXT NULL COMMENT '英文正文',
  9. target_type VARCHAR(32) NOT NULL COMMENT '发送范围: users/all_users',
  10. energy_stone_amount INT NOT NULL DEFAULT 0 COMMENT '赠送能量石数量,新闻固定为0',
  11. created_by VARCHAR(64) NOT NULL DEFAULT 'web-admin' COMMENT '创建来源',
  12. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  13. INDEX idx_inbox_type_created (message_type, created_at),
  14. INDEX idx_inbox_target_created (target_type, created_at)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  16. COMMENT='站内信主表';
  17. CREATE TABLE IF NOT EXISTS inbox_message_targets (
  18. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '目标记录ID',
  19. message_id BIGINT NOT NULL COMMENT '站内信ID',
  20. user_id VARCHAR(64) NOT NULL COMMENT '目标用户ID',
  21. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  22. UNIQUE KEY uk_inbox_target_message_user (message_id, user_id),
  23. INDEX idx_inbox_target_user_created (user_id, created_at),
  24. CONSTRAINT fk_inbox_target_message_id
  25. FOREIGN KEY (message_id) REFERENCES inbox_messages(id)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  27. COMMENT='站内信目标用户表(仅定向消息使用)';
  28. CREATE TABLE IF NOT EXISTS inbox_user_message_states (
  29. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户消息状态ID',
  30. message_id BIGINT NOT NULL COMMENT '站内信ID',
  31. user_id VARCHAR(64) NOT NULL COMMENT '用户ID',
  32. read_status TINYINT NOT NULL DEFAULT 0 COMMENT '是否已读:0未读,1已读',
  33. deleted_status TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除:0未删,1已删',
  34. claim_status TINYINT NOT NULL DEFAULT 0 COMMENT '是否领取:0未领,1已领',
  35. claimed_energy_stones INT NOT NULL DEFAULT 0 COMMENT '已领取能量石数量',
  36. read_at TIMESTAMP NULL DEFAULT NULL COMMENT '阅读时间',
  37. deleted_at TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  38. claimed_at TIMESTAMP NULL DEFAULT NULL COMMENT '领取时间',
  39. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  40. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  41. UNIQUE KEY uk_inbox_state_message_user (message_id, user_id),
  42. INDEX idx_inbox_state_user_visible (user_id, deleted_status, created_at),
  43. INDEX idx_inbox_state_user_claim (user_id, claim_status, created_at),
  44. CONSTRAINT fk_inbox_state_message_id
  45. FOREIGN KEY (message_id) REFERENCES inbox_messages(id)
  46. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  47. COMMENT='用户维度站内信状态表';