request->input('tab', ''); $marketId = $this->request->input('market_id', 0); $page = $this->request->input('page', 1); $pagesize = $this->request->input('pagesize', 10); $builder = Goods::query()->with('store') ->where('market_id', $marketId) ->where(function ($query) { $query->where('inventory', '>', 0)->orWhere('is_infinite', '=', 1); }); switch ($tab) { case Tabs::APPLET_INDEX_RECOMMEND: $builder = $builder->orderBy('sales', 'desc'); break; case Tabs::APPLET_INDEX_NEW: $builder = $builder->orderBy('created_at', 'desc'); break; case Tabs::APPLET_INDEX_FRESH: $builder = $builder->orderBy('price', 'asc'); break; case Tabs::APPLET_INDEX_OFFICE: $builder = $builder->whereIn('category_id', [142,146]); break; } $paginate = $builder->paginate($pagesize); $goods = $paginate->toArray(); return $this->success(['has_more_pages' => $paginate->hasMorePages(), 'tab_data' => $goods['data']]); } /** * 获取推荐商品列表 * 1、前端上传标识 * recommend_search_goods * recommend_search_stores * recommend_user_index * 2、根据标识从Elasticsearch中获取商品IDs * 3、根据IDs获取商品数据 * 4、返回数据,id、封面图、名称、原价、现价、库存、月销、tag、规格、购物车相关、商户id、商户avatar、商户名 */ public function getByTab() { $marketId = $this->request->input('market_id', 0); $goods = Goods::query() ->with(['store']) ->where('market_id', $marketId) ->where(function ($query) { $query->where('inventory', '>', 0)->orWhere('is_infinite', '=', 1); }) ->inRandomOrder() ->limit(20) ->get()->toArray(); return $this->success(['has_more_pages' => false, 'tab_data' => $goods]); } }