This commit is contained in:
2025-05-23 13:29:56 +08:00
parent 23e9531bad
commit a5a50ae7fc
2 changed files with 47 additions and 16 deletions
+11 -2
View File
@@ -2,6 +2,8 @@
namespace app\console\controller; namespace app\console\controller;
use app\console\model\BrandBannerModel;
use app\console\model\BrandTraitModel;
use support\Request; use support\Request;
use support\Response; use support\Response;
use app\console\model\BrandModel; use app\console\model\BrandModel;
@@ -56,10 +58,17 @@ class BrandController extends BaseController
'created_at' => date('Y-m-d H:i:s', $item['created_at']), 'created_at' => date('Y-m-d H:i:s', $item['created_at']),
'updated_at' => date('Y-m-d H:i:s', $item['updated_at']), 'updated_at' => date('Y-m-d H:i:s', $item['updated_at']),
]; ];
foreach ($item['banner'] as $k => $v) { $banners = BrandBannerModel::with('translation')->where(['brand_id' => $item['id']])->get();
foreach ($banners as $k => $v) {
$v['alt'] = isset($v['translation']) ? $v['translation']['alt'] : '';
unset($v['translation']);
$result['banner'][$k] = $v; $result['banner'][$k] = $v;
} }
foreach ($item['trait'] as $k => $v) { $traits = BrandTraitModel::with('translation')->where(['brand_id' => $item['id']])->get();
foreach ($traits as $k => $v) {
$v['title'] = isset($v['translation']) ? $v['translation']['title'] : '';
$v['content'] = isset($v['translation']) ? $v['translation']['content'] : '';
unset($v['translation']);
$result['trait'][$k] = $v; $result['trait'][$k] = $v;
} }
return $result; return $result;
+36 -14
View File
@@ -181,14 +181,26 @@ class BrandService extends BaseService
); );
//品牌轮播图 //品牌轮播图
$bannersId = [];
foreach ($banners as $banner) { foreach ($banners as $banner) {
$bannersourceFields = $BrandBannerService->extractSourceFields($banner); $bannersourceFields = $BrandBannerService->extractSourceFields($banner);
$bannersourceFields['brand_id'] = $id; $bannersourceFields['brand_id'] = $id;
$bannerId = $banner['id'];
$banner['brand_id'] = $id; if(!empty($banner['id'])){
$banner = $BrandBannerService->update($bannerId,$banner); $bannerId = $banner['id'];
if (!$banner) { $bannersId[] = $bannerId;
throw new BusinessException('提交失败'); $banner_res = $BrandBannerService->update($bannerId, $banner);
if (!$banner_res) {
throw new BusinessException('提交失败:品牌轮播图');
}
} else {
unset($banner['id']);
$banner_res = $BrandBannerService->create($banner);
if (!$banner_res) {
throw new BusinessException('提交失败:品牌轮播图.');
}
$bannerId = $banner_res->id;
$bannersId[] = $bannerId;
} }
(new TranslationService())->queueTranslations( (new TranslationService())->queueTranslations(
@@ -198,18 +210,29 @@ class BrandService extends BaseService
$bannersourceFields $bannersourceFields
); );
} }
$ids = array_column($banners,'id'); BrandBannerModel::whereNotIn('id', $bannersId)->where('brand_id',$id)->delete();
BrandBannerModel::whereNotIn('id', $ids)->where('brand_id',$id)->delete();
//品牌特性 //品牌特性
$traitsId = [];
foreach ($traits as $trait) { foreach ($traits as $trait) {
$traitsourceFields = $BrandTraitService->extractSourceFields($trait); $traitsourceFields = $BrandTraitService->extractSourceFields($trait);
$traitsourceFields['brand_id'] = $id; $traitsourceFields['brand_id'] = $id;
$traitId = $trait['id'];
$trait['brand_id'] = $id; if(!empty($trait['id'])){
$trait = $BrandTraitService->update($traitId,$trait); $traitId = $trait['id'];
if (!$trait) { $traitsId[] = $traitId;
throw new BusinessException('提交失败'); $trait_res = $BrandTraitService->update($traitId, $trait);
if (!$trait_res) {
throw new BusinessException('提交失败:品牌轮播图');
}
} else {
unset($trait['id']);
$trait_res = $BrandTraitService->create($trait);
if (!$trait_res) {
throw new BusinessException('提交失败:品牌轮播图.');
}
$traitId = $trait_res->id;
$traitsId[] = $traitId;
} }
(new TranslationService())->queueTranslations( (new TranslationService())->queueTranslations(
@@ -219,8 +242,7 @@ class BrandService extends BaseService
$traitsourceFields $traitsourceFields
); );
} }
$ids = array_column($traits,'id'); BrandTraitModel::whereNotIn('id', $traitsId)->where('brand_id',$id)->delete();
BrandTraitModel::whereNotIn('id', $ids)->where('brand_id',$id)->delete();
Db::commit(); Db::commit();