From 67bfb5a9118d3a6cec36ff91f4fb7c2520d20959 Mon Sep 17 00:00:00 2001 From: evoxwht <442384644@qq.com> Date: Mon, 3 Jul 2023 11:36:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E6=A0=BC=E5=9B=BE=E7=89=87=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crmeb/app/jobs/ProductCopyJob.php | 25 ++++++++++++++++--- .../product/product/StoreProductServices.php | 15 +++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/crmeb/app/jobs/ProductCopyJob.php b/crmeb/app/jobs/ProductCopyJob.php index 14ef48cc8..876d88da2 100644 --- a/crmeb/app/jobs/ProductCopyJob.php +++ b/crmeb/app/jobs/ProductCopyJob.php @@ -81,8 +81,6 @@ class ProductCopyJob extends BaseJobs $copyTaobao = app()->make(CopyTaobaoServices::class); /** @var StoreProductServices $StoreProductServices */ $StoreProductServices = app()->make(StoreProductServices::class); - /** @var StoreProductAttrValueServices $StoreProductAttrValueServices */ - $StoreProductAttrValueServices = app()->make(StoreProductAttrValueServices::class); //下载图片 $res = $copyTaobao->downloadCopyImage($image); //获取缓存中的轮播图 @@ -97,7 +95,6 @@ class ProductCopyJob extends BaseJobs $image = $slider_images[0]; $slider_images = $slider_images ? json_encode($slider_images) : ''; $StoreProductServices->update($id, ['slider_image' => $slider_images, 'image' => $image]); - $StoreProductAttrValueServices->update(['product_id' => $id], ['image' => $image]); } else { CacheService::set('slider_images_' . $id, $slider_images); } @@ -106,4 +103,26 @@ class ProductCopyJob extends BaseJobs } return true; } + + /** + * 下载商品规格图片 + * @param $value_id + * @param $value_image + * @return bool + */ + public function copyAttrImage($value_id, $value_image) + { + try { + /** @var CopyTaobaoServices $copyTaobao */ + $copyTaobao = app()->make(CopyTaobaoServices::class); + /** @var StoreProductAttrValueServices $StoreProductAttrValueServices */ + $StoreProductAttrValueServices = app()->make(StoreProductAttrValueServices::class); + //下载图片 + $res = $copyTaobao->downloadCopyImage($value_image); + $StoreProductAttrValueServices->update($value_id, ['image' => $res]); + } catch (\Throwable $e) { + Log::error('下载商品规格图片失败,失败原因:' . $e->getMessage() . '_' . $e->getFile() . '_' . $e->getLine()); + } + return true; + } } diff --git a/crmeb/app/services/product/product/StoreProductServices.php b/crmeb/app/services/product/product/StoreProductServices.php index 44f6f180e..826afa83b 100644 --- a/crmeb/app/services/product/product/StoreProductServices.php +++ b/crmeb/app/services/product/product/StoreProductServices.php @@ -667,7 +667,7 @@ class StoreProductServices extends BaseServices ProductCopyJob::dispatch('copySliderImage', [$res->id, $s_image, count($slider_image)]); } else { //下载图片 - $s_image_down[] = app()->make(CopyTaobaoServices::class)->downloadCopyImage($s_image); + $s_image_down[] = app()->make(CopyTaobaoServices::class)->downloadCopyImage(!is_int(strpos($s_image, 'http')) ? 'http://' . ltrim($s_image, '\//') : $s_image); } } @@ -682,9 +682,20 @@ class StoreProductServices extends BaseServices } } + //下载商品规格图 + $productAttrValue = app()->make(StoreProductAttrValueServices::class); + $attrValueList = $productAttrValue->getColumn(['product_id' => $res->id, 'type' => 0], 'image', 'id'); + foreach ($attrValueList as $value_id => $value_image) { + if (sys_config('queue_open', 0) == 1) { + ProductCopyJob::dispatch('copyAttrImage', [$value_id, $value_image]); + } else { + $v_img = app()->make(CopyTaobaoServices::class)->downloadCopyImage(!is_int(strpos($value_image, 'http')) ? 'http://' . ltrim($value_image, '\//') : $value_image); + $productAttrValue->update($value_id, ['image' => $v_img]); + } + } + if (sys_config('queue_open', 0) == 0) { $this->update($res->id, ['slider_image' => $s_image_down ? json_encode($s_image_down) : '', 'image' => $s_image_down[0]]); - app()->make(StoreProductAttrValueServices::class)->update(['product_id' => $res->id], ['image' => $s_image_down[0]]); $storeDescriptionServices->saveDescription((int)$res->id, $description); } }