Browse Source

fix: DatabaseInitializer.initializeDatabase() xzyj→zxyj 数据库名拼写错误

Xiaogang Liao 3 months ago
parent
commit
12cb3c6a93

+ 22 - 1
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -60,7 +60,7 @@ public class DatabaseInitializer implements CommandLineRunner {
     private void initializeDatabase() {
         try {
             // 尝试连接数据库,如果不存在则创建
-            jdbcTemplate.execute("CREATE DATABASE IF NOT EXISTS xzyj DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
+            jdbcTemplate.execute("CREATE DATABASE IF NOT EXISTS zxyj DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
             log.info("数据库检查完成");
         } catch (Exception e) {
             log.warn("创建数据库失败: {}", e.getMessage());
@@ -7727,5 +7727,26 @@ private void runMigration100() {
 		// 迁移166: payment_orders 添加 group_no/period_no 列(会员拆单支付,配置驱动拆单)
 		ensureColumn("payment_orders", "group_no", "VARCHAR(64) COMMENT '拆单组号(同一拆单组共享)'");
 		ensureColumn("payment_orders", "period_no", "INT DEFAULT 1 COMMENT '期数序号(1开始)'");
+
+		// 迁移167: 回填 families.creator_id(早期版本从未写入,导致会员开通/虚拟支付兜底失败)
+		// 优先 is_family_admin=true 的用户
+		try {
+			jdbcTemplate.execute("UPDATE families f JOIN users u ON f.id = u.family_id AND u.is_family_admin = 1 " +
+					"SET f.creator_id = u.id WHERE f.creator_id IS NULL");
+			log.info("已回填families.creator_id(优先家庭管理员)");
+		} catch (Exception e) {
+			log.warn("回填families.creator_id(管理员)失败: {}", e.getMessage());
+		}
+		// 剩余家庭:任一 openid 非空用户(子查询确定性取一条)
+		try {
+			jdbcTemplate.execute("UPDATE families f SET f.creator_id = (" +
+					"SELECT u.id FROM users u WHERE u.family_id = f.id " +
+					"AND u.openid IS NOT NULL AND u.openid <> '' " +
+					"ORDER BY (u.is_family_admin = 1) DESC, u.id ASC LIMIT 1" +
+					") WHERE f.creator_id IS NULL");
+			log.info("已回填families.creator_id(任一成员)");
+		} catch (Exception e) {
+			log.warn("回填families.creator_id(任一成员)失败: {}", e.getMessage());
+		}
 	}
 }