update shopee order parse

This commit is contained in:
2026-02-05 08:55:17 +08:00
parent 6896e7758b
commit 63268f514b
@@ -107,7 +107,9 @@ class Order extends AbstractOrderParse
foreach ($records as $record) {
$_origin_order_item = $record['order_list']; // 'order_list' 为来自 shopee 原始数据的 订单子项信息
dump($record);
$_origin_order_item = $record['item_list']; // 'item_list' 为来自 shopee 原始数据的 订单子项信息
// 解析订单子项数据,传入 platform_order_id(实现 OrderContract 契约方法)
$order_items = $this->parseOrderItems($_origin_order_item, $record['order_sn']);
@@ -117,10 +119,11 @@ class Order extends AbstractOrderParse
// @attention 此处业务决定了 电商平台数据 和 数据仓库 之间的映射关系
// 返回包含订单数据和子项数据的结构
$raw = \json_encode($record);
yield [
'order' => [
'company_id' => $this->getCompany()->id,
'platform_id' => 25,
'platform_id' => $this->platform->id,
'store_id' => $this->getStore()->id,
'order_status_id'=> OrderStatus::{$record['order_status']}->value,
'platform_order_id' => $record['order_sn'],
@@ -150,9 +153,11 @@ class Order extends AbstractOrderParse
'paid_date' => $record['pay_time'] ? Carbon::createFromTimestamp($record['pay_time'], $this->getStore()->getTimezoneString()) : null,
'shipping_date' => $record['pickup_done_time'] > 0 ? Carbon::createFromTimestamp($record['pickup_done_time'], $this->getStore()->getTimezoneString()) : null,
'country' => $record['region'], // address 等地理位置信息因 shopee 数据保护协议已被隐藏, 目前仅提供 ISO 格式国家代码
'raw' => json_encode($record['raw']),
],
'items' => $order_items,
'raw' => $raw,
'ext' => null,
'hash' => \md5($raw),
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s')
];
}
});
@@ -212,7 +217,8 @@ class Order extends AbstractOrderParse
*/
public function getUniqueBy(): array
{
return ['store_id', 'platform_order_id'];
// @attention create_date 为数据库强制要求,必需携带
return ['store_id', 'platform_order_id', 'created_date'];
}
/**
@@ -250,7 +256,8 @@ class Order extends AbstractOrderParse
'country',
'raw',
'ext',
'updated_at',
'hash',
'updated_at', // 更新时刷新,created_at 不包含以保留原始创建时间
];
// 动态计算方案(如果表字段经常变化,可以使用):
@@ -355,7 +362,7 @@ class Order extends AbstractOrderParse
*/
public function formatOrderItemsFromRaw(array $raw_data, array $platform_orders_id_to_local_db_order_id_map): array
{
// 1. 从 $rawData 中提取订单子项信息(Shopee 的 order_list 字段)
// 1. 从 $rawData 中提取订单子项信息(Shopee 的 item_list 字段)
// 2. 使用 $platformOrderIdToLocalDbOrderIdMap 获取本地 order_id
// 3. 调用 shopeeOrderItemMap() 进行单个子项的映射转换
// 4. 返回可供 OrderItem::fill() 使用的数组
@@ -367,10 +374,12 @@ class Order extends AbstractOrderParse
$items = [];
foreach ($raw_data as $raw_orders) {
foreach ($raw_orders['order_list'] as $raw_order_item) {
$parent_order_created_date = Carbon::createFromTimestamp($raw_orders['create_time'], $this->getStore()->getTimezoneString());
foreach ($raw_orders['item_list'] as $raw_order_item) {
// 数据库中父订单 id
$db_order_id = $platform_orders_id_to_local_db_order_id_map[$raw_orders['tid']];
$items[] = $this->shopeeOrderItemMap($raw_order_item, $raw_orders['tid'], $db_order_id, $raw_orders['created']);
$db_order_id = $platform_orders_id_to_local_db_order_id_map[$raw_orders['order_sn']];
$items[] = $this->shopeeOrderItemMap($raw_order_item, $raw_orders['order_sn'], $db_order_id, $parent_order_created_date);
}
}