addArgument('name', InputArgument::OPTIONAL, '商品主图片批量缩略'); } /** * @param InputInterface $input * @param OutputInterface $output * @return int */ // protected function execute(InputInterface $input, OutputInterface $output): int // { // $goods = Goods::select('goods_id','goods_cover')->skip(10)->limit(10)->get()->toArray(); // // foreach ($goods as $good){ // if (!file_exists(public_path($good['goods_cover']))){ // echo "【".$good['goods_id']."】源文件不存在,跳过 \n"; // continue; // } // $fileNameArray = explode(DIRECTORY_SEPARATOR,$good['goods_cover']); // $two = $fileNameArray[count($fileNameArray)-2]; // if ($two == 'thumb'){ // echo "【".$good['goods_id']."】已存在,跳过 \n"; // continue; // } // array_splice($fileNameArray,-1,0,'thumb'); // // $thumbPath = public_path(ltrim(implode(DIRECTORY_SEPARATOR,$fileNameArray),DIRECTORY_SEPARATOR)); // if (file_exists($thumbPath)){ // echo "【".$good['goods_id']."】缩略图已存在,跳过 \n"; // continue; // } // $path = array_slice($fileNameArray,0,-1); // $pathStr = public_path(ltrim(implode(DIRECTORY_SEPARATOR,$path),DIRECTORY_SEPARATOR)); // // if (!is_dir($pathStr) && !mkdir($pathStr, 0755, true)){ // throw new StorageException('文件夹创建失败,请核查是否有对应权限。'); // } // // $image = ImageManagerStatic::make(public_path($good['goods_cover'])); // // $imgWidth = $image->width(); // $imgHeight = $image->height(); // $rate = round($imgWidth / 200, 2); // $height = intval($imgHeight / $rate); // $image = $image->resize(200, $height); // $encoded = $image->encode('jpg'); // $encoded->save($thumbPath); // // Goods::where('goods_id',$good['goods_id'])->update(['goods_cover'=>implode(DIRECTORY_SEPARATOR,$fileNameArray)]); // // echo "【".$good['goods_id']."】已完成 \n"; // } // // // // return self::SUCCESS; // } protected function execute(InputInterface $input, OutputInterface $output): int { $details = GoodsDetail::select('join_detail_goods_id', 'goods_detail_slider_json') ->skip(0) ->limit(1) ->get() ->toArray(); foreach ($details as $detail) { if (!empty($detail['goods_detail_slider_json'])) { $sliderJson = json_decode($detail['goods_detail_slider_json'], true); $sliders = explode(',', $sliderJson['slider']); $sliderData = []; foreach ($sliders as $slider) { if (!file_exists(public_path($slider))) { $sliderData[] = $slider; echo "【" . $slider . "】源文件不存在,跳过 \n"; continue; } $fileNameArray = explode('/', $slider); $two = $fileNameArray[count($fileNameArray) - 2]; if ($two == 'thumb') { echo "【" . $detail['join_detail_goods_id'] . "】已存在,跳过 \n"; continue; } array_splice($fileNameArray, -1, 0, 'thumb'); $thumbPath = public_path(ltrim(implode('/', $fileNameArray), '/')); if (file_exists($thumbPath)) { $sliderData[] = implode('/', $fileNameArray); echo "【" . $detail['join_detail_goods_id'] . "】缩略图已存在,跳过 \n"; continue; } $path = array_slice($fileNameArray, 0, -1); $pathStr = public_path(ltrim(implode('/', $path), '/')); if (!is_dir($pathStr) && !mkdir($pathStr, 0755, true)) { throw new StorageException('文件夹创建失败,请核查是否有对应权限。'); } $image = ImageManagerStatic::make(public_path($slider)); $imgWidth = $image->width(); $imgHeight = $image->height(); $rate = round($imgWidth / 200, 2); $height = intval($imgHeight / $rate); $image = $image->resize(200, $height); $encoded = $image->encode('jpg'); $encoded->save($thumbPath); $sliderData[] = implode('/', $fileNameArray); } if (empty($sliderData)){ echo "【" . $detail['join_detail_goods_id'] . "】跳过 \n"; continue; } GoodsDetail::where('join_detail_goods_id',$detail['join_detail_goods_id']) ->update(['goods_detail_slider_json'=>json_encode(['slider'=>implode(',',$sliderData)])]); echo "【" . $detail['join_detail_goods_id'] . "】已完成 \n"; } } return self::SUCCESS; } }