|
@@ -927,9 +927,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("迁移规划师到服务商体系失败: {}", e.getMessage());
|
|
log.warn("迁移规划师到服务商体系失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== Phase 1: 浠艾福俱乐部商品系统 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 商品表
|
|
|
|
|
|
|
+ // ==================== Phase 1: 浠艾福俱乐部商品系统 ====== // 商品表
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute(
|
|
jdbcTemplate.execute(
|
|
|
"CREATE TABLE IF NOT EXISTS products (" +
|
|
"CREATE TABLE IF NOT EXISTS products (" +
|
|
@@ -1189,9 +1187,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("补充 Product 种子数据初始化失败: {}", e.getMessage());
|
|
log.warn("补充 Product 种子数据初始化失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== Phase 2: 内容区块可见性配置 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 内容区块配置表
|
|
|
|
|
|
|
+ // ==================== Phase 2: 内容区块可见性配置 ====== // 内容区块配置表
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute(
|
|
jdbcTemplate.execute(
|
|
|
"CREATE TABLE IF NOT EXISTS content_sections (" +
|
|
"CREATE TABLE IF NOT EXISTS content_sections (" +
|
|
@@ -1229,9 +1225,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("ContentSection 种子数据初始化失败: {}", e.getMessage());
|
|
log.warn("ContentSection 种子数据初始化失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 文章内容系统种子数据 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 文章分类种子数据
|
|
|
|
|
|
|
+ // ==================== 文章内容系统种子数据 ====== // 文章分类种子数据
|
|
|
try {
|
|
try {
|
|
|
Integer catCount = jdbcTemplate.queryForObject(
|
|
Integer catCount = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM article_categories WHERE id IN (1,2,3,4,5)", Integer.class);
|
|
"SELECT COUNT(*) FROM article_categories WHERE id IN (1,2,3,4,5)", Integer.class);
|
|
@@ -1248,9 +1242,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("文章分类种子数据初始化失败: {}", e.getMessage());
|
|
log.warn("文章分类种子数据初始化失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 佣金系统 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 迁移: users表添加推荐人字段
|
|
|
|
|
|
|
+ // ==================== 佣金系统 ====== // 迁移: users表添加推荐人字段
|
|
|
try {
|
|
try {
|
|
|
Integer exists = jdbcTemplate.queryForObject(
|
|
Integer exists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'users' AND COLUMN_NAME = 'referrer_id'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'users' AND COLUMN_NAME = 'referrer_id'",
|
|
@@ -1326,9 +1318,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建withdrawal_requests表失败: {}", e.getMessage());
|
|
log.warn("创建withdrawal_requests表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 会员体系 & 佣金扩展 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 迁移: users表添加会员字段
|
|
|
|
|
|
|
+ // ==================== 会员体系 & 佣金扩展 ====== // 迁移: users表添加会员字段
|
|
|
try {
|
|
try {
|
|
|
Integer exists = jdbcTemplate.queryForObject(
|
|
Integer exists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'users' AND COLUMN_NAME = 'member_level'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'users' AND COLUMN_NAME = 'member_level'",
|
|
@@ -1386,9 +1376,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建member_upgrade_records表失败: {}", e.getMessage());
|
|
log.warn("创建member_upgrade_records表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 文章内容系统 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 文章分类表
|
|
|
|
|
|
|
+ // ==================== 文章内容系统 ====== // 文章分类表
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS article_categories (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS article_categories (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
@@ -1484,9 +1472,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建article_tags表失败: {}", e.getMessage());
|
|
log.warn("创建article_tags表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 五维能量系统(账本模式) ====================
|
|
|
|
|
-
|
|
|
|
|
- // 维度定义表
|
|
|
|
|
|
|
+ // ==================== 五维能量系统(账本模式) ====== // 维度定义表
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute(
|
|
jdbcTemplate.execute(
|
|
|
"CREATE TABLE IF NOT EXISTS energy_dimension (" +
|
|
"CREATE TABLE IF NOT EXISTS energy_dimension (" +
|
|
@@ -1789,8 +1775,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("初始化商品能量比例配置失败: {}", e.getMessage());
|
|
log.warn("初始化商品能量比例配置失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 精准营养 P0: health_report_survey ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 精准营养 P0: health_report_survey ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_report_survey (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_report_survey (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
"report_id BIGINT NOT NULL COMMENT '关联报告ID', " +
|
|
"report_id BIGINT NOT NULL COMMENT '关联报告ID', " +
|
|
@@ -1807,8 +1792,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 health_report_survey 表失败: {}", e.getMessage());
|
|
log.warn("创建 health_report_survey 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 精准营养 P0: health_gut_flora + health_disease_risk ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 精准营养 P0: health_gut_flora + health_disease_risk ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_gut_flora (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_gut_flora (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
"report_id BIGINT NOT NULL COMMENT '关联报告ID', " +
|
|
"report_id BIGINT NOT NULL COMMENT '关联报告ID', " +
|
|
@@ -1841,8 +1825,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 health_disease_risk 表失败: {}", e.getMessage());
|
|
log.warn("创建 health_disease_risk 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: health_reports 表添加新字段 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: health_reports 表添加新字段 ============= try {
|
|
|
jdbcTemplate.execute("ALTER TABLE health_reports ADD COLUMN balance_score INT DEFAULT NULL COMMENT '菌群平衡分'");
|
|
jdbcTemplate.execute("ALTER TABLE health_reports ADD COLUMN balance_score INT DEFAULT NULL COMMENT '菌群平衡分'");
|
|
|
log.info("已添加balance_score列到health_reports表");
|
|
log.info("已添加balance_score列到health_reports表");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -1892,8 +1875,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
// 列已存在,忽略错误
|
|
// 列已存在,忽略错误
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: health_gut_flora 表添加新字段 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: health_gut_flora 表添加新字段 ============= try {
|
|
|
jdbcTemplate.execute("ALTER TABLE health_gut_flora ADD COLUMN population_level VARCHAR(50) DEFAULT NULL COMMENT '处于人群%水平'");
|
|
jdbcTemplate.execute("ALTER TABLE health_gut_flora ADD COLUMN population_level VARCHAR(50) DEFAULT NULL COMMENT '处于人群%水平'");
|
|
|
log.info("已添加population_level列到health_gut_flora表");
|
|
log.info("已添加population_level列到health_gut_flora表");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -1921,9 +1903,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
// 列已存在,忽略错误
|
|
// 列已存在,忽略错误
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: guides 表统一 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 迁移: guides 添加 type 字段(区分服务商类型)
|
|
|
|
|
|
|
+ // ==================== 迁移: guides 表统一 ====== // 迁移: guides 添加 type 字段(区分服务商类型)
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute("ALTER TABLE guides ADD COLUMN type VARCHAR(32) DEFAULT 'teacher' COMMENT '服务商类型: teacher/planner/activity_provider/product_supplier'");
|
|
jdbcTemplate.execute("ALTER TABLE guides ADD COLUMN type VARCHAR(32) DEFAULT 'teacher' COMMENT '服务商类型: teacher/planner/activity_provider/product_supplier'");
|
|
|
log.info("已添加type列到guides表");
|
|
log.info("已添加type列到guides表");
|
|
@@ -2262,8 +2242,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 cart 表失败: {}", e.getMessage());
|
|
log.warn("创建 cart 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== DanShop 电商模块建表 ====================
|
|
|
|
|
- // 1. danshop_categories (商品分类表)
|
|
|
|
|
|
|
+ // ==================== DanShop 电商模块建表 ============= // 1. danshop_categories (商品分类表)
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS danshop_categories (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS danshop_categories (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
@@ -2505,8 +2484,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 danshop_addresses 表失败: {}", e.getMessage());
|
|
log.warn("创建 danshop_addresses 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: activities表添加visible_scope列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: activities表添加visible_scope列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'visible_scope'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'visible_scope'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2520,8 +2498,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("检查/添加activities表visible_scope列失败: {}", e.getMessage());
|
|
log.warn("检查/添加activities表visible_scope列失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: articles表添加article_type列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: articles表添加article_type列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'articles' AND COLUMN_NAME = 'article_type'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'articles' AND COLUMN_NAME = 'article_type'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2535,8 +2512,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("检查/添加articles表article_type列失败: {}", e.getMessage());
|
|
log.warn("检查/添加articles表article_type列失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: articles表添加word_count列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: articles表添加word_count列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'articles' AND COLUMN_NAME = 'word_count'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'articles' AND COLUMN_NAME = 'word_count'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2550,8 +2526,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("检查/添加articles表word_count列失败: {}", e.getMessage());
|
|
log.warn("检查/添加articles表word_count列失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: article_reading_records表添加task_id列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: article_reading_records表添加task_id列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'article_reading_records' AND COLUMN_NAME = 'task_id'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'article_reading_records' AND COLUMN_NAME = 'task_id'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2565,8 +2540,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("检查/添加article_reading_records表task_id列失败: {}", e.getMessage());
|
|
log.warn("检查/添加article_reading_records表task_id列失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: tasks表添加source_type列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: tasks表添加source_type列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'source_type'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'source_type'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2580,8 +2554,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("检查/添加tasks表source_type列失败: {}", e.getMessage());
|
|
log.warn("检查/添加tasks表source_type列失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: tasks表添加source_id列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: tasks表添加source_id列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'source_id'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'source_id'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2595,8 +2568,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("检查/添加tasks表source_id列失败: {}", e.getMessage());
|
|
log.warn("检查/添加tasks表source_id列失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移: activities表添加checkin_points列 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移: activities表添加checkin_points列 ============= try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'checkin_points'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'checkin_points'",
|
|
|
Integer.class);
|
|
Integer.class);
|
|
@@ -2630,8 +2602,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建family_invitations表失败: {}", e.getMessage());
|
|
log.warn("创建family_invitations表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== P0 营养师: nutrition_indicator_mapping ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== P0 营养师: nutrition_indicator_mapping ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS nutrition_indicator_mapping (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS nutrition_indicator_mapping (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
|
"indicator_name_pattern VARCHAR(200) NOT NULL COMMENT '指标名匹配模式(SQL LIKE语法,%为通配符)'," +
|
|
"indicator_name_pattern VARCHAR(200) NOT NULL COMMENT '指标名匹配模式(SQL LIKE语法,%为通配符)'," +
|
|
@@ -2710,8 +2681,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("nutrition_indicator_mapping 种子数据初始化失败: {}", e.getMessage());
|
|
log.warn("nutrition_indicator_mapping 种子数据初始化失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 心版块 Phase 1: emotion_checkin 表 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 心版块 Phase 1: emotion_checkin 表 ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS emotion_checkin (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS emotion_checkin (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
"child_id BIGINT NOT NULL COMMENT '孩子ID', " +
|
|
"child_id BIGINT NOT NULL COMMENT '孩子ID', " +
|
|
@@ -2737,8 +2707,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 emotion_checkin 表失败: {}", e.getMessage());
|
|
log.warn("创建 emotion_checkin 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 1a-2: DAN Schema 修复 ====================
|
|
|
|
|
- // v1.2 EMI 心理子维度
|
|
|
|
|
|
|
+ // ==================== 1a-2: DAN Schema 修复 ============= // v1.2 EMI 心理子维度
|
|
|
String[] danEmiFields = {"emotion_score", "resilience_score", "stress_coping_score", "self_awareness_score"};
|
|
String[] danEmiFields = {"emotion_score", "resilience_score", "stress_coping_score", "self_awareness_score"};
|
|
|
for (String field : danEmiFields) {
|
|
for (String field : danEmiFields) {
|
|
|
try {
|
|
try {
|
|
@@ -2784,8 +2753,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 1b-1: bazi_reading_template 五行命理解读表 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 1b-1: bazi_reading_template 五行命理解读表 ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bazi_reading_template (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bazi_reading_template (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
"element VARCHAR(20) NOT NULL COMMENT '五行: wood/fire/earth/metal/water', " +
|
|
"element VARCHAR(20) NOT NULL COMMENT '五行: wood/fire/earth/metal/water', " +
|
|
@@ -2801,8 +2769,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 bazi_reading_template 表失败: {}", e.getMessage());
|
|
log.warn("创建 bazi_reading_template 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 1b-1: numsoul_config 生命灵数配置表 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 1b-1: numsoul_config 生命灵数配置表 ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS numsoul_config (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS numsoul_config (" +
|
|
|
"number INT PRIMARY KEY COMMENT '灵数1-9', " +
|
|
"number INT PRIMARY KEY COMMENT '灵数1-9', " +
|
|
|
"title VARCHAR(50) NOT NULL COMMENT '称号', " +
|
|
"title VARCHAR(50) NOT NULL COMMENT '称号', " +
|
|
@@ -2816,8 +2783,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 numsoul_config 表失败: {}", e.getMessage());
|
|
log.warn("创建 numsoul_config 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 1b-1: bazi_reading_template 种子数据 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 1b-1: bazi_reading_template 种子数据 ============= try {
|
|
|
Integer count = jdbcTemplate.queryForObject(
|
|
Integer count = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM bazi_reading_template", Integer.class);
|
|
"SELECT COUNT(*) FROM bazi_reading_template", Integer.class);
|
|
|
if (count == null || count == 0) {
|
|
if (count == null || count == 0) {
|
|
@@ -2847,8 +2813,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("bazi_reading_template 种子数据初始化失败: {}", e.getMessage());
|
|
log.warn("bazi_reading_template 种子数据初始化失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 1b-1: numsoul_config 种子数据 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 1b-1: numsoul_config 种子数据 ============= try {
|
|
|
Integer count = jdbcTemplate.queryForObject(
|
|
Integer count = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM numsoul_config", Integer.class);
|
|
"SELECT COUNT(*) FROM numsoul_config", Integer.class);
|
|
|
if (count == null || count == 0) {
|
|
if (count == null || count == 0) {
|
|
@@ -2893,9 +2858,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建 user_address 表失败: {}", e.getMessage());
|
|
log.warn("创建 user_address 表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 会员价格体系 ====================
|
|
|
|
|
-
|
|
|
|
|
- // 迁移: activities表添加member_price列
|
|
|
|
|
|
|
+ // ==================== 会员价格体系 ====== // 迁移: activities表添加member_price列
|
|
|
try {
|
|
try {
|
|
|
Integer exists = jdbcTemplate.queryForObject(
|
|
Integer exists = jdbcTemplate.queryForObject(
|
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'member_price'",
|
|
"SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'member_price'",
|
|
@@ -2931,8 +2894,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("创建member_discount_configs表失败: {}", e.getMessage());
|
|
log.warn("创建member_discount_configs表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 食材推荐指数 Phase: food_recommend_idx / food_recommend_idx_log ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 食材推荐指数 Phase: food_recommend_idx / food_recommend_idx_log ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `food_recommend_idx` (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `food_recommend_idx` (" +
|
|
|
"`id` BIGINT NOT NULL AUTO_INCREMENT, " +
|
|
"`id` BIGINT NOT NULL AUTO_INCREMENT, " +
|
|
|
"`user_id` BIGINT NOT NULL COMMENT '用户ID', " +
|
|
"`user_id` BIGINT NOT NULL COMMENT '用户ID', " +
|
|
@@ -3139,8 +3101,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
|
|
|
|
|
log.info("数据库迁移完成");
|
|
log.info("数据库迁移完成");
|
|
|
|
|
|
|
|
- // ==================== 健康维度 Phase 1: health_dimension_score / health_data_source_record / health_norm_reference ====================
|
|
|
|
|
- migrateHealthDimensionsTable();
|
|
|
|
|
|
|
+ // ==================== 健康维度 Phase 1: health_dimension_score / health_data_source_record / health_norm_reference ============= migrateHealthDimensionsTable();
|
|
|
seedHealthNorms();
|
|
seedHealthNorms();
|
|
|
seedMindActionWealthNorms();
|
|
seedMindActionWealthNorms();
|
|
|
runLateMigrations();
|
|
runLateMigrations();
|
|
@@ -3157,8 +3118,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("sleep_record 时间列修改失败(可能已为 TIME): {}", e.getMessage());
|
|
log.warn("sleep_record 时间列修改失败(可能已为 TIME): {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移270: 先天画像来源权重配置表 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移270: 先天画像来源权重配置表 ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS innate_portrait_config (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS innate_portrait_config (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
|
"source_type VARCHAR(20) NOT NULL," +
|
|
"source_type VARCHAR(20) NOT NULL," +
|
|
@@ -3189,8 +3149,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("迁移270失败: {}", e.getMessage());
|
|
log.warn("迁移270失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移271: 先天画像报告缓存表 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移271: 先天画像报告缓存表 ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS innate_portrait_report (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS innate_portrait_report (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
|
"member_id BIGINT NOT NULL," +
|
|
"member_id BIGINT NOT NULL," +
|
|
@@ -3207,8 +3166,7 @@ public class DatabaseInitializer implements CommandLineRunner {
|
|
|
log.warn("迁移271失败: {}", e.getMessage());
|
|
log.warn("迁移271失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 迁移272: 数字能量详细配置表 ====================
|
|
|
|
|
- try {
|
|
|
|
|
|
|
+ // ==================== 迁移272: 数字能量详细配置表 ============= try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS numsoul_detail_config (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS numsoul_detail_config (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY," +
|
|
|
"number_type VARCHAR(20) NOT NULL," +
|
|
"number_type VARCHAR(20) NOT NULL," +
|
|
@@ -4346,8 +4304,7 @@ sqls.add("INSERT IGNORE INTO health_norm_reference (dimension, gender, age_min,
|
|
|
log.warn("创建insurance_policies表失败: {}", e.getMessage());
|
|
log.warn("创建insurance_policies表失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // ==================== 健康检测报告模块 ====================
|
|
|
|
|
- // 健康报告表(体检报告/菌群检测报告)
|
|
|
|
|
|
|
+ // ==================== 健康检测报告模块 ============= // 健康报告表(体检报告/菌群检测报告)
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_reports (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS health_reports (" +
|
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
@@ -10974,7 +10931,6 @@ sqls.add("INSERT IGNORE INTO health_norm_reference (dimension, gender, age_min,
|
|
|
// 表已存在,忽略
|
|
// 表已存在,忽略
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-<<<<<<< Updated upstream
|
|
|
|
|
// 迁移318: 创建 DOA 个人目标-周计划-周复盘三表(家庭打卡个人目标模块,2026-09-12)
|
|
// 迁移318: 创建 DOA 个人目标-周计划-周复盘三表(家庭打卡个人目标模块,2026-09-12)
|
|
|
try {
|
|
try {
|
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS doa_stage (" +
|
|
jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS doa_stage (" +
|
|
@@ -11036,7 +10992,6 @@ sqls.add("INSERT IGNORE INTO health_norm_reference (dimension, gender, age_min,
|
|
|
log.info("迁移318: 已创建 doa_week 表");
|
|
log.info("迁移318: 已创建 doa_week 表");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.warn("迁移318: 创建 doa_week 表失败: {}", e.getMessage());
|
|
log.warn("迁移318: 创建 doa_week 表失败: {}", e.getMessage());
|
|
|
-=======
|
|
|
|
|
// 迁移318: 基础管理分组挂载「系统提示词」菜单(cfc-web菜单树同步)
|
|
// 迁移318: 基础管理分组挂载「系统提示词」菜单(cfc-web菜单树同步)
|
|
|
migrateSystemPromptMenu();
|
|
migrateSystemPromptMenu();
|
|
|
|
|
|
|
@@ -11140,7 +11095,6 @@ sqls.add("INSERT IGNORE INTO health_norm_reference (dimension, gender, age_min,
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.warn("迁移318: 挂载菜单失败: {}", e.getMessage());
|
|
log.warn("迁移318: 挂载菜单失败: {}", e.getMessage());
|
|
|
return null;
|
|
return null;
|
|
|
->>>>>>> Stashed changes
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|