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);