From a22639b0c2cc83caf53e7f383d00f1f412a3571a Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Mon, 10 Feb 2025 17:15:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BF=AE=E6=94=B9=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E6=9B=B4=E6=96=B0=E5=8F=8A=E8=AF=A6=E6=83=85=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Product.php | 54 +++++++++++++++++++++- app/admin/model/v1/ProductParamsModel.php | 19 ++++++++ app/admin/model/v1/ProductRelatedModel.php | 19 ++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 app/admin/model/v1/ProductParamsModel.php create mode 100644 app/admin/model/v1/ProductRelatedModel.php diff --git a/app/admin/controller/v1/Product.php b/app/admin/controller/v1/Product.php index c12cb1b8..fa9f604c 100644 --- a/app/admin/controller/v1/Product.php +++ b/app/admin/controller/v1/Product.php @@ -4,6 +4,8 @@ declare (strict_types = 1); namespace app\admin\controller\v1; use app\admin\model\v1\ProductModel; +use app\admin\model\v1\ProductParamsModel; +use app\admin\model\v1\ProductRelatedModel; use app\admin\validate\v1\ProductValidate; class Product @@ -74,6 +76,22 @@ class Product return error('产品不存在'); } + // 获取产品参数 + $params = []; + $product_params = ProductParamsModel::productId($product->id)->select(); + foreach ($product_params as $val) { + $params[] = implode(":", [$val->name, $val->value]); + } + $product->params = implode(PHP_EOL, $params); + + // 获取关联产品 + $product->related = ProductRelatedModel::field([ + 'related_product_id', + 'sort' + ]) + ->productId($product->id + )->select(); + return success('获取成功', $product); } @@ -95,6 +113,8 @@ class Product 'is_hot', 'sort', 'detail', + 'params' => '', + 'related' => '', 'status' => 1, 'seo_title', 'seo_keywords', @@ -114,11 +134,43 @@ class Product if (is_null($product)) { return error('请确认操作对象是否存在'); } - if (!$product->save($put)) { return error('操作失败'); } + // 更新产品参数 + if ($put['params'] != "") { + ProductParamsModel::productId($id)->delete(); + if (preg_match_all('/(\w+):(.[^\n|\r|\r\n]+)/', $put['params'], $match_result)) { + $params = []; + for ($i = 0; $i < count($match_result[0]); $i++) { + $params[] = [ + 'product_id' => $id, + 'name' => $match_result[1][$i], + 'value' => $match_result[2][$i] + ]; + } + if (!empty($params)) ProductParamsModel::insertAll($params); + } + } + + // 更新关联产品 + if ($put['related'] != "") { + ProductRelatedModel::productId($id)->delete(); + $encode_result = json_decode($put['related'], true); + if (!empty($encode_result)) { + $related = []; + foreach ($encode_result as $val) { + $related[] = [ + 'product_id' => $id, + 'related_product_id' => $val['related_product_id'], + 'sort' => $val['sort'] + ]; + } + if (!empty($related)) ProductRelatedModel::insertAll($related); + } + } + return success('操作成功'); } diff --git a/app/admin/model/v1/ProductParamsModel.php b/app/admin/model/v1/ProductParamsModel.php new file mode 100644 index 00000000..35c9fce1 --- /dev/null +++ b/app/admin/model/v1/ProductParamsModel.php @@ -0,0 +1,19 @@ +where('product_id', $id); + } +} diff --git a/app/admin/model/v1/ProductRelatedModel.php b/app/admin/model/v1/ProductRelatedModel.php new file mode 100644 index 00000000..6bba7e86 --- /dev/null +++ b/app/admin/model/v1/ProductRelatedModel.php @@ -0,0 +1,19 @@ +where('product_id', $id); + } +}