You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

74 lines
2.3 KiB

<?php
namespace App\Controller\v3;
use App\Constants\v3\Tabs;
use App\Controller\BaseController;
use App\Model\v3\Goods;
/**
* 推荐商品相关
* Class GoodsRecommend
* @package App\Controller\v3
*/
class GoodsRecommendController extends BaseController
{
/**
* 获取首页tabs推荐商品列表
* 1、前端上传tab标识
* 2、根据tab标识从Elasticsearch中获取商品IDs
* 3、根据IDs获取商品数据
* 4、返回数据,id、封面图、名称、原价、现价、库存、月销、tag、规格、购物车相关、商户id、商户avatar、商户名
*/
public function getByTabsForAppletIndex()
{
$tab = $this->request->input('tab', '');
$page = $this->request->input('page', 1);
$pagesize = $this->request->input('pagesize', 10);
$builder = Goods::query()->with('store');
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', [97,98]);
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()
{
$goods = Goods::query()
->with(['store'])
->inRandomOrder()
->limit(20)
->get()->toArray();
return $this->success(['has_more_pages' => false, 'tab_data' => $goods]);
}
}