123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- namespace App\Admin\Forms;
- use App\Admin\Repositories\BaseProductCategory;
- use App\Admin\Repositories\RpcAlbum;
- use App\Libraries\CommonHelper;
- use App\Models\BaseProduct;
- use App\Distributor\Repositories\DistProductCategory;
- use App\Models\BaseProductImage;
- use App\Models\DistProduct;
- use App\Models\DistProductImage;
- use Dcat\Admin\Widgets\Form;
- class ImportAlbum extends Form
- {
- /**
- * Handle the form request.
- *
- * @param array $input
- *
- * @return mixed
- */
- public function handle(array $input)
- {
- $albumIds = explode(',', $input['album_ids']);
- $categoryId = $input['category_id'];
- // 检查 product_ids 是否为空
- if (empty($input['album_ids'])) {
- return $this
- ->response()
- ->error('请选择要导入的产品');
- }
- try {
- //RPC读取相册
- $rpcAlbum = new RpcAlbum();
- $albumResult = $rpcAlbum->getByids($albumIds);
- if ($albumResult['status']= false) {
- return $this
- ->response()
- ->error('RPC获取相册失败:'. $albumResult['msg']);
- }
- foreach ($albumResult['data'] as $item) {
- $title = isset($item['title']) ? $item['title'] : $item['model'];
- // 创建新的 DistProduct 记录
- $distProduct = BaseProduct::create([
- 'category_id' => $categoryId,
- 'title' => $title,
- 'sku' => $item['model'], // 假设 $baseProduct 也有 sku 字段
- 'issuance_date' => null, // 假设 $baseProduct 也有 issuance_date 字段
- 'order' => 0, // 假设 $baseProduct 也有 order 字段
- 'enabled' => 1, // 假设 $baseProduct 也有 enabled 字段
- 'content' => $this->changeToimagesHTML($item['en_detail']), // 假设 $baseProduct 也有 content 字段
- 'parameters' => $item['parameters'], // 假设 $baseProduct 也有 parameters 字段
- 'seo_title'=> $title,
- 'seo_keywords' => '',
- 'seo_description' => '',
- 'created_at' => now(), // 自动填充创建时间
- 'updated_at' => now(), // 自动填充更新时间
- ]);
- //DistProduct::where('id', $distProduct->id)->update(['slug' => $distProduct->id]);
- // 遍历 base_product_image 表中的记录,并插入到 dist_product_image 表中
- $cover = json_decode($item['cover'], true);
- foreach ($cover as $baseImage) {
- $i = 1;
- BaseProductImage::create([
- 'image_url' => $baseImage,
- 'product_id' => $distProduct->id, // 使用新创建的 DistProduct 的 ID
- 'order' => $i,
- 'created_at' => now(), // 自动填充创建时间
- 'updated_at' => now(), // 自动填充更新时间
- ]);
- $i++;
- }
- }
- return $this
- ->response()
- ->success('导入成功')
- ->refresh();
- } catch (\Exception $e) {
- throw $e;
- return $this
- ->response()
- ->error('导入失败: ' . $e->getMessage());
- }
- }
- public function changeToimagesHTML($content) {
- $content = json_decode($content, true);
- $html = '';
- foreach ($content as $item) {
- $item = CommonHelper::ossUrl($item);
- $html.= '<img src="'. $item. '">';
- }
- return $html;
- }
- /**
- * Build a form here.
- */
- public function form()
- {
- // 设置隐藏表单,传递用户id
- $this->select('category_id', admin_trans_label('category_name'))
- ->options(BaseProductCategory::selectOptions())
- ->required();
- $this->hidden('album_ids')->attribute('id', 'album_ids');
- }
- /**
- * The data of the form.
- *
- * @return array
- */
- public function default()
- {
- return [];
- }
- }
|