2 Commits

Author SHA1 Message Date
d8a584e9b7 refactor: 产品详细兼容性信息输入及更新
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 6s
2026-07-08 17:45:48 +08:00
36261488b4 feat: 产品更新时可编辑兼容性数据 2026-07-08 17:26:18 +08:00
2 changed files with 47 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ declare (strict_types = 1);
namespace app\admin\controller\v1;
use app\admin\model\v1\ProductCompatRelModel;
use app\admin\model\v1\ProductModel;
use app\admin\model\v1\ProductParamsModel;
use app\admin\model\v1\ProductRelatedModel;
@@ -119,6 +120,19 @@ class Product
->bindAttr('product', ['spu'])
->hidden(['product']);
// 兼容性信息
$product->compat = ProductCompatRelModel::withoutField([
'created_at',
'updated_at',
])
->with(['compat' => function($query) {
$query->field(['id', 'label_name']);
}])
->productId($product->id)
->select()
?->bindAttr('compat', ['label_name'])
?->hidden(['compat']);
return success('获取成功', $product);
}
@@ -144,6 +158,7 @@ class Product
'params' => '',
'skus' => '',
'related' => '',
'compat' => '',
'seo_title',
'seo_keywords',
'seo_desc'
@@ -249,6 +264,27 @@ class Product
}
}
// 更新兼容性信息
if (!empty($put['compat'])) {
// 删除原先的兼容信息
ProductCompatRelModel::productId($id)->delete();
$compat = [];
$rel_compat = json_decode(data_get($put['compat'], 'compat_id') ?? [], true);
foreach ($rel_compat as $compat_id) {
$compat[] = [
'product_id' => $id,
'compat_id' => $compat_id,
'series_name' => data_get($put['compat'], 'series_name'),
'show_series_name' => data_get($put['compat'], 'show_series_name') ?? 0,
'remark' => data_get($put['compat'], 'remark')
];
}
if (!empty($compat)) {
ProductCompatRelModel::insertAll($compat);
}
}
return success('操作成功');
}

View File

@@ -10,5 +10,15 @@ use app\common\model\ProductCompatRelBaseModel;
*/
class ProductCompatRelModel extends ProductCompatRelBaseModel
{
//
// 关联兼容性数据
public function compat()
{
return $this->hasOne(ProductCompatModel::class, 'id', 'compat_id');
}
// 按所属产品查询
public function scopeProductId(\think\db\Query $query, int $id)
{
$query->where('product_id', '=', $id);
}
}