|
|
@@ -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());
|
|
|
+ }
|
|
|
}
|
|
|
}
|