From b6eeccc9d5e3b8587f5189abeb367a65a8dc8f49 Mon Sep 17 00:00:00 2001 From: xucong <850806214@qq.com> Date: Mon, 26 May 2025 17:39:28 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=8F=90=E4=BA=A4=E7=BC=BA=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E4=B8=9C=E8=A5=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/adminapi/controller/GoodsController.php | 12 ++-- .../validate/GoodsMoreSpecListsValidate.php | 52 ++++++++++++++++ .../validate/GoodsMoreSpecValidate.php | 61 +++++++++++++++++++ .../validate/GoodsOneSpecValidate.php | 52 ++++++++++++++++ 4 files changed, 170 insertions(+), 7 deletions(-) create mode 100644 app/adminapi/validate/GoodsMoreSpecListsValidate.php create mode 100644 app/adminapi/validate/GoodsMoreSpecValidate.php create mode 100644 app/adminapi/validate/GoodsOneSpecValidate.php diff --git a/app/adminapi/controller/GoodsController.php b/app/adminapi/controller/GoodsController.php index 50f5b81..6b59f2f 100644 --- a/app/adminapi/controller/GoodsController.php +++ b/app/adminapi/controller/GoodsController.php @@ -51,20 +51,18 @@ class GoodsController extends BaseAdminController */ public function add() { - if ($this->request->isAjax() && $this->request->isPost()) { - $post = $this->request->post(); $post['del'] = 0; //主表验证 - $result = $this->validate($post, 'app\admin\validate\Goods.add'); + $result = $this->validate($post, 'app\admin\validate\GoodsValidate.add'); if ($result !== true) { return $this->fail($result); } //单规格验证 if ($post['spec_type'] == 1) { - $result = $this->validate($post, 'app\admin\validate\GoodsOneSpec'); + $result = $this->validate($post, 'app\admin\validate\GoodsOneSpecValidate'); if ($result !== true) { return $this->fail($result); } @@ -96,14 +94,14 @@ class GoodsController extends BaseAdminController if (empty($spec_lists)) { return $this->fail('至少添加一个规格'); } - $result = $this->validate($post, 'app\admin\validate\GoodsMoreSpec'); + $result = $this->validate($post, 'app\admin\validate\GoodsMoreSpecValidate'); if ($result !== true) { return $this->fail($result); } //规格商品列表验证 foreach ($spec_lists as $v) { - $result = $this->validate($v, 'app\admin\validate\GoodsMoreSpecLists'); + $result = $this->validate($v, 'app\admin\validate\GoodsMoreSpecListsValidate'); if ($result !== true) { return $this->fail($result); } @@ -122,7 +120,7 @@ class GoodsController extends BaseAdminController return $this->fail('添加失败:' . $result); } return $this->success('添加成功'); - } + } diff --git a/app/adminapi/validate/GoodsMoreSpecListsValidate.php b/app/adminapi/validate/GoodsMoreSpecListsValidate.php new file mode 100644 index 0000000..913af3d --- /dev/null +++ b/app/adminapi/validate/GoodsMoreSpecListsValidate.php @@ -0,0 +1,52 @@ + 'egt:0', + 'price' => 'require|egt:0.01', + 'cost_price' => 'require|egt:0.01', + 'stock' => 'require|integer|egt:0', + 'weight' => 'egt:0', + 'volume' => 'egt:0', + ]; + + protected $message = [ + 'volume.require' => '请输入体积', + 'volume.egt' => '体积必须大于或等于0', + 'weight.require' => '请输入重量', + 'weight.egt' => '重量必须大于或等于0', +// 'market_price.require' => '请输入市场价', + 'market_price.egt' => '市场价不能小于0', + 'price.require' => '请输入价格', + 'price.egt' => '价格必须大于或等于0.01', + 'cost_price.require' => '请输入成本价', + 'cost_price.egt' => '成本价必须大于或等于0.01', + 'stock.require' => '请输入库存', + 'stock.integer' => '库存必须为整数', + 'stock.egt' => '库存必须大于或等于0', + ]; + + +} \ No newline at end of file diff --git a/app/adminapi/validate/GoodsMoreSpecValidate.php b/app/adminapi/validate/GoodsMoreSpecValidate.php new file mode 100644 index 0000000..2e57ca8 --- /dev/null +++ b/app/adminapi/validate/GoodsMoreSpecValidate.php @@ -0,0 +1,61 @@ + 'require|array|specNameRepetition', + 'spec_values' => 'require|array|specValueRepetition', + ]; + + protected $message = [ + + ]; + + /** + * 检测规格名称是否重复 + * @param $value + * @param $rule + * @param $data + * @return bool|string + */ + public function specNameRepetition($value, $rule, $data) + { + if (count($value) != count(array_unique($value))) { + return '规格名称重复'; + } + return true; + } + + public function specValueRepetition($value, $rule, $data) + { + foreach ($value as $k => $v) { + $row = explode(',', $v); + if (count($row) != count(array_unique($row))) { + return '同一规格的规格值不能重复'; + } + } + return true; + } + +} \ No newline at end of file diff --git a/app/adminapi/validate/GoodsOneSpecValidate.php b/app/adminapi/validate/GoodsOneSpecValidate.php new file mode 100644 index 0000000..723eb21 --- /dev/null +++ b/app/adminapi/validate/GoodsOneSpecValidate.php @@ -0,0 +1,52 @@ + 'egt:0', + 'one_price' => 'require|egt:0.01', + 'one_cost_price' => 'require|egt:0.01', + 'one_stock' => 'require|integer|gt:0', + 'one_volume' => 'egt:0', + 'one_weight' => 'egt:0', + ]; + + protected $message = [ + 'one_volume.require' => '请输入体积', + 'one_volume.egt' => '体积必须为大于或等于0', + 'one_weight.require' => '请输入重量', + 'one_weight.egt' => '重量必须为大于或等于0', +// 'one_market_price.require' => '请输入市场价', + 'one_market_price.egt' => '市场价不能小于0', + 'one_price.require' => '请输入价格', + 'one_price.egt' => '价格必须大于或等于0.01', + 'one_cost_price.require' => '请输入成本价', + 'one_cost_price.egt' => '成本价必须大于或等于0.01', + 'one_stock.require' => '请输入库存', + 'one_stock.integer' => '库存必须为整型', + 'one_stock.gt' => '库存必须大于零', + ]; + + +} \ No newline at end of file