From 5a2039b938244d884752e5bacb7dd50dfda5baba Mon Sep 17 00:00:00 2001 From: wangxiaowei Date: Wed, 18 Dec 2024 09:50:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=95=86=E5=93=81=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/logic/GoodsLogic.php | 45 ++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/app/api/logic/GoodsLogic.php b/app/api/logic/GoodsLogic.php index 4eab5e20..5690900d 100755 --- a/app/api/logic/GoodsLogic.php +++ b/app/api/logic/GoodsLogic.php @@ -518,13 +518,44 @@ class GoodsLogic extends Logic // dump($wh); // dump($where); // dump($order);die; - $list = Goods::with(['shop']) - ->field($field) - ->where($wh) - ->where($where) - ->order($order) - ->page($get['page_no'], $get['page_size']) - ->select(); + $cate = []; + if (isset($get['keyword'])) { + $cate = GoodsCategory::where(['is_show' => 1, 'del' => 0]) + ->where([['name', 'like', '%' . trim($get['keyword']) . '%']]) + ->field('id, level') + ->select() + ->toArray(); + } + if (!empty($cate)) { + $where = array_filter($where, function($item) { + return $item[0] !== "name"; + }); + $where = array_values($where); + + $con = array( + 1 => 'first_cate_id', + 2 => 'second_cate_id', + 3 => 'second_cate_id', + ); + foreach ($cate as &$v) { + $list = Goods::with(['shop']) + ->field($field) + ->where($where) + ->where([ + [$con[$v['level']], 'like', '%' . $v['id'] . '%'], + ]) + ->order($order) + ->select(); + } + } else { + $list = Goods::with(['shop']) + ->field($field) + ->where($wh) + ->where($where) + ->order($order) + ->page($get['page_no'], $get['page_size']) + ->select(); + } // foreach ($list as &$v) { // $v['market_price'] = round($v['min_price'],2); // $v['min_price'] = round(0.88*$v['min_price'],2);