schema-wishes.sql 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. -- 心愿表 (wishes)
  2. -- 用途:每个人的实际心愿,与心愿库(rewards)区分
  3. -- 创建时间: 2026-04-15
  4. CREATE TABLE IF NOT EXISTS wishes (
  5. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  6. -- 归属信息
  7. family_id BIGINT NOT NULL COMMENT '家庭ID',
  8. child_id BIGINT NOT NULL COMMENT '目标孩子ID',
  9. created_by BIGINT NOT NULL COMMENT '创建者用户ID',
  10. creator_type VARCHAR(10) NOT NULL COMMENT '创建者类型: child/parent',
  11. -- 心愿内容
  12. title VARCHAR(200) NOT NULL COMMENT '心愿名称',
  13. description TEXT COMMENT '详细描述',
  14. category VARCHAR(50) COMMENT '分类',
  15. -- 积分设置
  16. points_required INT COMMENT '所需积分',
  17. points_set_by BIGINT COMMENT '定价者ID',
  18. points_set_at DATETIME COMMENT '定价时间',
  19. -- 状态 (个人心愿状态机)
  20. status VARCHAR(20) DEFAULT 'draft' COMMENT '状态: draft/active/pending_exchange/approved/exchanging/fulfilled/cancelled/rejected',
  21. -- 兑换流程
  22. exchange_requested_at DATETIME COMMENT '申请兑换时间',
  23. exchange_approved_by BIGINT COMMENT '批准者ID',
  24. exchange_approved_at DATETIME COMMENT '批准时间',
  25. points_deducted_at DATETIME COMMENT '扣积分时间',
  26. -- 兑现流程
  27. fulfilled_by BIGINT COMMENT '兑现者ID',
  28. fulfilled_at DATETIME COMMENT '兑现时间',
  29. child_confirmed_at DATETIME COMMENT '孩子确认收货时间',
  30. -- 拒绝记录
  31. rejected_by BIGINT COMMENT '拒绝者ID',
  32. rejected_at DATETIME COMMENT '拒绝时间',
  33. reject_reason VARCHAR(500) COMMENT '拒绝原因',
  34. reject_count INT DEFAULT 0 COMMENT '被拒绝次数',
  35. -- 取消记录
  36. cancelled_by BIGINT COMMENT '取消者ID',
  37. cancelled_at DATETIME COMMENT '取消时间',
  38. cancel_reason VARCHAR(500) COMMENT '取消原因',
  39. -- 时间戳
  40. created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  41. updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  42. -- 索引
  43. INDEX idx_family (family_id),
  44. INDEX idx_child (child_id),
  45. INDEX idx_status (status),
  46. INDEX idx_creator (created_by)
  47. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个人心愿表';