From d8a584e9b738e4e1df6cecbe1386e39f54696161 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Wed, 8 Jul 2026 17:45:48 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BA=A7=E5=93=81=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E5=85=BC=E5=AE=B9=E6=80=A7=E4=BF=A1=E6=81=AF=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E5=8F=8A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Product.php | 35 ++++++++++++++++---- app/admin/model/v1/ProductCompatRelModel.php | 6 ++++ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/app/admin/controller/v1/Product.php b/app/admin/controller/v1/Product.php index 69826dbe..10d380a3 100644 --- a/app/admin/controller/v1/Product.php +++ b/app/admin/controller/v1/Product.php @@ -120,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); } @@ -253,15 +266,23 @@ class Product // 更新兼容性信息 if (!empty($put['compat'])) { - $compat = $put['compat']; - $compat['product_id'] = $id; - $compat['compat_id'] = explode(',', str_replace(',', ',', $compat['compat_id'])); + // 删除原先的兼容信息 + ProductCompatRelModel::productId($id)->delete(); - $rel_id = ProductCompatRelModel::productId($id)->value('id'); - if (!empty($rel_id)) { - $compat['id'] = $rel_id; + $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); } - (new ProductCompatRelModel)->save($compat); } return success('操作成功'); diff --git a/app/admin/model/v1/ProductCompatRelModel.php b/app/admin/model/v1/ProductCompatRelModel.php index 4a510bda..dff53fb3 100644 --- a/app/admin/model/v1/ProductCompatRelModel.php +++ b/app/admin/model/v1/ProductCompatRelModel.php @@ -10,6 +10,12 @@ 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) {