新车修改

This commit is contained in:
2025-05-22 14:38:48 +08:00
parent 1c0d5d5882
commit 9c82aa5265
3 changed files with 222 additions and 44 deletions
+40 -19
View File
@@ -40,7 +40,7 @@ class VehicleNewController extends BaseController
protected function postProcessItem(array $item, string $scene): array
{
if ($scene === 'default') {
if ($scene === 'default' || $scene === 'show') {
$result = [
'id' => $item['id'],
'vin' => $item['vin'],
@@ -55,32 +55,53 @@ class VehicleNewController extends BaseController
'condition_desc' => isset($item['translation']) ? $item['translation']['condition_desc'] : '',
'created_at' => date('Y-m-d H:i:s', $item['created_at']),
'updated_at' => date('Y-m-d H:i:s', $item['updated_at']),
'brand_name' => is_array($item['brand']) ? $item['brand']['translation']['name'] : '',
'energy_name' => is_array($item['energy']) ? $item['energy']['translation']['name'] : '',
'type_name' => isset($item['types']) ? $item['types']['translation']['name'] : '',
'model_name' => isset($item['models']) ? $item['models']['translation']['name'] : '',
];
if ($item['cover']) {
$result['cover_full'] = (new \app\mzl\modules\upload\service\OssService())->generatePrivateUrl($item['cover']);
}
if ($item['video']) {
$result['video_full'] = (new \app\mzl\modules\upload\service\OssService())->generatePrivateUrl($item['video']);
}
foreach ($item['asked'] as $asked) {
$result['asked']['id'] = $asked['id'];
$result['asked']['vehicle_id'] = $asked['vehicle_id'];
$result['asked']['status'] = $asked['status'];
$result['asked']['title'] = isset($asked['translation']) ? $asked['translation']['title']:'';
$result['asked']['content'] = isset($asked['translation']) ? $asked['translation']['content']:'';
$askedRes['id'] = $asked['id'];
$askedRes['vehicle_id'] = $asked['vehicle_id'];
$askedRes['status'] = $asked['status'];
$askedRes['title'] = isset($asked['translation']) ? $asked['translation']['title']:'';
$askedRes['content'] = isset($asked['translation']) ? $asked['translation']['content']:'';
$result['asked'][] = $askedRes;
}
foreach ($item['trait'] as $trait) {
$result['trait']['id'] = $trait['id'];
$result['trait']['vehicle_id'] = $trait['vehicle_id'];
$result['trait']['status'] = $trait['status'];
$result['trait']['title'] = isset($trait['translation']) ? $trait['translation']['title']:'';
$result['trait']['content'] = isset($trait['translation']) ? $trait['translation']['content']:'';
$traitRes['id'] = $trait['id'];
$traitRes['vehicle_id'] = $trait['vehicle_id'];
$traitRes['status'] = $trait['status'];
$traitRes['title'] = isset($trait['translation']) ? $trait['translation']['title']:'';
$traitRes['content'] = isset($trait['translation']) ? $trait['translation']['content']:'';
$result['trait'][] = $traitRes;
}
foreach ($item['album'] as $album) {
$result['album']['id'] = $album['id'];
$result['album']['vehicle_id'] = $album['vehicle_id'];
$result['album']['status'] = $album['status'];
$result['album']['alt'] = isset($album['translation']) ? $album['translation']['alt']:'';
$albumRes['id'] = $album['id'];
$albumRes['vehicle_id'] = $album['vehicle_id'];
$albumRes['pic'] = $album['pic'];
$albumRes['status'] = $album['status'];
$albumRes['alt'] = isset($album['translation']) ? $album['translation']['alt']:'';
if ($albumRes['pic']) {
$albumRes['pic_full'] = (new \app\mzl\modules\upload\service\OssService())->generatePrivateUrl($albumRes['pic']);
}
$result['album'][] = $albumRes;
}
foreach ($item['content'] as $content) {
$result['content']['id'] = $content['id'];
$result['content']['vehicle_id'] = $content['vehicle_id'];
$result['content']['status'] = $content['status'];
$result['content']['content'] = isset($content['translation']) ? $content['translation']['content']:'';
$contentRes['id'] = $content['id'];
$contentRes['vehicle_id'] = $content['vehicle_id'];
$contentRes['status'] = $content['status'];
$contentRes['content'] = isset($content['translation']) ? $content['translation']['content']:'';
$result['content'][] = $contentRes;
}
return $result;
}
@@ -56,4 +56,9 @@ class VehicleNewContentService extends BaseService
// }
];
}
// 声明需要多语言翻译
protected array $translatable = [
'content',
];
}
+177 -25
View File
@@ -50,6 +50,10 @@ class VehicleNewService extends BaseService
'content' => ['id', 'vehicle_id', 'status', 'sort'],
'content.translation' => ['id', 'content_id', 'locale', 'content'],
],
'brand.translation' => ['brand_id', 'name'],
'types.translation' => ['type_id', 'name'],
'energy.translation' => ['energy_id', 'name'],
'models.translation' => ['model_id', 'name'],
'sorts' => [
['field' => 'id', 'direction' => 'desc']
],
@@ -77,6 +81,10 @@ class VehicleNewService extends BaseService
'content' => ['id', 'vehicle_id', 'status', 'sort'],
'content.translation' => ['id', 'content_id', 'locale', 'content'],
],
'brand.translation' => ['brand_id', 'name'],
'types.translation' => ['type_id', 'name'],
'energy.translation' => ['energy_id', 'name'],
'models.translation' => ['model_id', 'name'],
'sorts' => [
['field' => 'id', 'direction' => 'desc']
],
@@ -169,7 +177,7 @@ class VehicleNewService extends BaseService
$albumsourceFields = $VehicleNewAlbumService->extractSourceFields($album);
$album['vehicle_id'] = $info->id;
$album_res = $VehicleNewAlbumService->create($album);
if (!$trait_res) {
if (!$album_res) {
throw new BusinessException('提交失败');
}
(new TranslationService())->queueTranslations(
@@ -183,14 +191,14 @@ class VehicleNewService extends BaseService
foreach ($contents as $content) {
$contentsourceFields = $VehicleNewContentService->extractSourceFields($content);
$content['vehicle_id'] = $info->id;
$trait_res = $VehicleNewContentService->create($content);
if (!$trait_res) {
$content_res = $VehicleNewContentService->create($content);
if (!$content_res) {
throw new BusinessException('提交失败');
}
(new TranslationService())->queueTranslations(
'vehicleNewContent',
$trait_res->id,
$content_res->id,
$sourceLocale,
$contentsourceFields
);
@@ -213,18 +221,35 @@ class VehicleNewService extends BaseService
throw new \InvalidArgumentException("请传递至少一条 {$sourceLocale} 语言的翻译字段");
};
$album = [];
$trans = [];
$albums = VehicleNewAlbumModel::VEHICLE_New_ALBUM_FIELDS;
foreach ($params as $ko => $vo) {
if (in_array($ko, $albums)) {
$album[$ko] = $vo ?? '';
} elseif (in_array($ko, VehicleNewModel::TRANS_FIELDS)) {
$trans[$ko] = $vo ?? '';
}else{
$data[$ko] = $vo ?? '';
}
}
$askeds = $params['asked'];
unset($params['asked']);
$traits = $params['trait'];
unset($params['trait']);
$albums = $params['album'];
unset($params['album']);
$contents = $params['content'];
unset($params['content']);
$VehicleNewAskedService = new VehicleNewAskedService(new VehicleNewAskedModel());
$VehicleNewTraitService = new VehicleNewTraitService(new VehicleNewTraitModel());
$VehicleNewAlbumService = new VehicleNewAlbumService(new VehicleNewAlbumModel());
$VehicleNewContentService = new VehicleNewContentService(new VehicleNewContentModel());
// foreach ($params as $ko => $vo) {
// if (in_array($ko, $albums)) {
// $album[$ko] = $vo ?? '';
// } elseif (in_array($ko, $albums)) {
// $album[$ko] = $vo ?? '';
// } elseif (in_array($ko, $albums)) {
// $album[$ko] = $vo ?? '';
// } elseif (in_array($ko, $albums)) {
// $album[$ko] = $vo ?? '';
// } elseif (in_array($ko, $albums)) {
// $album[$ko] = $vo ?? '';
// } elseif (in_array($ko, VehicleNewModel::TRANS_FIELDS)) {
// $trans[$ko] = $vo ?? '';
// }else{
// $data[$ko] = $vo ?? '';
// }
// }
Db::beginTransaction();
try {
@@ -235,22 +260,149 @@ class VehicleNewService extends BaseService
// 异步翻译并写入 hs_vehicle_data_translation 表
(new TranslationService())->queueTranslations(
'vehicle',
'vehicleNew',
$id,
$sourceLocale,
$sourceFields
);
if ($album) {
// $album['vehicle_data_id'] = $info->id;
$albumModel = new VehicleAlbumModel();
if (!$albumModel->updateOrCreate(
['vehicle_data_id' => $id],
$album
)) {
throw new BusinessException('提交失败');
foreach ($askeds as $asked) {
$askedsourceFields = $VehicleNewAskedService->extractSourceFields($asked);
$asked['vehicle_id'] = $id;
$askedsId = [];
if(!empty($asked['id'])){
$askedId = $asked['id'];
$askedsId[] = $askedId;
$asked_res = $VehicleNewAskedService->update($askedId, $asked);
if (!$asked_res) {
throw new BusinessException('提交失败:常见问题');
}
} else {
$asked_res = $VehicleNewAskedService->create($asked);
if (!$asked_res) {
throw new BusinessException('提交失败:常见问题');
}
$askedId = $asked_res->id;
$askedsId[] = $askedId;
}
(new TranslationService())->queueTranslations(
'vehicleNewAsked',
$askedId,
$sourceLocale,
$askedsourceFields
);
}
VehicleNewAskedModel::whereNotIn('id', $askedsId)->where('vehicle_id',$id)->delete();
foreach ($traits as $trait) {
$traitsourceFields = $VehicleNewTraitService->extractSourceFields($trait);
$trait['vehicle_id'] = $id;
$traitsId = [];
if(!empty($trait['id'])){
$traitId = $trait['id'];
$traitsId[] = $traitId;
$trait_res = $VehicleNewAskedService->update($traitId, $trait);
if (!$trait_res) {
throw new BusinessException('提交失败:车辆特性');
}
} else {
$trait_res = $VehicleNewAskedService->create($trait);
if (!$trait_res) {
throw new BusinessException('提交失败:车辆特性');
}
$traitId = $trait_res->id;
$traitsId[] = $traitId;
}
(new TranslationService())->queueTranslations(
'vehicleNewTrait',
$traitId,
$sourceLocale,
$traitsourceFields
);
}
VehicleNewTraitModel::whereNotIn('id', $traitsId)->where('vehicle_id',$id)->delete();
foreach ($albums as $album) {
$albumsourceFields = $VehicleNewAlbumService->extractSourceFields($album);
$album['vehicle_id'] = $id;
// $albumId = $album['id'];
// $album_res = $VehicleNewAskedService->update($albumId, $album);
// if (!$album_res) {
// throw new BusinessException('提交失败');
// }
$albumsId = [];
// var_dump(!empty($album['id']));
$album['vehicle_id'] = 78;
if(!empty($album['id'])){
$albumId =$album['id'];
$albumsId[] =$albumId;
$album_res = $VehicleNewAlbumService->update($albumId,$album);
if (!$album_res) {
throw new BusinessException('提交失败:车辆图册');
}
} else {
$album_res = $VehicleNewAlbumService->create($album);
if (!$album_res) {
throw new BusinessException('提交失败:车辆图册1');
}
$albumId = $album_res->id;
$albumsId[] = $albumId;
}
(new TranslationService())->queueTranslations(
'VehicleNewAlbum',
$albumId,
$sourceLocale,
$albumsourceFields
);
}
foreach ($contents as $content) {
$contentsourceFields = $VehicleNewContentService->extractSourceFields($content);
$content['vehicle_id'] = $id;
// $contentId = $content['id'];
// $trait_res = $VehicleNewContentService->update($contentId, $content);
// if (!$trait_res) {
// throw new BusinessException('提交失败');
// }
$contentsId = [];
if(!empty($content['id'])){
$contentId =$content['id'];
$contentsId[] =$contentId;
$content['vehicle_id'] = 78;
$content_res = $VehicleNewContentService->update($contentId,$content);
if (!$content_res) {
throw new BusinessException('提交失败:车辆介绍1');
}
} else {
$content_res = $VehicleNewAskedService->create($content);
if (!$content_res) {
throw new BusinessException('提交失败:车辆介绍');
}
$contentId = $content_res->id;
$contentsId[] = $contentId;
}
(new TranslationService())->queueTranslations(
'vehicleNewContent',
$contentId,
$sourceLocale,
$contentsourceFields
);
}
VehicleNewContentModel::whereNotIn('id', $contentsId)->where('vehicle_id',$id)->delete();
// if ($album) {
// // $album['vehicle_data_id'] = $info->id;
// $albumModel = new VehicleAlbumModel();
// if (!$albumModel->updateOrCreate(
// ['vehicle_data_id' => $id],
// $album
// )) {
// throw new BusinessException('提交失败');
// }
// }
// $applyModel = new VehicleApplyModel();
// if (!$applyModel->create([