diff --git a/modules/EcommerceFinance/Repositories/AfterSalesCostRowRepository.php b/modules/EcommerceFinance/Repositories/AfterSalesCostRowRepository.php index 019131a1..57fa7358 100644 --- a/modules/EcommerceFinance/Repositories/AfterSalesCostRowRepository.php +++ b/modules/EcommerceFinance/Repositories/AfterSalesCostRowRepository.php @@ -81,16 +81,10 @@ class AfterSalesCostRowRepository */ public static function toRecord(array $payload, ?string $importedAt = null): array { - $rowKey = sha1(implode('|', [ - (string) ($payload['shop_name'] ?? ''), - (string) ($payload['online_order_no'] ?? ''), - (string) ($payload['internal_order_no'] ?? ''), - (string) ($payload['sub_order_no'] ?? ''), - (string) ($payload['after_sales_no'] ?? ''), - (string) ($payload['product_code'] ?? ''), - (string) ($payload['product_quantity'] ?? ''), - (string) ($payload['product_amount'] ?? ''), - ])); + // 以整行内容做键:同一单同一商品可能出现多行,只有完全相同的一行才合并。 + ksort($payload); + + $rowKey = sha1((string) json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); $now = $importedAt ?? now()->toDateTimeString();