Просмотр исходного кода

fix: 修复退款失败 - package_orders表缺少user_coupon_id列

- 迁移70: ALTER TABLE package_orders ADD COLUMN user_coupon_id BIGINT
- schema.sql: package_orders建表语句同步添加user_coupon_id列
Xiaogang Liao 2 месяцев назад
Родитель
Сommit
1f14c283b1

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

@@ -4993,5 +4993,16 @@ try {
             log.warn("创建five_dimension_scores表失败: {}", e.getMessage());
         }
 
+        // 迁移70: package_orders表添加user_coupon_id列
+        try {
+            jdbcTemplate.execute("ALTER TABLE package_orders ADD COLUMN user_coupon_id BIGINT COMMENT '使用的用户优惠券ID'");
+            log.info("已添加user_coupon_id列到package_orders表");
+        } catch (Exception e) {
+            log.warn("添加user_coupon_id列失败(可能已存在): {}", e.getMessage());
+        }
+
+        // 迁移71: family_invitations表添加max_use_count和used_count列(G9 邀请次数控制)
+        ensureColumn("family_invitations", "max_use_count", "INT DEFAULT 1 COMMENT '最大使用次数'");
+        ensureColumn("family_invitations", "used_count", "INT DEFAULT 0 COMMENT '已使用次数'");
         }
 }

+ 18 - 0
cfc-backend/src/main/resources/schema.sql

@@ -598,6 +598,7 @@ CREATE TABLE IF NOT EXISTS package_orders (
     package_name VARCHAR(100) COMMENT '套餐名称',
     price INT NOT NULL COMMENT '支付金额(分)',
     platform_fee INT DEFAULT 0 COMMENT '平台服务费(分)',
+    user_coupon_id BIGINT COMMENT '使用的用户优惠券ID',
     guide_id BIGINT COMMENT '成长规划师ID',
     status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending/paid/cancelled/refunded',
     pay_method VARCHAR(20) COMMENT '支付方式',
@@ -2530,3 +2531,20 @@ CREATE TABLE IF NOT EXISTS five_dimension_scores (
     INDEX idx_family_time (family_id, assessed_at),
     INDEX idx_source (source_type, source_id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='五维能量分数历史记录';
+
+-- 家庭邀请令牌表
+CREATE TABLE IF NOT EXISTS family_invitations (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    family_id BIGINT NOT NULL COMMENT '家庭ID',
+    token VARCHAR(64) NOT NULL UNIQUE COMMENT '邀请令牌(UUID)',
+    created_by BIGINT NOT NULL COMMENT '创建人用户ID',
+    status VARCHAR(16) DEFAULT 'active' COMMENT '状态: active/used/expired/revoked',
+    expires_at DATETIME COMMENT '过期时间',
+    max_use_count INT DEFAULT 1 COMMENT '最大使用次数',
+    used_count INT DEFAULT 0 COMMENT '已使用次数',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    INDEX idx_family_id (family_id),
+    INDEX idx_token (token),
+    INDEX idx_status (status)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭邀请令牌';