From a46d36ddaa91832f9f28ff6584386d929c1aaaec Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 15 Dec 2025 14:07:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/SkuController.php | 48 +++++++++++++++++--------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/app/admin/controller/SkuController.php b/app/admin/controller/SkuController.php index eb73c35..28e254d 100644 --- a/app/admin/controller/SkuController.php +++ b/app/admin/controller/SkuController.php @@ -6,6 +6,7 @@ use app\common\model\PostCategory; use app\common\model\Sku; use app\common\model\SkuAttribute; use app\common\service\OssService; +use app\common\service\UploadService; use app\common\traits\crud\CrudControllerTrait; use app\common\service\SkuService; use PhpOffice\PhpSpreadsheet\IOFactory; @@ -96,7 +97,7 @@ class SkuController extends BaseController $sheet = $spreadsheet->getActiveSheet(); // 提取图片(按行号) -// $rowImages = $this->extractImages($sheet); + $rowImages = $this->extractImages($sheet); $highestRow = $sheet->getHighestRow(); $highestCol = $sheet->getHighestColumn(); @@ -136,15 +137,22 @@ class SkuController extends BaseController } $data['category_id'] = PostCategory::where('name', $rowData[3])->value('id')??0; -// if(!empty($rowData[5])){ -// $desci = explode(';', $rowData[5]); -// $desc = []; -// foreach ($desci as $k => $v){ -// $item = explode(':', $v); -// $desc[$item[0]] = $item[1]; -// $data['desc'] = json_encode($desc); -// } -// } + if(!empty($rowData[5])){ + $desci = explode(';', $rowData[5]); + $desc = []; + foreach ($desci as $k => $v){ + $item = explode(':', $v); + $attr = ['attr_name'=>$item[0],'attr_value'=>$item[1]]; + $skuAttribute = SkuAttribute::where('attr_name', $item[0])->first(); + if (empty($skuAttribute)) { + continue; + } + $attr['attr_id'] = $skuAttribute->id; + $attr['category_id'] = $skuAttribute->category_id; + $desc[] = $attr; + $data['desc'] = json_encode($desc); + } + } $data['code'] = $this->service->generateUniqueCode(); $data['brand'] = $data['brand'] ?: '西门子'; @@ -152,7 +160,7 @@ class SkuController extends BaseController $data['status'] = $data['status'] ?? 2; // 图片 -// $data['main_image'] = $rowImages[$row] ?? null; + $data['main_image'] = $rowImages[$row] ?? null; $data['created_at'] = $now; $data['updated_at'] = $now; @@ -185,20 +193,28 @@ class SkuController extends BaseController private function extractImages($sheet): array { $images = []; + + $uploadService = new UploadService(); foreach ($sheet->getDrawingCollection() as $drawing) { if ($drawing instanceof Drawing) { + // 取行号 preg_match('/\d+/', $drawing->getCoordinates(), $m); $row = (int)$m[0]; - $dir = runtime_path('upload/images/'); - if (!is_dir($dir)) mkdir($dir, 0755, true); + // Excel 临时图片路径 + $tmpPath = $drawing->getPath(); + if (!is_file($tmpPath)) { + continue; + } - $file = uniqid() . '.' . $drawing->getExtension(); - copy($drawing->getPath(), $dir . $file); + // 上传到 OSS + $ossUrl = $uploadService->uploadLocalFile(['path' => $tmpPath, 'scene' => 'sku']); - $images[$row] = 'upload/images/' . $file; + // 一行只保留一张主图 + $images[$row] = $ossUrl['file_url']; } } + return $images; }