|
|
@@ -2592,6 +2592,44 @@ log.info("已添加template_id列到tasks表");
|
|
|
log.warn("创建 user_address 表失败: {}", e.getMessage());
|
|
|
}
|
|
|
|
|
|
+ // ==================== 会员价格体系 ====================
|
|
|
+
|
|
|
+ // 迁移: activities表添加member_price列
|
|
|
+ try {
|
|
|
+ Integer exists = jdbcTemplate.queryForObject(
|
|
|
+ "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'activities' AND COLUMN_NAME = 'member_price'",
|
|
|
+ Integer.class);
|
|
|
+ if (exists == null || exists == 0) {
|
|
|
+ jdbcTemplate.execute("ALTER TABLE activities ADD COLUMN member_price INT COMMENT '会员价(分)' AFTER price");
|
|
|
+ log.info("已添加member_price列到activities表");
|
|
|
+ } else {
|
|
|
+ log.info("member_price列已存在,跳过");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("检查/添加activities.member_price失败: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 迁移: 创建 member_discount_configs 表(分类级别折扣配置)
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS member_discount_configs (" +
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
+ "level_code VARCHAR(20) NOT NULL COMMENT '会员等级: FAMILY/PROVIDER', " +
|
|
|
+ "target_type VARCHAR(20) NOT NULL COMMENT '目标类型: product/activity', " +
|
|
|
+ "target_id BIGINT DEFAULT NULL COMMENT '目标ID(NULL表示分类级别)', " +
|
|
|
+ "category_id BIGINT DEFAULT NULL COMMENT '类目ID(分类级别折扣)', " +
|
|
|
+ "discount_percent INT NOT NULL COMMENT '折扣百分比(如90表示90%)', " +
|
|
|
+ "enabled TINYINT DEFAULT 1 COMMENT '是否启用', " +
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
|
|
|
+ "INDEX idx_level (level_code), " +
|
|
|
+ "INDEX idx_target (target_type, target_id), " +
|
|
|
+ "INDEX idx_category (target_type, category_id)" +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员折扣配置'");
|
|
|
+ log.info("已创建member_discount_configs表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建member_discount_configs表失败: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
log.info("数据库迁移完成");
|
|
|
|
|
|
// ==================== 健康维度 Phase 1: health_dimension_score / health_data_source_record / health_norm_reference ====================
|