function ($params) { return [ 'filters' => [ ['field' => 'status', 'operator' => '=', 'value' => '1'], ], 'fields' => ['id','status'], 'relations' => [ 'skuAttributes' => [], 'skuAttributes.attribute' => ['id', 'input_type', 'is_img', 'status'], // 'skuAttributes.attribute.translation' => ['attribute_name'], 'skuAttributes.value' => ['id','color_code'], ], 'sorts' => [ ['field' => 'created_at', 'direction' => 'desc'] ], 'pagination' => [ 'page' => $params['page'] ?? 1, 'per_page' => $params['per_page'] ?? 10, ] ]; }, 'show' => function ($params) { return [ 'filters' => [ ['field'=>'id', 'operator'=>'=', 'value'=> $params['id']], ], 'fields' => ['id', 'status'], 'relations' => [ 'skuAttributes' => [], 'skuAttributes.attribute' => ['id', 'input_type', 'is_img', 'status'], // 'skuAttributes.attribute.translation' => ['attribute_name'], 'skuAttributes.value' => ['id','color_code'], ], ]; }, ]; } public function add(array $params) { $sourceLocale = locale(); // $sourceFields = $this->extractSourceFields($params); // // if (empty($sourceFields)) { // throw new \InvalidArgumentException("请传递至少一条 {$sourceLocale} 语言的翻译字段"); // }; $skuAttributes = $params['skuAttributes']; unset($params['skuAttributes']); $VehicleNewSkuAttributesService = new VehicleNewSkuAttributesService(new VehicleNewSkuAttributesModel()); Db::beginTransaction(); try { $sku_code = sprintf("%05d", $params['vehicle_id']); $params['sku_code'] = rand(100,999).$sku_code[0].' '.substr($sku_code,1).' '.sprintf("%04d", $skuAttributes[0]['attribute_id']).' '.sprintf("%04d", $skuAttributes[0]['value_id']); $info = $this->create($params); if (!$info) { throw new BusinessException('提交失败'); } // 异步翻译并写入 hs_vehicle_data_translation 表 // (new TranslationService())->queueTranslations( // 'vehicleNewAttributes', // $info->id, // $sourceLocale, // $sourceFields // ); foreach ($skuAttributes as $skuAttribute) { $skuAttribute['sku_id'] = $info->id; $skuAttribute_res = $VehicleNewSkuAttributesService->create($skuAttribute); if (!$skuAttribute_res) { throw new BusinessException('提交失败'); } } Db::commit(); return true; } catch (\Throwable $th) { Db::rollBack(); throw $th; } } public function edit(array $params, int $id) { $sourceLocale = locale(); // $sourceFields = $this->extractSourceFields($params); // // if (empty($sourceFields)) { // throw new \InvalidArgumentException("请传递至少一条 {$sourceLocale} 语言的翻译字段"); // }; $skuAttributes = $params['skuAttributes']; unset($params['skuAttributes']); $VehicleNewSkuAttributesService = new VehicleNewSkuAttributesService(new VehicleNewSkuAttributesModel()); Db::beginTransaction(); try { $info = $this->update($id, $params); if (!$info) { throw new BusinessException('提交失败'); } // 异步翻译并写入 hs_vehicle_data_translation 表 // (new TranslationService())->queueTranslations( // 'vehicleNewAttributes', // $id, // $sourceLocale, // $sourceFields // ); $skuAttributesId = []; foreach ($skuAttributes as $skuAttribute) { $skuAttribute['sku_id'] = $id; if(!empty($skuAttribute['id'])){ $skuAttributeId = $skuAttribute['id']; $skuAttributesId[] = $skuAttributeId; $skuAttribute_res = $VehicleNewSkuAttributesService->update($skuAttributeId, $skuAttribute); if (!$skuAttribute_res) { throw new BusinessException('提交失败:属性值'); } } else { unset($skuAttribute['id']); $skuAttribute_res = $VehicleNewSkuAttributesService->create($skuAttribute); if (!$skuAttribute_res) { throw new BusinessException('提交失败:属性值'); } $skuAttributeId = $skuAttribute_res->id; $skuAttributesId[] = $skuAttributeId; } } VehicleNewSkuAttributesModel::whereNotIn('id', $skuAttributesId)->where('attribute_id',$id)->delete(); Db::commit(); return true; } catch (\Throwable $th) { Db::rollBack(); throw $th; } } }