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.
 
 
 
 
 

175 lines
5.4 KiB

<?php
namespace App\Http\Controllers\Api;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Common\ReturnData;
use App\Common\Helper;
use App\Common\Token;
use App\Http\Model\Goods;
use App\Http\Logic\GoodsLogic;
use App\Http\Logic\GoodsSearchwordLogic;
class GoodsController extends BaseController
{
public function __construct()
{
parent::__construct();
}
public function getLogic()
{
return logic('Goods');
}
public function goodsList(Request $request)
{
//参数
$limit = $request->input('limit', 10);
$offset = $request->input('offset', 0);
$where = function ($query) use ($request) {
$query->where('status', Goods::GOODS_NORMAL_STATUS);
if($request->input('typeid', null) != null && $request->input('typeid', '') != 0)
{
$query->where('typeid', $request->input('typeid'));
}
if($request->input('tuijian', null) != null)
{
$query->where('tuijian', $request->input('tuijian'));
}
if($request->input('keyword', null) != null)
{
$query->where(function ($query2) use ($request) {$query2->where('title', 'like', '%'.$request->input('keyword').'%')->orWhere('sn', 'like', '%'.$request->input('keyword').'%');});
}
//价格区间搜索
if($request->input('min_price', null) != null && $request->input('max_price', null) != null)
{
$query->where('price', '>=', $request->input('min_price'))->where("price", "<=", $request->input('max_price'));
}
if($request->input('brand_id', null) != null)
{
$query->where('brand_id', $request->input('brand_id'));
}
//促销商品
if($request->input('is_promote', 0) == 1)
{
$timestamp = time();
$query->where("promote_start_date", "<=", $timestamp)->where('promote_end_date', '>=', $timestamp);
}
};
//var_dump(model('Goods')->where($where)->toSql());exit;
//关键词搜索
if($request->input('keyword', null) != null)
{
//添加搜索关键词
$goodssearchword = new GoodsSearchwordLogic();
$goodssearchword->add(array('name'=>$request->input('keyword')));
}
//排序
$orderby = ['id','desc'];
if($request->input('orderby', null) != null)
{
switch ($request->input('orderby'))
{
case 1:
$orderby = ['sale','desc']; //销量从高到低
break;
case 2:
$orderby = ['comments','desc']; //评论从高到低
break;
case 3:
$orderby = ['price','desc']; //价格从高到低
break;
case 4:
$orderby = ['price','asc']; //价格从低到高
break;
default:
$orderby = ['pubdate','desc']; //最新
}
}
$res = $this->getLogic()->getList($where, $orderby, model('Goods')->common_field, $offset, $limit);
if($res['count']>0)
{
foreach($res['list'] as $k=>$v)
{
if(!empty($res['list'][$k]->litpic)){$res['list'][$k]->litpic = http_host().$res['list'][$k]->litpic;}
$res['list'][$k]->goods_detail_url = route('weixin_goods_detail',array('id'=>$v->id));
}
}
return ReturnData::create(ReturnData::SUCCESS, $res);
}
public function goodsDetail(Request $request)
{
//参数
if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);}
$id = $request->input('id');
$where['id'] = $id;
$res = $this->getLogic()->getOne($where);
if(!$res)
{
return ReturnData::create(ReturnData::RECORD_NOT_EXIST);
}
$res->goods_detail_url = route('weixin_goods_detail',array('id'=>$res->id));
return ReturnData::create(ReturnData::SUCCESS, $res);
}
//添加
public function goodsAdd(Request $request)
{
if(Helper::isPostRequest())
{
$_POST['user_id'] = Token::$uid;
return $this->getLogic()->add($_POST);
}
}
//修改
public function goodsUpdate(Request $request)
{
if(!checkIsNumber(request('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);}
$id = request('id');
if(Helper::isPostRequest())
{
unset($_POST['id']);
$where['id'] = $id;
//$where['user_id'] = Token::$uid;
return $this->getLogic()->edit($_POST,$where);
}
}
//删除
public function goodsDelete(Request $request)
{
if(!checkIsNumber(request('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);}
$id = request('id');
if(Helper::isPostRequest())
{
$where['id'] = $id;
//$where['user_id'] = Token::$uid;
return $this->getLogic()->del($where);
}
}
}