|
|
@@ -14,7 +14,7 @@
|
|
|
|
|
|
- 所有代码改动在远程 `/app/cfc`(SSH `root@111.228.6.214`)执行;本地 `/root/cfc` 只是壳。
|
|
|
- 分支 `cfclub`;每任务完成即提交(`git fetch origin && git pull --rebase origin cfclub` 后提交)。
|
|
|
-- 迁移编号固定 **433**,并同步 `cfc-backend/src/main/resources/schema.sql`。
|
|
|
+- 迁移编号固定 **434**,并同步 `cfc-backend/src/main/resources/schema.sql`。
|
|
|
- 不改动 `product_bundle_items`(套餐)逻辑。
|
|
|
- 不改动现有非组合、非 linked、非 bundle 订单的任何路径。
|
|
|
- 组合订单:**不扣父商品库存**;取消/退款/后台关闭 3 处必须回补组成商品。
|
|
|
@@ -36,7 +36,7 @@
|
|
|
|
|
|
---
|
|
|
|
|
|
-### Task 1: 迁移 433 + schema.sql
|
|
|
+### Task 1: 迁移 434 + schema.sql
|
|
|
|
|
|
**Files:**
|
|
|
- Modify: `cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java`(`runMigrations()` 末尾 + 新增 `migrateSkuCombo()`)
|
|
|
@@ -48,14 +48,14 @@
|
|
|
- [ ] **Step 1: 在 `runMigrations()` 末尾(`migrateFamilyNameBackfill();` 之后)追加调用**
|
|
|
|
|
|
```java
|
|
|
- // 迁移433: SKU商品组合明细表 + 订单记录下单SKU(组合SKU识别)
|
|
|
+ // 迁移434: SKU商品组合明细表 + 订单记录下单SKU(组合SKU识别)
|
|
|
migrateSkuCombo();
|
|
|
```
|
|
|
|
|
|
- [ ] **Step 2: 在 `createCouponGiftTransferTable()` 之后新增迁移方法(幂等;参照迁移 428 写法)**
|
|
|
|
|
|
```java
|
|
|
- // ==================== 迁移433:SKU 商品组合 ====================
|
|
|
+ // ==================== 迁移434:SKU 商品组合 ====================
|
|
|
|
|
|
void migrateSkuCombo() {
|
|
|
try {
|
|
|
@@ -69,9 +69,9 @@
|
|
|
+ "INDEX `idx_sku` (`sku_id`), "
|
|
|
+ "INDEX `idx_child_product` (`child_product_id`) "
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品SKU组合明细'");
|
|
|
- log.info("迁移433: 已创建 product_sku_combo_items 表");
|
|
|
+ log.info("迁移434: 已创建 product_sku_combo_items 表");
|
|
|
} catch (Exception e) {
|
|
|
- log.warn("迁移433: 创建 product_sku_combo_items 表失败(可能已存在): {}", e.getMessage());
|
|
|
+ log.warn("迁移434: 创建 product_sku_combo_items 表失败(可能已存在): {}", e.getMessage());
|
|
|
}
|
|
|
try {
|
|
|
Integer colExists = jdbcTemplate.queryForObject(
|
|
|
@@ -79,12 +79,12 @@
|
|
|
Integer.class);
|
|
|
if (colExists == null || colExists == 0) {
|
|
|
jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN sku_id BIGINT NULL COMMENT '下单SKU ID(组合SKU识别用)' AFTER product_type");
|
|
|
- log.info("迁移433: 已为 product_orders 增加 sku_id 列");
|
|
|
+ log.info("迁移434: 已为 product_orders 增加 sku_id 列");
|
|
|
} else {
|
|
|
- log.info("迁移433: product_orders.sku_id 列已存在,跳过");
|
|
|
+ log.info("迁移434: product_orders.sku_id 列已存在,跳过");
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- log.warn("迁移433: 检查/添加 product_orders.sku_id 列失败: {}", e.getMessage());
|
|
|
+ log.warn("迁移434: 检查/添加 product_orders.sku_id 列失败: {}", e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
@@ -120,7 +120,7 @@ Expected: BUILD SUCCESS(无输出错误)
|
|
|
|
|
|
```bash
|
|
|
cd /app/cfc && git add cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java cfc-backend/src/main/resources/schema.sql
|
|
|
-git commit -m "feat(backend): 迁移433 SKU商品组合明细表与订单sku_id"
|
|
|
+git commit -m "feat(backend): 迁移434 SKU商品组合明细表与订单sku_id"
|
|
|
```
|
|
|
|
|
|
---
|
|
|
@@ -1292,11 +1292,11 @@ systemctl status cfc-backend --no-pager | head -5
|
|
|
ss -tlnp | grep 9082
|
|
|
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:9082/api/cart/list
|
|
|
curl -s -o /dev/null -w "%{http_code}\n" -k https://cfc.etotem.com.cn/admin/
|
|
|
-grep "迁移433" /app/pro/cfc/backend/cfc-backend.log | tail -5
|
|
|
+grep "迁移434" /app/pro/cfc/backend/cfc-backend.log | tail -5
|
|
|
curl -s -X POST http://localhost:9082/api/admin/product/linked/list -H 'Content-Type: application/json' -d '{"crossCategory":true,"page":1,"pageSize":3}'
|
|
|
```
|
|
|
|
|
|
-Expected: 服务 active;端口 9082 监听;两个 URL 200;日志含「迁移433」;选择器返回 `code=200` 且含 `skus`/`hasSkus`。
|
|
|
+Expected: 服务 active;端口 9082 监听;两个 URL 200;日志含「迁移434」;选择器返回 `code=200` 且含 `skus`/`hasSkus`。
|
|
|
|
|
|
- [ ] **Step 5: 失败回滚**
|
|
|
|