- 新增 batch-create-logistics / batch-create-fulfill:按平台行建物流单并回写 LinkedOrderId,代发支持绑定冻结与失败回滚 - ParcelBuilder 支持无 SKU 映射的平台行申报;批量创建可指定 OrderSource=platform - 库存绑定候选接口支持 orderId=0 草稿选仓 - 店铺订单增加结构化收件人字段(db.sql + 迁移脚本),拉单回填;补充 customer9 店铺/揽收种子与 ConcurrencyStamp 修复脚本 Co-authored-by: Cursor <cursoragent@cursor.com>
511 lines
24 KiB
SQL
511 lines
24 KiB
SQL
-- 店铺授权 + 店铺订单种子(CustomerId = 9)
|
||
-- 可重复执行:已存在则跳过
|
||
-- 用法:
|
||
-- 1) mysql -u root -p oms < sql/migrate_t_sales_store_order_recipient.sql
|
||
-- 2) mysql -u root -p oms < sql/seed_sales_store_customer9.sql
|
||
--
|
||
-- 注意:ConcurrencyStamp 必须是合法 Guid 字符串;空串会导致
|
||
-- 「ConcurrencyStamp绑定到SalesStoreOrder失败」
|
||
|
||
SET NAMES utf8mb4;
|
||
|
||
-- 先修好已有脏数据(空串 / 非 36 位)
|
||
UPDATE `t_sales_store`
|
||
SET `ConcurrencyStamp` = UUID()
|
||
WHERE `ConcurrencyStamp` IS NULL OR TRIM(`ConcurrencyStamp`) = '' OR LENGTH(TRIM(`ConcurrencyStamp`)) <> 36;
|
||
UPDATE `t_sales_store_order`
|
||
SET `ConcurrencyStamp` = UUID()
|
||
WHERE `ConcurrencyStamp` IS NULL OR TRIM(`ConcurrencyStamp`) = '' OR LENGTH(TRIM(`ConcurrencyStamp`)) <> 36;
|
||
UPDATE `t_sales_store_order_line`
|
||
SET `ConcurrencyStamp` = UUID()
|
||
WHERE `ConcurrencyStamp` IS NULL OR TRIM(`ConcurrencyStamp`) = '' OR LENGTH(TRIM(`ConcurrencyStamp`)) <> 36;
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 1. 店铺授权 t_sales_store(4 个平台,覆盖 active/expired)
|
||
-- ---------------------------------------------------------------------------
|
||
INSERT INTO `t_sales_store` (
|
||
`CustomerId`, `PlatformCode`, `StoreNickname`, `PlatformStoreId`, `PlatformAccount`,
|
||
`SiteCountry`, `SellerId`, `AuthStatus`, `AuthTime`, `TokenExpireTime`, `RefreshExpireTime`,
|
||
`AccessToken`, `RefreshToken`, `IsAutoFulfill`, `Remark`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, 'shopee', '种子-Shopee旗舰店', 'SEED9-SHOPEE-001', 'seed9.shopee@demo.com',
|
||
'SG', 'SELLER-SHOPEE-9001', 'active',
|
||
DATE_SUB(NOW(), INTERVAL 30 DAY), DATE_ADD(NOW(), INTERVAL 60 DAY), DATE_ADD(NOW(), INTERVAL 180 DAY),
|
||
'seed_access_token_shopee_9', 'seed_refresh_token_shopee_9', 1, 'CustomerId=9 种子店铺', 0, UUID(), 0, NOW()
|
||
WHERE NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store`
|
||
WHERE `CustomerId` = 9 AND `PlatformStoreId` = 'SEED9-SHOPEE-001' AND `IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store` (
|
||
`CustomerId`, `PlatformCode`, `StoreNickname`, `PlatformStoreId`, `PlatformAccount`,
|
||
`SiteCountry`, `SellerId`, `AuthStatus`, `AuthTime`, `TokenExpireTime`, `RefreshExpireTime`,
|
||
`AccessToken`, `RefreshToken`, `IsAutoFulfill`, `Remark`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, 'lazada', '种子-Lazada马来店', 'SEED9-LAZADA-001', 'seed9.lazada@demo.com',
|
||
'MY', 'SELLER-LAZADA-9002', 'active',
|
||
DATE_SUB(NOW(), INTERVAL 14 DAY), DATE_ADD(NOW(), INTERVAL 45 DAY), DATE_ADD(NOW(), INTERVAL 120 DAY),
|
||
'seed_access_token_lazada_9', 'seed_refresh_token_lazada_9', 0, 'CustomerId=9 种子店铺', 0, UUID(), 0, NOW()
|
||
WHERE NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store`
|
||
WHERE `CustomerId` = 9 AND `PlatformStoreId` = 'SEED9-LAZADA-001' AND `IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store` (
|
||
`CustomerId`, `PlatformCode`, `StoreNickname`, `PlatformStoreId`, `PlatformAccount`,
|
||
`SiteCountry`, `SellerId`, `AuthStatus`, `AuthTime`, `TokenExpireTime`, `RefreshExpireTime`,
|
||
`AccessToken`, `RefreshToken`, `IsAutoFulfill`, `Remark`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, 'tiktok', '种子-TikTok跨境店', 'SEED9-TIKTOK-001', 'seed9.tiktok@demo.com',
|
||
'US', 'SELLER-TIKTOK-9003', 'active',
|
||
DATE_SUB(NOW(), INTERVAL 7 DAY), DATE_ADD(NOW(), INTERVAL 30 DAY), DATE_ADD(NOW(), INTERVAL 90 DAY),
|
||
'seed_access_token_tiktok_9', 'seed_refresh_token_tiktok_9', 1, 'CustomerId=9 种子店铺', 0, UUID(), 0, NOW()
|
||
WHERE NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store`
|
||
WHERE `CustomerId` = 9 AND `PlatformStoreId` = 'SEED9-TIKTOK-001' AND `IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store` (
|
||
`CustomerId`, `PlatformCode`, `StoreNickname`, `PlatformStoreId`, `PlatformAccount`,
|
||
`SiteCountry`, `SellerId`, `AuthStatus`, `AuthTime`, `TokenExpireTime`, `RefreshExpireTime`,
|
||
`AccessToken`, `RefreshToken`, `IsAutoFulfill`, `Remark`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, 'temu', '种子-Temu美区店(已过期)', 'SEED9-TEMU-001', 'seed9.temu@demo.com',
|
||
'US', 'SELLER-TEMU-9004', 'expired',
|
||
DATE_SUB(NOW(), INTERVAL 90 DAY), DATE_SUB(NOW(), INTERVAL 5 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY),
|
||
'seed_access_token_temu_9_expired', 'seed_refresh_token_temu_9_expired', 0, 'CustomerId=9 种子店铺-授权过期', 0, UUID(), 0, NOW()
|
||
WHERE NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store`
|
||
WHERE `CustomerId` = 9 AND `PlatformStoreId` = 'SEED9-TEMU-001' AND `IsDeleted` = 0
|
||
);
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 2. 店铺订单 t_sales_store_order(覆盖各履约状态)
|
||
-- ---------------------------------------------------------------------------
|
||
|
||
-- pending
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `IsMultiLabel`, `IsSuspended`,
|
||
`LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'shopee', 'SEED9-ORD-SHOPEE-P001', 'SG',
|
||
2, 45.8000, 'SGD', DATE_SUB(NOW(), INTERVAL 2 HOUR), 'pending',
|
||
'UNPAID', '待付款', 0, 0,
|
||
NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-SHOPEE-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-P001' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- toShip
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `IsMultiLabel`, `CustomTags`, `IsSuspended`,
|
||
`LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'shopee', 'SEED9-ORD-SHOPEE-T001', 'SG',
|
||
1, 28.5000, 'SGD', DATE_SUB(NOW(), INTERVAL 1 DAY), 'toShip',
|
||
'READY_TO_SHIP', '待发货', 0, '急单', 0,
|
||
NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-SHOPEE-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T001' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- shipped
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `ShippingLabelNo`, `ShippingLabelUrl`,
|
||
`IsMultiLabel`, `IsSuspended`, `LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'lazada', 'SEED9-ORD-LAZADA-S001', 'MY',
|
||
3, 129.9000, 'MYR', DATE_SUB(NOW(), INTERVAL 3 DAY), 'shipped',
|
||
'SHIPPED', '已发货', 'LZD-LABEL-90001', 'https://example.com/labels/lzd-90001.pdf',
|
||
0, 0, NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-LAZADA-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-LAZADA-S001' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- completed
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `ShippingLabelNo`,
|
||
`IsMultiLabel`, `IsSuspended`, `LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'tiktok', 'SEED9-ORD-TIKTOK-C001', 'US',
|
||
1, 19.9900, 'USD', DATE_SUB(NOW(), INTERVAL 10 DAY), 'completed',
|
||
'COMPLETED', '已完成', 'TT-LABEL-90002',
|
||
0, 0, NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-TIKTOK-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-TIKTOK-C001' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- canceled
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `IsMultiLabel`, `IsSuspended`,
|
||
`LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'tiktok', 'SEED9-ORD-TIKTOK-X001', 'US',
|
||
2, 35.5000, 'USD', DATE_SUB(NOW(), INTERVAL 5 DAY), 'canceled',
|
||
'CANCELLED', '已取消', 0, 0,
|
||
NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-TIKTOK-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-TIKTOK-X001' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- suspended
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `IsMultiLabel`, `CustomTags`, `IsSuspended`,
|
||
`LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'lazada', 'SEED9-ORD-LAZADA-H001', 'MY',
|
||
1, 59.0000, 'MYR', DATE_SUB(NOW(), INTERVAL 4 DAY), 'suspended',
|
||
'PENDING', '待处理', 0, '缺货搁置', 1,
|
||
NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-LAZADA-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-LAZADA-H001' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- toShip(多件)
|
||
INSERT INTO `t_sales_store_order` (
|
||
`CustomerId`, `StoreId`, `PlatformCode`, `PlatformOrderNo`, `OrderCountry`,
|
||
`ItemCount`, `TotalAmount`, `Currency`, `PlatformOrderTime`, `FulfillStatus`,
|
||
`PlatformStatus`, `PlatformStatusLabel`, `IsMultiLabel`, `IsSuspended`,
|
||
`LastSyncTime`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT 9, s.`Id`, 'shopee', 'SEED9-ORD-SHOPEE-T002', 'PH',
|
||
2, 88.0000, 'PHP', DATE_SUB(NOW(), INTERVAL 6 HOUR), 'toShip',
|
||
'READY_TO_SHIP', '待发货', 1, 0,
|
||
NOW(), 0, 0, NOW()
|
||
FROM `t_sales_store` s
|
||
WHERE s.`CustomerId` = 9 AND s.`PlatformStoreId` = 'SEED9-SHOPEE-001' AND s.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order` o
|
||
WHERE o.`StoreId` = s.`Id` AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T002' AND o.`IsDeleted` = 0
|
||
);
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 3. 订单明细 t_sales_store_order_line
|
||
-- ---------------------------------------------------------------------------
|
||
|
||
-- SEED9-ORD-SHOPEE-P001 两行
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-P001-1', 'SKU-PHONE-CASE-01', '硅胶手机壳', 'https://example.com/img/phone-case.jpg',
|
||
'颜色:黑色;型号:iPhone15', 18.9000, 1, 'SGD', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-P001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-P001-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-P001-2', 'SKU-CABLE-USB-C', 'USB-C 数据线 1m', 'https://example.com/img/usb-c.jpg',
|
||
'长度:1m', 26.9000, 1, 'SGD', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-P001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-P001-2' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- SEED9-ORD-SHOPEE-T001
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-T001-1', 'SKU-EARBUD-PRO', '无线蓝牙耳机 Pro', 'https://example.com/img/earbud.jpg',
|
||
'颜色:白色', 28.5000, 1, 'SGD', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-T001-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- SEED9-ORD-LAZADA-S001 三行
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-S001-1', 'SKU-TSHIRT-M', '纯棉短袖 T 恤', 'https://example.com/img/tshirt.jpg',
|
||
'尺码:M;颜色:藏青', 29.9000, 2, 'MYR', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-LAZADA-S001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-S001-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-S001-2', 'SKU-SOCK-PACK', '运动短袜 3 双装', 'https://example.com/img/socks.jpg',
|
||
'颜色:混色', 19.9000, 1, 'MYR', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-LAZADA-S001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-S001-2' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-S001-3', 'SKU-CAP-BLK', '棒球帽', 'https://example.com/img/cap.jpg',
|
||
'颜色:黑色', 50.2000, 1, 'MYR', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-LAZADA-S001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-S001-3' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- SEED9-ORD-TIKTOK-C001
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-C001-1', 'SKU-LED-STRIP', 'LED 灯带 5m', 'https://example.com/img/led.jpg',
|
||
'色温:暖白', 19.9900, 1, 'USD', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-TIKTOK-C001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-C001-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- SEED9-ORD-TIKTOK-X001
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-X001-1', 'SKU-MOUSE-PAD', '加大鼠标垫', 'https://example.com/img/mousepad.jpg',
|
||
'尺寸:900x400', 15.5000, 1, 'USD', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-TIKTOK-X001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-X001-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-X001-2', 'SKU-KEYCAP-SET', '键帽套装 104 键', 'https://example.com/img/keycap.jpg',
|
||
'风格:布丁', 20.0000, 1, 'USD', 1, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-TIKTOK-X001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-X001-2' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- SEED9-ORD-LAZADA-H001
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-H001-1', 'SKU-POWERBANK-20K', '移动电源 20000mAh', 'https://example.com/img/powerbank.jpg',
|
||
'颜色:灰色', 59.0000, 1, 'MYR', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-LAZADA-H001' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-H001-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- SEED9-ORD-SHOPEE-T002 两行
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-T002-1', 'SKU-BAG-TOTE', '帆布托特包', 'https://example.com/img/tote.jpg',
|
||
'颜色:米白', 48.0000, 1, 'PHP', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T002' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-T002-1' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
INSERT INTO `t_sales_store_order_line` (
|
||
`StoreOrderId`, `PlatformLineId`, `PlatformSku`, `ProductName`, `ProductImageUrl`,
|
||
`VariantText`, `UnitPrice`, `Quantity`, `Currency`, `IsShipExcluded`, `IsDeleted`, `CreateUserId`, `CreateTime`
|
||
)
|
||
SELECT o.`Id`, 'LINE-T002-2', 'SKU-WALLET-MINI', '迷你卡包', 'https://example.com/img/wallet.jpg',
|
||
'颜色:棕色', 40.0000, 1, 'PHP', 0, 0, 0, NOW()
|
||
FROM `t_sales_store_order` o
|
||
WHERE o.`CustomerId` = 9 AND o.`PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T002' AND o.`IsDeleted` = 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM `t_sales_store_order_line` l
|
||
WHERE l.`StoreOrderId` = o.`Id` AND l.`PlatformLineId` = 'LINE-T002-2' AND l.`IsDeleted` = 0
|
||
);
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 4. 补齐收件人(需先执行 migrate_t_sales_store_order_recipient.sql)
|
||
-- ---------------------------------------------------------------------------
|
||
UPDATE `t_sales_store_order` SET
|
||
`RecipientName` = 'Tan Wei Ming',
|
||
`RecipientCompany` = NULL,
|
||
`RecipientPhone` = '+65-91234567',
|
||
`RecipientEmail` = 'tan.wm@example.com',
|
||
`RecipientCountry` = 'SG',
|
||
`RecipientProvince` = 'Singapore',
|
||
`RecipientCity` = 'Singapore',
|
||
`RecipientZipCode` = '018956',
|
||
`RecipientAddress1` = '10 Bayfront Avenue, Marina Bay Sands',
|
||
`RecipientAddress2` = 'Tower 1 #12-01',
|
||
`PlatformExtraJson` = JSON_OBJECT(
|
||
'recipient', JSON_OBJECT(
|
||
'recipientsName', 'Tan Wei Ming',
|
||
'phone', '+65-91234567',
|
||
'email', 'tan.wm@example.com',
|
||
'countryCode', 'SG',
|
||
'province', 'Singapore',
|
||
'city', 'Singapore',
|
||
'zipCode', '018956',
|
||
'streetAddress1', '10 Bayfront Avenue, Marina Bay Sands',
|
||
'streetAddress2', 'Tower 1 #12-01'
|
||
)
|
||
)
|
||
WHERE `CustomerId` = 9 AND `PlatformOrderNo` = 'SEED9-ORD-SHOPEE-P001' AND `IsDeleted` = 0
|
||
AND (`RecipientName` IS NULL OR `RecipientName` = '');
|
||
|
||
UPDATE `t_sales_store_order` SET
|
||
`RecipientName` = 'Lim Jia Hui',
|
||
`RecipientPhone` = '+65-98887766',
|
||
`RecipientCountry` = 'SG',
|
||
`RecipientProvince` = 'Singapore',
|
||
`RecipientCity` = 'Singapore',
|
||
`RecipientZipCode` = '238801',
|
||
`RecipientAddress1` = '313 Orchard Road',
|
||
`PlatformExtraJson` = JSON_OBJECT(
|
||
'recipient', JSON_OBJECT(
|
||
'recipientsName', 'Lim Jia Hui',
|
||
'phone', '+65-98887766',
|
||
'countryCode', 'SG',
|
||
'city', 'Singapore',
|
||
'zipCode', '238801',
|
||
'streetAddress1', '313 Orchard Road'
|
||
)
|
||
)
|
||
WHERE `CustomerId` = 9 AND `PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T001' AND `IsDeleted` = 0
|
||
AND (`RecipientName` IS NULL OR `RecipientName` = '');
|
||
|
||
UPDATE `t_sales_store_order` SET
|
||
`RecipientName` = 'Ahmad Faizal',
|
||
`RecipientPhone` = '+60-12-3456789',
|
||
`RecipientCountry` = 'MY',
|
||
`RecipientProvince` = 'Selangor',
|
||
`RecipientCity` = 'Petaling Jaya',
|
||
`RecipientZipCode` = '47800',
|
||
`RecipientAddress1` = 'No. 18, Jalan SS2/24',
|
||
`PlatformExtraJson` = JSON_OBJECT(
|
||
'recipient', JSON_OBJECT(
|
||
'recipientsName', 'Ahmad Faizal',
|
||
'phone', '+60-12-3456789',
|
||
'countryCode', 'MY',
|
||
'province', 'Selangor',
|
||
'city', 'Petaling Jaya',
|
||
'zipCode', '47800',
|
||
'streetAddress1', 'No. 18, Jalan SS2/24'
|
||
)
|
||
)
|
||
WHERE `CustomerId` = 9 AND `PlatformOrderNo` IN ('SEED9-ORD-LAZADA-S001', 'SEED9-ORD-LAZADA-H001') AND `IsDeleted` = 0
|
||
AND (`RecipientName` IS NULL OR `RecipientName` = '');
|
||
|
||
UPDATE `t_sales_store_order` SET
|
||
`RecipientName` = 'John Smith',
|
||
`RecipientPhone` = '+1-415-555-0198',
|
||
`RecipientEmail` = 'john.smith@example.com',
|
||
`RecipientCountry` = 'US',
|
||
`RecipientProvince` = 'CA',
|
||
`RecipientCity` = 'San Francisco',
|
||
`RecipientZipCode` = '94105',
|
||
`RecipientAddress1` = '1 Market St, Suite 300',
|
||
`PlatformExtraJson` = JSON_OBJECT(
|
||
'recipient', JSON_OBJECT(
|
||
'recipientsName', 'John Smith',
|
||
'phone', '+1-415-555-0198',
|
||
'email', 'john.smith@example.com',
|
||
'countryCode', 'US',
|
||
'province', 'CA',
|
||
'city', 'San Francisco',
|
||
'zipCode', '94105',
|
||
'streetAddress1', '1 Market St, Suite 300'
|
||
)
|
||
)
|
||
WHERE `CustomerId` = 9 AND `PlatformOrderNo` IN ('SEED9-ORD-TIKTOK-C001', 'SEED9-ORD-TIKTOK-X001') AND `IsDeleted` = 0
|
||
AND (`RecipientName` IS NULL OR `RecipientName` = '');
|
||
|
||
UPDATE `t_sales_store_order` SET
|
||
`RecipientName` = 'Maria Santos',
|
||
`RecipientPhone` = '+63-917-123-4567',
|
||
`RecipientCountry` = 'PH',
|
||
`RecipientProvince` = 'Metro Manila',
|
||
`RecipientCity` = 'Makati',
|
||
`RecipientZipCode` = '1226',
|
||
`RecipientAddress1` = 'Ayala Avenue, Glorietta 4',
|
||
`PlatformExtraJson` = JSON_OBJECT(
|
||
'recipient', JSON_OBJECT(
|
||
'recipientsName', 'Maria Santos',
|
||
'phone', '+63-917-123-4567',
|
||
'countryCode', 'PH',
|
||
'province', 'Metro Manila',
|
||
'city', 'Makati',
|
||
'zipCode', '1226',
|
||
'streetAddress1', 'Ayala Avenue, Glorietta 4'
|
||
)
|
||
)
|
||
WHERE `CustomerId` = 9 AND `PlatformOrderNo` = 'SEED9-ORD-SHOPEE-T002' AND `IsDeleted` = 0
|
||
AND (`RecipientName` IS NULL OR `RecipientName` = '');
|
||
|
||
-- 校验摘要(执行后可看)
|
||
SELECT 't_sales_store' AS tbl, COUNT(*) AS cnt FROM `t_sales_store` WHERE `CustomerId` = 9 AND `IsDeleted` = 0
|
||
UNION ALL
|
||
SELECT 't_sales_store_order', COUNT(*) FROM `t_sales_store_order` WHERE `CustomerId` = 9 AND `IsDeleted` = 0
|
||
UNION ALL
|
||
SELECT 't_sales_store_order_with_recipient', COUNT(*)
|
||
FROM `t_sales_store_order`
|
||
WHERE `CustomerId` = 9 AND `IsDeleted` = 0 AND `RecipientName` IS NOT NULL AND `RecipientName` <> ''
|
||
UNION ALL
|
||
SELECT 't_sales_store_order_line', COUNT(*)
|
||
FROM `t_sales_store_order_line` l
|
||
INNER JOIN `t_sales_store_order` o ON o.`Id` = l.`StoreOrderId`
|
||
WHERE o.`CustomerId` = 9 AND o.`IsDeleted` = 0 AND l.`IsDeleted` = 0;
|