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.
152 lines
5.2 KiB
152 lines
5.2 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Logic\ShopGoodsLogic;
|
|
use App\Logic\ShopCommentLogic;
|
|
use App\Models\ShopBrand;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use App\Models\ShopCategory;
|
|
use App\Models\Carousel;
|
|
|
|
class ShopGoodsController extends ApiController
|
|
{
|
|
// 商品统计
|
|
public function getGoodsCount(Request $request)
|
|
{
|
|
$outData = ShopGoodsLogic::getGoodsCount([['id', '>', 0]]);
|
|
return $this->success($outData);
|
|
}
|
|
|
|
// 获取商品列表
|
|
public function getGoodsList(Request $request)
|
|
{
|
|
// 参数校验
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'categoryId' => 'required',
|
|
],
|
|
[
|
|
'categoryId.required' => '参数缺失',
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return $this->failed($validator->errors(), 403);
|
|
}
|
|
$where = [];
|
|
if( $request->keyword){
|
|
$where[] = ['goods_name', 'like' , '%'.$request->keyword.'%'];
|
|
}
|
|
if( $request->categoryId){
|
|
$where['category_id'] = $request->categoryId;
|
|
}
|
|
// 新品
|
|
if($request->isNew){
|
|
$where['is_new'] = $request->isNew;
|
|
}
|
|
// 热门
|
|
if($request->isHot){
|
|
$where['is_hot'] = $request->isHot;
|
|
}
|
|
// 品牌
|
|
if($request->brandId){
|
|
$where['brand_id'] = $request->brandId;
|
|
}
|
|
$order = '';
|
|
$inputSort = $request->input('sort','default');
|
|
switch($inputSort){
|
|
case 'price':
|
|
$order = 'retail_price '. $request->input('order','asc');
|
|
break;
|
|
default:
|
|
$order = 'sort_order asc';
|
|
}
|
|
$outData = ShopGoodsLogic::getGoodsList($where, $request->size ? $request->size : 10,$order);
|
|
if ($outData) {
|
|
return $outData;
|
|
}
|
|
return $this->success([]);
|
|
}
|
|
|
|
// 获取商品分类列表
|
|
public function getGoodsCategory(Request $request)
|
|
{
|
|
// 参数校验
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'id' => 'required',
|
|
],
|
|
[
|
|
'id.required' => '参数缺失',
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return $this->failed($validator->errors(), 403);
|
|
}
|
|
$outData = ShopGoodsLogic::getGoodsCategory(['id' => $request->id]);
|
|
return $this->success($outData);
|
|
}
|
|
|
|
|
|
// 获取商品详情
|
|
public function getGoodsDetail(Request $request)
|
|
{
|
|
// 参数校验
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'id' => 'required',
|
|
],
|
|
[
|
|
'id.required' => '参数缺失',
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return $this->failed($validator->errors(), 403);
|
|
}
|
|
$goodsInfo = ShopGoodsLogic::getGoodsDetail(['id' => $request->id]);
|
|
$goods_where = ['goods_id'=>$goodsInfo->id];
|
|
$attribute = ShopGoodsLogic::getGoodsAttribute($goods_where);
|
|
$issueList = ShopGoodsLogic::getGoodsIssue($goods_where);
|
|
$comment = ShopCommentLogic::getCommentList(['value_id' =>$goodsInfo->id],0,10);
|
|
$brand = ShopBrand::getDetail(['id'=>$goodsInfo->brand_id]);
|
|
$userHasCollect = ShopGoodsLogic::userCollectStatus($goodsInfo->id);
|
|
ShopGoodsLogic::addFootprint($goodsInfo->id);
|
|
$outData = [
|
|
'info' => $goodsInfo, // 商品信息
|
|
'attribute' => $attribute, // 商品属性参数
|
|
'issue' => $issueList, // 商品问题
|
|
'comment' => ['data'=>$comment,'count' => $comment->total()], // 商品评论
|
|
'brand' => $brand, // 品牌信息
|
|
'specificationList' => [], // 规格信息 后期完善该项 2018.6.12
|
|
'productList' => [], // sku列表 后期完善该项 2018.6.12
|
|
'userHasCollect' => $userHasCollect, // 是否收藏
|
|
];
|
|
return $this->success($outData);
|
|
}
|
|
|
|
// 商品详情页的关联商品(大家都在看)
|
|
public function getGoodsRelated(Request $request){
|
|
$goodsInfo = ShopGoodsLogic::getGoodsDetail(['id' => $request->id]);
|
|
$relateWhere['category_id'] = $goodsInfo->category_id;
|
|
$outData = ShopGoodsLogic::getRelatedGoods($relateWhere);
|
|
return $this->success($outData);
|
|
}
|
|
|
|
// 新品
|
|
public function getGoodsNew(Request $request){
|
|
$outData['bannerInfo'] = Carousel::getCarouselByType(Carousel::BOOTH_TYPE_NEW);
|
|
// 目前只是查询二级分类 因为前段定位分类只有2级
|
|
$outData['filterCategory'] = ShopCategory::getCategoryList(['level'=>1]);
|
|
return $this->success($outData);
|
|
}
|
|
|
|
// 热门
|
|
public function getGoodsHot(Request $request){
|
|
$outData['bannerInfo'] = Carousel::getCarouselByType(Carousel::BOOTH_TYPE_HOT);
|
|
// 目前只是查询二级分类 因为前段定位分类只有2级
|
|
$outData['filterCategory'] = ShopCategory::getCategoryList(['level'=>1]);
|
|
return $this->success($outData);
|
|
}
|
|
|
|
} |