|
|
@@ -2061,6 +2061,31 @@ log.info("已添加template_id列到tasks表");
|
|
|
log.warn("检查/添加 family_members 表 id_card 列失败: {}", e.getMessage());
|
|
|
}
|
|
|
|
|
|
+ // 迁移: family_members 表添加孩子专属字段(原children表合并)
|
|
|
+ String[][] childColumns = {
|
|
|
+ {"penalty_enabled", "TINYINT DEFAULT 1 COMMENT '是否扣减积分(0否1是)'"},
|
|
|
+ {"theme", "VARCHAR(32) DEFAULT 'default' COMMENT '主题'"},
|
|
|
+ {"system_points", "INT DEFAULT 0 COMMENT '系统积分(干预/平台奖励)'"},
|
|
|
+ {"streak_days", "INT DEFAULT 0 COMMENT '连续打卡天数'"},
|
|
|
+ {"last_task_date", "DATE COMMENT '上次任务日期'"},
|
|
|
+ {"focus_max_daily", "TINYINT DEFAULT 3 COMMENT '每日专注上限'"},
|
|
|
+ {"focus_remaining","TINYINT DEFAULT 3 COMMENT '今日剩余专注次数'"},
|
|
|
+ {"focus_reset_date","DATE COMMENT '专注次数重置日期'"}
|
|
|
+ };
|
|
|
+ for (String[] col : childColumns) {
|
|
|
+ try {
|
|
|
+ Integer colExists = jdbcTemplate.queryForObject(
|
|
|
+ "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'family_members' AND COLUMN_NAME = ?",
|
|
|
+ Integer.class, col[0]);
|
|
|
+ if (colExists == null || colExists == 0) {
|
|
|
+ jdbcTemplate.execute("ALTER TABLE family_members ADD COLUMN " + col[0] + " " + col[1]);
|
|
|
+ log.info("已为 family_members 表添加 {} 列", col[0]);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("检查/添加 family_members 表 {} 列失败: {}", col[0], e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// ==================== DanShop 电商模块建表 ====================
|
|
|
// 1. danshop_categories (商品分类表)
|
|
|
try {
|