From 1037b8ab903b3f6c803cc63d709c6c484f9560ef Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Thu, 27 Feb 2025 16:53:14 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BA=A7=E5=93=81=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E9=93=BE=E6=8E=A5=E4=B8=8A=E4=BC=A0=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=90=8C=E5=9E=8B=E5=8F=B7=E5=90=8C=E5=B9=B3=E5=8F=B0=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/ProductPurchaseLink.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/admin/controller/v1/ProductPurchaseLink.php b/app/admin/controller/v1/ProductPurchaseLink.php index 0fa652bb..80783bb7 100644 --- a/app/admin/controller/v1/ProductPurchaseLink.php +++ b/app/admin/controller/v1/ProductPurchaseLink.php @@ -120,6 +120,15 @@ class ProductPurchaseLink ->where('platform', 'in', $platforms_name) ->column('id', 'platform'); + // 表格中spu的平台重复次数 + $spu_platform_map = []; + foreach ($xlsx_data as $v) { + if (!isset($spu_platform_map[$v['spu'] . '_' . $v['platform']])) { + $spu_platform_map[$v['spu'] . '_' . $v['platform']] = 0; + } + $spu_platform_map[$v['spu'] . '_' . $v['platform']]++; + } + $data = []; $errors = []; $chunks = array_chunk($xlsx_data, 500, true); @@ -129,7 +138,7 @@ class ProductPurchaseLink $products_map = ProductModel::language(request()->lang_id) ->where('spu', 'in', $spus) ->column('id', 'spu'); - + $items = []; foreach ($chunk as $r => $it) { if (empty($platforms_map[$it['platform']])) { @@ -140,6 +149,10 @@ class ProductPurchaseLink $errors[] = sprintf("第%d行,型号不存在", $r); continue; } + if ($spu_platform_map[$it['spu'] . '_' . $it['platform']] > 1) { + $errors[] = sprintf("第%d行,型号【%s】和平台【%s】有重复", $r, $it['spu'], $it['platform']); + continue; + } $items[] = [ 'language_id' => request()->lang_id, 'product_id' => $products_map[$it['spu']],