<?php namespace app\api\controller; use app\common\controller\Api; use think\Validate; /** * 商品接口 */ class Goods extends Api { protected $noNeedLogin = ['goodsDetail','otherBrowseGoodsList','sortGoodsList']; protected $noNeedRight = ['*']; protected $uid = ''; public function _initialize() { parent::_initialize(); $this->uid = $this->auth->getUserId(); } /** * @ApiTitle (商品详情) * @ApiSummary (商品详情) * @ApiMethod (GET) * @ApiRoute (/api/goods/goodsDetail) * * @ApiParams (name="goods_id", type="inter", required=true, description="商品id") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1574993089", "data": { "id": 1,//商品id "type": 1, "t_id": 1, "file": [//视频路径,只有一个视频(无视频返回空数组) "http://jinglong.springchunjia.cn/uploads/20191127/05d216e117e11bd3de352c155b42eaaa.mp4",//视频路径 ] "image": "http://jinglong.springchunjia.cn/uploads/20191127/05d216e117e11bd3de352c155b42eaaa.jpg",//缩略图路径 "name": "MONENT 动感系列",//商品名称 "name_en": "Monent dynamic series",//商品名称(英文) "sale_price": 2599,//销售价格 "market_price": 2699,//市场价格 "expense_price": 0,//运费(0:显示包运费标签) "is_collection": 0,//是否收藏(0:否,1:是) "is_new_tag": 0//新人价格标签(0:不显示,1:显示) "is_use_number": 0//优惠券可领取数量 "sale_price": [//商品规格 100, 200 ], "style": [//商品规格 "主餐匙,茶匙各1件", "古堡灰" ], "tag": [//商品标签 "AB级", "ABX级", "ABN级" ], "stock": [//商品标签 100, 100 ],//商品库存 "introduce": "轻波款,为客厅缀上霞光淡雾",//商品简介 "detail": "",//商品详情(富文本) "images": [//轮播图片 "http://jinglong.springchunjia.cn/uploads/20191127/05d216e117e11bd3de352c155b42eaaa.png", "http://jinglong.springchunjia.cn/uploads/20191127/05d216e117e11bd3de352c155b42eaaa.png", ], "b_type": {//所属品牌(品类则返回空字符串) "id": 1,//品牌id "image": "http://jinglong.springchunjia.cn/uploads/20191127/d36d8475bc3bdb999dff26d019c608ed.png",//品牌图片路径 "name": "HEDRMAR1",//品牌名称 "address": "葡萄牙1"//品牌所属地 } } }) */ public function goodsDetail(){ if($this->request->isGet()){ $goods_id = $this->request->get('goods_id'); $rule = config('verify.goods_detail'); $validate = new Validate($rule['rule'],$rule['msg']); if (!$validate->check(['goods_id'=>$goods_id])) { $this->error($validate->getError()); } $res = Common::findSoftWhereData('goods',['id'=>$goods_id],'type_name,is_design,is_recommend,sort,createtime,updatetime,deletetime,flag,hots,sales',true); if($res){ $res['style'] = explode('|',$res['style']); $res['tag'] = explode('|',$res['tag']); $res['sale_price'] = explode('|',$res['sale_price1']); $res['stock'] = explode('|',$res['stock']); $res['image'] = $this->auth->absolutionUrlOne($res['image']); $res['images'] = $this->auth->absolutionUrl($res['images']); if(!empty($res['file'])){ $res['file'] = [ $this->auth->absolutionUrlOne($res['file']) ]; $res['file_cover'] = [ $this->auth->absolutionUrlOneFrame($res['file'],1) ]; }else{ $res['file'] = []; $res['file_cover'] = []; } //所属品牌分类 if($res['type'] == 1){ //查询所属品牌 $b_type = Common::findSoftWhereData('btype',['id'=>$res['t_id']],'id,image,name,address'); $b_type['image'] = $this->auth->absolutionUrlOne($b_type['image']); $res['b_type'] = $b_type; }else{ $res['b_type'] = ''; } $res1 = Common::findWhereData('collection',['uid'=>$this->uid,'g_id'=>$goods_id],'id'); if($res1){ $res['is_collection'] = 1;//已收藏 }else{ $res['is_collection'] = 0;//未收藏 } $is_news = Common::is_new($this->uid); if($is_news == 2 || $is_news == 0){//未登录或者新人 if($res['is_new'] == 0){ //非新人优惠标签 $res['is_new_tag'] = 0;//不用显示新人价标签 }else{ //新人优惠标签 $res['is_new_tag'] = 1;//显示新人价标签 } }else{ $res['is_new_tag'] = 0;//不用显示新人价标签(新人价标签商品不会出来) } //查询已经领取过 $receive = Common::selectWhereData('rcoupon',['uid'=>$this->uid],'id,c_id'); $receive_s = array_column($receive,'c_id'); $type = config('verify.type'); $flag = config('verify.flag'); $where = ['id'=>['not in',$receive_s],'is_new'=>$flag[0],'type'=>$type[2],'bg_id'=>$goods_id,'end_time'=>['>',time()]]; $coupon_number = Common::count_count('coupon',$where); $res['is_use_number'] = $coupon_number; //浏览商品增加次数 $goodsModel = new \app\admin\model\Goods(); $goodsModel->where(['id'=>$goods_id])->setInc('hots',1); unset($res['is_new']); //增加商品浏览数 $type = config('verify.browse_type')[1]; Common::statistics($type,$this->uid,$goods_id); } $this->success('成功',$res); }else{ $this->error('请求方式错误'); } } /** * @ApiTitle (别人也在看商品列表) * @ApiSummary (别人也在看商品列表) * @ApiMethod (GET) * @ApiRoute (/api/goods/otherBrowseGoodsList) * * @ApiParams (name="goods_id", type="inter", required=true, description="商品id") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1574941706", "data": { "data": [ { "id": 7,//商品id "image": "http://jinglong.springchunjia.cn/uploads/20191128/8a677f5a0418059bf1b974c50026af13.png",//图片路径 "name": "MONENT 动感系列",//商品名称 "tag": [//商品标签 "日式简约", "隐秘乡奢", "家庭情侣" ], "sale_price": 2299//销售价格 "expense_price": //运费(0:显示包运费标签) "is_new_tag": 0//新人价格标签(0:不显示,1:显示) }, { "id": 4, "image": "http://jinglong.springchunjia.cn/uploads/20191128/93971e55b83d1a09c1831f8197514305.png", "name": "MONENT 动感系列", "tag": [ "AB级", "ABX级", "ABN级" ], "new_price": 2499, "sale_price": 2599 }, ], "total_page": 1 } }) */ public function otherBrowseGoodsList(){ if($this->request->isGet()){ $goods_id = $this->request->get('goods_id'); $rule = config('verify.goods_detail'); $validate = new Validate($rule['rule'],$rule['msg']); if (!$validate->check(['goods_id'=>$goods_id])) { $this->error($validate->getError()); } $result = Common::findSoftWhereData('goods',['id'=>$goods_id],'id,type,t_id'); $where = []; if($result){ $where['type'] = $result['type']; $where['t_id'] = $result['t_id']; $where['id'] = ['<>',$result['id']]; } $limit = config('verify.limit'); $res = Common::goodsList($where,1,$this->uid,$limit,'hots desc,id desc'); $this->success('成功',$res); }else{ $this->error('请求方式错误'); } } /** * @ApiTitle (品类商品列表) * @ApiSummary (品类商品列表) * @ApiMethod (GET) * @ApiRoute (/api/goods/sortGoodsList) * * @ApiParams (name="s_id", type="inter", required=true, description="品类分类id") * * @ApiParams (name="hots", type="inter", required=false, description="商品热度排序(1:降序,2:升序)") * @ApiParams (name="sales", type="inter", required=false, description="商品销量排序(1:降序,2:升序)") * @ApiParams (name="price", type="inter", required=false, description="商品价格排序(1:降序,2:升序)") * * @ApiParams (name="page", type="inter", required=true, description="分页页码") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1574941706", "data": { "data": [ { "id": 7,//商品id "image": "http://jinglong.springchunjia.cn/uploads/20191128/8a677f5a0418059bf1b974c50026af13.png",//图片路径 "name": "MONENT 动感系列",//商品名称 "tag": [//商品标签 "日式简约", "隐秘乡奢", "家庭情侣" ], "style": [//商品规格 "主餐匙,茶匙各1件", "古堡灰" ], "sale_price": 2299//销售价格 "expense_price": //运费(0:显示包运费标签) "is_new_tag": 0//新人价格标签(0:不显示,1:显示) }, { "id": 4, "image": "http://jinglong.springchunjia.cn/uploads/20191128/93971e55b83d1a09c1831f8197514305.png", "name": "MONENT 动感系列", "tag": [ "AB级", "ABX级", "ABN级" ], "new_price": 2499, "sale_price": 2599 }, ], "total_page": 1 } }) */ public function sortGoodsList(){ if($this->request->isGet()){ $s_id = $this->request->get('s_id'); $page = $this->request->get('page'); $rule = config('verify.sort_goods'); $validate = new Validate($rule['rule'],$rule['msg']); if (!$validate->check(['s_id'=>$s_id,'page'=>$page])) { $this->error($validate->getError()); } //排序 $hots = $this->request->get('hots'); $sales = $this->request->get('sales'); $price = $this->request->get('price'); $order = 'id desc'; $flag = ''; if($hots){ if($hots == 1){ $order = 'hots desc,id desc'; }else if($hots == 2){ $order = 'hots asc'; } }else if($sales){ if($sales == 1){ $order = 'sales desc,id desc'; }else if($sales == 2){ $order = 'sales asc'; } }else if($price){ if($price == 1){ $flag = 1; }else if($price == 2){ $flag = 2; } } $where = ['type'=>0,'t_id'=>$s_id]; $limit = config('verify.goods_limit'); $arr = Common::goodsList($where,$page,$this->uid,$limit,$order,'',$flag); $this->success('成功',$arr); }else{ $this->error('请求方式错误'); } } /** * @ApiTitle (其他推荐商品列表) * @ApiSummary (其他推荐商品列表) * @ApiMethod (GET) * @ApiRoute (/api/goods/otherRecommendGoodsList) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiParams (name="order_id", type="inter", required=true, description="订单id") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1574941706", "data": [ { "id": 7,//商品id "image": "http://jinglong.springchunjia.cn/uploads/20191128/8a677f5a0418059bf1b974c50026af13.png",//图片路径 "name": "MONENT 动感系列",//商品名称 "tag": [//商品标签 "日式简约", "隐秘乡奢", "家庭情侣" ], "style": [//商品规格 "主餐匙,茶匙各1件", "古堡灰" ], "sale_price": 2299//销售价格 "expense_price": //运费(0:显示包运费标签) "is_new_tag": 0//新人价格标签(0:不显示,1:显示) }, { "id": 4, "image": "http://jinglong.springchunjia.cn/uploads/20191128/93971e55b83d1a09c1831f8197514305.png", "name": "MONENT 动感系列", "tag": [ "AB级", "ABX级", "ABN级" ], "new_price": 2499, "sale_price": 2599 }, ], }) */ public function otherRecommendGoodsList(){ if($this->request->isGet()){ $order_id = $this->request->get('order_id'); $rule = config('verify.order_detail'); $validate = new Validate($rule['rule'],$rule['msg']); if (!$validate->check(['order_id'=>$order_id])) { $this->error($validate->getError()); } //查询订单的商品所属品类id,品牌id $res_o_goods = Common::selectSoftWhereData('ogoods',['o_id'=>$order_id],'id,g_id'); $goods_id_s = array_column($res_o_goods,'g_id'); $res_goods = Common::selectSoftWhereData('goods',['id'=>['in',$goods_id_s]],'id,t_id'); $t_id_s = array_column($res_goods,'t_id'); $limit = config('verify.goods_limit'); $arr = Common::goodsList(['t_id'=>['in',$t_id_s]],1,$this->uid,$limit,'hots desc',1); $this->success('成功',$arr); }else{ $this->error('请求方式错误'); } } }