|
|
@@ -14843,6 +14843,20 @@ log.info("迁移298: 已为无 openid 的 child 账号补齐 family_members 记
|
|
|
} catch (Exception e) {
|
|
|
log.warn("迁移426: 创建 attribution_reports 表失败(可能已存在): {}", e.getMessage());
|
|
|
}
|
|
|
+
|
|
|
+ // 迁移427: product_bundle_items 增加套餐SKU锚点列(订单套餐自动定价)
|
|
|
+ // bundle_sku_id 非空 = 定价套餐行(套餐价取该SKU.price,CartService/ProductOrderService 匹配用);
|
|
|
+ // 为空 = 仅出库联动行(InventoryService 语义,不参与定价)。
|
|
|
+ ensureColumn("product_bundle_items", "bundle_sku_id",
|
|
|
+ "BIGINT NULL COMMENT '套餐SKU锚点:非空=订单套餐自动定价(套餐价取该SKU.price);空=仅出库联动'");
|
|
|
+ // 同时放开 bundle_product_id 可空:定价套餐行置 NULL,避免 InventoryService
|
|
|
+ // (按 bundle_product_id 关联、仅 productType=bundle 商品)误触发出库联动。
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("ALTER TABLE product_bundle_items MODIFY COLUMN bundle_product_id BIGINT NULL COMMENT '套餐商品ID(出库联动行=套餐商品ID;定价套餐行置NULL)'");
|
|
|
+ log.info("迁移427: product_bundle_items.bundle_product_id 已放开可空");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("迁移427: 放开 bundle_product_id 可空失败(可能已放开): {}", e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private static String text(JsonNode row, String field) {
|