From 8a07e1263568d26b800885445fc1e5061f16c4a3 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Wed, 26 Feb 2025 13:42:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BA=A7=E5=93=81=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E9=93=BE=E6=8E=A5=E5=90=8C=E5=9E=8B=E5=8F=B7=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/v1/ProductPurchaseLink.php | 1 + .../v1/ProductPurchaseLinkValidate.php | 38 ++++++++++++++++--- app/admin/validate/v1/ProductValidate.php | 2 +- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/app/admin/controller/v1/ProductPurchaseLink.php b/app/admin/controller/v1/ProductPurchaseLink.php index 130572d1..40f9c507 100644 --- a/app/admin/controller/v1/ProductPurchaseLink.php +++ b/app/admin/controller/v1/ProductPurchaseLink.php @@ -267,6 +267,7 @@ class ProductPurchaseLink $data = [ 'id' => $id, 'link' => $put['link'], + 'language_id' => request()->lang_id, 'platform_id' => $put['platform_id'] ]; $validate = new ProductPurchaseLinkValidate; diff --git a/app/admin/validate/v1/ProductPurchaseLinkValidate.php b/app/admin/validate/v1/ProductPurchaseLinkValidate.php index 7fde46e4..23a2138c 100644 --- a/app/admin/validate/v1/ProductPurchaseLinkValidate.php +++ b/app/admin/validate/v1/ProductPurchaseLinkValidate.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace app\admin\validate\v1; +use app\admin\controller\v1\ProductPurchaseLink; +use app\admin\model\v1\ProductPurchaseLinkModel; use think\Validate; class ProductPurchaseLinkValidate extends Validate @@ -17,7 +19,7 @@ class ProductPurchaseLinkValidate extends Validate protected $rule = [ 'id' => 'require|integer', 'link' => 'url|max:255', - 'platform_id' => 'integer' + 'platform_id' => 'sameSpuPlatformCheck|integer' ]; /** @@ -27,14 +29,38 @@ class ProductPurchaseLinkValidate extends Validate * @var array */ protected $message = [ - 'id.require' => 'id不能为空', - 'id.integer' => 'id字段类型错误', - 'link.url' => '链接格式不正确', - 'link.max' => '链接不能超过255个字符', - 'platform_id.integer' => '平台id类型错误' + 'id.require' => 'id不能为空', + 'id.integer' => 'id字段类型错误', + 'link.url' => '链接格式不正确', + 'link.max' => '链接不能超过255个字符', + 'platform_id.sameSpuPlatformCheck' => '同型号平台不能重复', + 'platform_id.integer' => '平台id类型错误' ]; + /** + * 同型号平台不能重复校验 + */ + protected function sameSpuPlatformCheck($value, $rule, $data = []) + { + $sql = ProductPurchaseLinkModel::alias('s') + ->field(['s.product_id']) + ->where('s.id', '=', $data['id']) + ->limit(1) + ->buildSql(); + + $platforms = ProductPurchaseLinkModel::alias('p') + ->where('p.product_id', '=', \think\facade\Db::raw($sql)) + ->where('p.id', '<>', $data['id']) + ->where('p.language_id', '=', $data['language_id']) + ->column(['p.platform_id']); + if (!empty($platforms) && in_array($value, $platforms)) { + return false; + } + + return true; + } + /** * 更新场景 */ diff --git a/app/admin/validate/v1/ProductValidate.php b/app/admin/validate/v1/ProductValidate.php index b45546fd..f19900bc 100644 --- a/app/admin/validate/v1/ProductValidate.php +++ b/app/admin/validate/v1/ProductValidate.php @@ -77,7 +77,7 @@ class ProductValidate extends Validate 'skus.*.sku.max' => 'sku不能超过125个字符', 'skus.*.main_image.max' => 'sku主图不能超过255个字符', 'skus.*.sort.integer' => 'sku排序值类型错误', - 'skus.*.attrs.checkSkusAttrsItemType' => 'sku属性值错误', + 'skus.*.attrs.checkSkusAttrsItemType' => 'sku属性值错误', 'skus.*.attrs.checkSkusAttrsItemMax' => 'sku属性值错误', 'related.*.related_product_id.integer' => '关联产品ID格式错误', 'related.*.sort.integer' => '关联产品排序值类型错误',