update tmall order parse

This commit is contained in:
2026-02-02 13:47:33 +08:00
parent e8c83cb911
commit 5b997869fc
@@ -37,12 +37,12 @@ class Order extends EntityParse
throw new InvalidArgumentException('company_id is required in metadata'); throw new InvalidArgumentException('company_id is required in metadata');
} }
$companyId = $metadata['company_id']; $company_id = $metadata['company_id'];
$company = Company::find($companyId); $company = Company::find($company_id);
if (!$company) { if (!$company) {
throw new InvalidArgumentException("Company with ID {$companyId} not found"); throw new InvalidArgumentException("Company with ID {$company_id} not found");
} }
return $company; return $company;
@@ -64,12 +64,12 @@ class Order extends EntityParse
throw new InvalidArgumentException('store_id is required in metadata'); throw new InvalidArgumentException('store_id is required in metadata');
} }
$storeId = $metadata['store_id']; $store_id = $metadata['store_id'];
$store = Store::find($storeId); $store = Store::find($store_id);
if (!$store) { if (!$store) {
throw new InvalidArgumentException("Store with ID {$storeId} not found"); throw new InvalidArgumentException("Store with ID {$store_id} not found");
} }
return $store; return $store;
@@ -80,15 +80,15 @@ class Order extends EntityParse
* *
* 将原始数据映射为可供 Model 使用的数组集合 * 将原始数据映射为可供 Model 使用的数组集合
* *
* @param array $rawData 原始数据数组,通常来自 $data['raw_data'] * @param array $raw_data 原始数据数组,通常来自 $data['raw_data']
* @return LazyCollection 返回 LazyCollection,每个元素为可供 Model::fill() 使用的数组 * @return LazyCollection 返回 LazyCollection,每个元素为可供 Model::fill() 使用的数组
*/ */
public function entityMap(array $rawData): LazyCollection public function entityMap(array $raw_data): LazyCollection
{ {
// 使用 LazyCollection 进行延迟处理,提高性能 // 使用 LazyCollection 进行延迟处理,提高性能
return LazyCollection::make(function () use ($rawData) { return LazyCollection::make(function () use ($raw_data) {
// 如果 rawData 是单个记录,转换为数组 // 如果 raw_data 是单个记录,转换为数组
$records = isset($rawData[0]) ? $rawData : [$rawData]; $records = isset($raw_data[0]) ? $raw_data : [$raw_data];
foreach ($records as $record) { foreach ($records as $record) {
@@ -208,14 +208,14 @@ class Order extends EntityParse
/** /**
* 根据淘宝订单状态确定对应的 Tools 订单状态 * 根据淘宝订单状态确定对应的 Tools 订单状态
* *
* @param string $platformOrderStatus 淘宝平台订单状态 * @param string $platform_order_status 淘宝平台订单状态
* @return int Tools 订单状态 ID * @return int Tools 订单状态 ID
*/ */
public function getOrderStatusId(string $platformOrderStatus): int public function getOrderStatusId(string $platform_order_status): int
{ {
$statusMap = $this->orderStatusMap(); $status_map = $this->orderStatusMap();
return $statusMap[$platformOrderStatus] ?? OrderStatus::PAYMENT_COMPLETE->value; return $status_map[$platform_order_status] ?? OrderStatus::PAYMENT_COMPLETE->value;
} }
/** /**
@@ -266,23 +266,18 @@ class Order extends EntityParse
* *
* orderItems 的输出结果为 \App\Model\OrderItem::fill() 可以直接使用的数据格式 * orderItems 的输出结果为 \App\Model\OrderItem::fill() 可以直接使用的数据格式
* *
* @param array $rawData * @param array $raw_data
* @return array * @return array
*/ */
public function formatOrderItemsFromRaw(array $raw_data, array $platform_orders_id_to_local_db_order_id_map): array
public function formatOrderItemsFromRaw(array $rawData, array $platform_orders_id_to_local_db_order_id_map): array
{ {
// 由于 $rawData 是批量数据,包含多条订单结果,因此订单子项需要从集合中提取 // 由于 $raw_data 是批量数据,包含多条订单结果,因此订单子项需要从集合中提取
// Tmall 平台响应体的数据格式为: collection->payload->orders // Tmall 平台响应体的数据格式为: collection->payload->orders
// $platform_orders_id_to_local_db_order_id_map 内部元素数据格式为 [platform_order_id => local db order id] // $platform_orders_id_to_local_db_order_id_map 内部元素数据格式为 [platform_order_id => local db order id]
if(empty($rawData['orders'])){
return [];
}
$items = []; $items = [];
foreach ($rawData as $raw_orders) { foreach ($raw_data as $raw_orders) {
foreach ($raw_orders['orders'] as $raw_order_item) { foreach ($raw_orders['orders'] as $raw_order_item) {
// 数据库中父订单 id // 数据库中父订单 id
$db_order_id = $platform_orders_id_to_local_db_order_id_map[$raw_orders['tid']]; $db_order_id = $platform_orders_id_to_local_db_order_id_map[$raw_orders['tid']];
@@ -312,8 +307,10 @@ class Order extends EntityParse
'sub_order_type_id' => '', 'sub_order_type_id' => '',
'product_id' => '', 'product_id' => '',
'platform_product_id' =>$item['num_iid'], 'platform_product_id' =>$item['num_iid'],
'product_sku' => $item['outer_sku_id'], // @attention @TODO 需要对 运营侧的产品维护做进一步规范
'product_barcode' => '', 'product_sku' => $item['outer_sku_id'] ?? null,
// @attention @TODO 需要对 运营侧的产品维护做进一步规范
'product_barcode' => null,
'unit_price' => $item['price'], 'unit_price' => $item['price'],
'quantity' => $item['num'], 'quantity' => $item['num'],
'discount' => $item['discount_fee'], 'discount' => $item['discount_fee'],