refactor: 修改产品更新及详情接口

This commit is contained in:
2025-02-10 17:15:41 +08:00
parent 1069db03ab
commit f6a7ede429
3 changed files with 91 additions and 1 deletions

View File

@@ -4,6 +4,8 @@ declare (strict_types = 1);
namespace app\admin\controller\v1; namespace app\admin\controller\v1;
use app\admin\model\v1\ProductModel; use app\admin\model\v1\ProductModel;
use app\admin\model\v1\ProductParamsModel;
use app\admin\model\v1\ProductRelatedModel;
use app\admin\validate\v1\ProductValidate; use app\admin\validate\v1\ProductValidate;
class Product class Product
@@ -74,6 +76,22 @@ class Product
return error('产品不存在'); 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); return success('获取成功', $product);
} }
@@ -95,6 +113,8 @@ class Product
'is_hot', 'is_hot',
'sort', 'sort',
'detail', 'detail',
'params' => '',
'related' => '',
'status' => 1, 'status' => 1,
'seo_title', 'seo_title',
'seo_keywords', 'seo_keywords',
@@ -114,11 +134,43 @@ class Product
if (is_null($product)) { if (is_null($product)) {
return error('请确认操作对象是否存在'); return error('请确认操作对象是否存在');
} }
if (!$product->save($put)) { if (!$product->save($put)) {
return error('操作失败'); 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('操作成功'); return success('操作成功');
} }

View File

@@ -0,0 +1,19 @@
<?php
declare (strict_types = 1);
namespace app\admin\model\v1;
use app\common\model\ProductParamsBaseModel;
/**
* 产品 - 产品参数模型
* @mixin \think\Model
*/
class ProductParamsModel extends ProductParamsBaseModel
{
// 要据产品ID查询
public function scopeProductId($query, $id)
{
return $query->where('product_id', $id);
}
}

View File

@@ -0,0 +1,19 @@
<?php
declare (strict_types = 1);
namespace app\admin\model\v1;
use app\common\model\ProductRelatedBaseModel;
/**
* 产品 - 关联产品模型
* @mixin \think\Model
*/
class ProductRelatedModel extends ProductRelatedBaseModel
{
// 根据产品ID查询
public function scopeProductId($query, $id)
{
$query->where('product_id', $id);
}
}