middleware('auth.api'); // $this->user = \Auth::guard('api')->user(); // $this->uid = \Auth::guard('api')->id(); $this->user = User::find(824); $this->uid = 824; } public function index() { $addresses = User::find(824)->addresses()->orderBy('is_default', 'desc')->orderBy('id', 'desc')->get(); return $this->success($addresses); } /** * 商品详情 小程序商品详情页请求该接口。 * @param \App\Models\Goods $good * @return array */ public function show(Goods $good,Request $request) { $type = $request->get('type', 'cashScore'); if($type == 'score'){ $params_count = $good->params()->where('status', 1)->where('stock', '>', 0)->where('score', '>', 0)->whereRaw('price = score')->count(); if($params_count == 0){ return $this->failed('商品已下架'); }else{ return $this->success(new GoodsParamsScoreDetailResource($good)); } }elseif($type == 'cashScore'){ $params_count = $good->params()->where('status', 1)->where('stock', '>', 0)->where('score', '>', 0)->whereRaw('price > score')->count(); if($params_count == 0){ return $this->failed('商品已下架'); }else{ return $this->success(new GoodsParamsDetailResource($good)); } } } /** * 相关商品 小程序商品详情页请求该接口。 * @param \App\Models\Goods $good * @return array */ public function related(Goods $good) { $data = $good->seller->goods()->where('status', 1)->limit(6)->get(); return GoodsListResource::collection($data)->additional([ 'status' => 'SUCCESS', 'status_code' => 200, ]); } /** * 商品列表 小程序点击某一分类页面请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function lists(Request $request) { $category = $request->get('categoryId', ''); $title = $request->get('title', ''); $type = $request->get('type', 'cashScore'); $data = []; switch ($type){ case 'cash': $data = GoodsParams::whereHas('goods', function ($query) use($title,$category) { return $query->when($category, function ($query) use ($category) { $category_ids = Category::where('id',$category)->orWhere('parent_id', $category)->pluck('id'); return $query->whereIn('goods.category_id', $category_ids); })->when($title, function ($query) use ($title) { return $query->where('goods.title', 'like', "%$title%"); })->where('status',1); })->where('status', 1)->where('stock', '>', 0)->where('score', '=', 0)->where('price', '>', 0)->select('goods_id', DB::raw('any_value(stock) as stock'), DB::raw('any_value(original) as original'),DB::raw('any_value(status) as status'), DB::raw('any_value(price) as price'), DB::raw('any_value(score) as score'), DB::raw('any_value(id) as id')) ->groupBy('goods_id') ->orderBy('price','asc') ->with('goods') ->paginate(20); break; case 'score': $data = GoodsParams::whereHas('goods', function ($query) use($title,$category) { return $query->when($category, function ($query) use ($category) { $category_ids = Category::where('id',$category)->orWhere('parent_id', $category)->pluck('id'); return $query->whereIn('goods.category_id', $category_ids); })->when($title, function ($query) use ($title) { return $query->where('goods.title', 'like', "%$title%"); })->where('status',1); })->where('status', 1)->where('stock', '>', 0)->where('score', '>', 0)->whereRaw('price = score')->select('goods_id', DB::raw('any_value(stock) as stock'), DB::raw('any_value(original) as original'),DB::raw('any_value(status) as status'), DB::raw('any_value(price) as price'), DB::raw('any_value(score) as score'), DB::raw('any_value(id) as id')) ->groupBy('goods_id') ->orderBy('price','asc') ->with('goods') ->paginate(20); break; case 'cashScore': $data = GoodsParams::whereHas('goods', function ($query) use($title,$category) { return $query->when($category, function ($query) use ($category) { $category_ids = Category::where('id',$category)->orWhere('parent_id', $category)->pluck('id'); return $query->whereIn('goods.category_id', $category_ids); })->when($title, function ($query) use ($title) { return $query->where('goods.title', 'like', "%$title%"); })->where('status',1); })->where('status', 1)->where('stock', '>', 0)->where('score', '>', 0)->whereRaw('price > score')->select('goods_id', DB::raw('any_value(stock) as stock'), DB::raw('any_value(original) as original'),DB::raw('any_value(status) as status'), DB::raw('any_value(price) as price'), DB::raw('any_value(score) as score'), DB::raw('any_value(id) as id')) ->groupBy('goods_id') ->with('goods') ->orderBy('price','asc') ->paginate(20); break; } return GoodsParamsListResource::collection($data)->additional([ 'status' => 'SUCCESS', 'status_code' => 200, ]); } /** * 商品分类 小程序点击某一分类页面请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function category(Request $request) { $categoryId = $request->get('id', ''); $categoryLists = Category::where('parent_id', 1)->orderBy('sort', 'desc')->orderBy('created_at', 'desc')->get(); $currentCategory = Category::find($categoryId); return [ 'data' => [ 'currentCategory' => new ChannelIndexResource($currentCategory), 'categoryLists' => ChannelIndexResource::collection($categoryLists), ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } /** * 商品满仓列表 小程序点击满仓赠品请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function fullLists(Request $request) { $title = $request->get('title', ''); $fullGoodsLists = Goods::where('status', 1) ->when($title, function ($query) use ($title) { return $query->where('title', 'like', "%$title%"); }) ->whereHas('params', function ($query) { return $query->where('stock', '>', 0)->where('status', 1); }) ->where('is_mall_gift', 1)->get(); $isfull = $this->user->account->act_a > 0 ? true : false; $fullOrder = Order::where(['user_id' => $this->uid, 'item_type' => 'FULL_GIFT'])->whereRaw('substring(cast(status as char),1,1) = 1')->first(); $canCreateOrder = !$fullOrder && $isfull ? true : false; return [ 'data' => [ 'isfull' => $isfull, 'fullGoodsLists' => GoodsGiftListResource::collection($fullGoodsLists), 'canCreateOrder' => $canCreateOrder, ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } /** * vip赠品列表 小程序点击vip赠品请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function vipLists(Request $request) { $title = $request->get('title', ''); $vipGoodsLists = Goods::where('status', 1) ->when($title, function ($query) use ($title) { return $query->where('title', 'like', "%$title%"); }) ->whereHas('params', function ($query) { return $query->where('stock', '>', 0)->where('status', 1); }) ->where('is_seller_gift', 1)->get(); //最近的上级总裁的商品。 $parentMallLists = []; $parent_ids = array_reverse(array_filter(explode(',', $this->user->relation->bloodline))); foreach ($parent_ids as $key => $parent_id) { $parent_seller[$key] = Seller::where(['status' => 1, 'user_id' => $parent_id])->first(); if ($parent_seller[$key]) { $parentMallLists = $parent_seller[$key]->goods()->where('is_seller_gift', 1)->get(); if ($parentMallLists && $parentMallLists->count() > 0) { break; } } } $defaultMallLists = Goods::where('status', 1)->whereHas('params', function ($query) { return $query->where('stock', '>', 0)->where('status', 1); }) ->where('is_seller_gift', 1)->where('seller_id', 1)->get(); $vipPay = VipPament::where(['user_id' => $this->uid, 'state' => 'SUCCESS'])->first(); if ($vipPay && $vipPay->type == 'CDKEY') { $vipGoodsLists = !empty($parentMallLists) && $parentMallLists->count() > 0 ? [] : $defaultMallLists; } $isVipUser = $vipPay ? true : false; $vipOrder = Order::where(['user_id' => $this->uid, 'item_type' => 'VIP_GIFT'])->whereRaw('substring(cast(status as char),1,1) = 1')->first(); $canCreateOrder = !$vipOrder && $isVipUser ? true : false; return [ 'data' => [ 'parentMallLists' => !empty($parentMallLists) && $parentMallLists->count() > 0 ? GoodsGiftListResource::collection($parentMallLists) : [],//最近上级的店铺赠品 'vipGoodsLists' => !empty($vipGoodsLists) && $vipGoodsLists->count() > 0 ? GoodsGiftListResource::collection($vipGoodsLists) : [],//可选的全部赠品 'isVipUser' => $isVipUser,//是否是vip 'canCreateOrder' => $canCreateOrder//是否可以创建订单 ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } /** * 满仓赠品详情 小程序点击满仓赠品查看赠品详情请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function fullGift(Goods $good) { $isfull = $this->user->account->act_a > 0 ? true : false; $fullOrder = Order::where(['user_id' => $this->uid, 'item_type' => 'FULL_GIFT'])->whereRaw('substring(cast(status as char),1,1) = 1')->first(); $canCreateOrder = !$fullOrder && $isfull ? true : false; return [ 'data' => [ 'isfull' => $isfull, 'canCreateOrder' => $canCreateOrder, 'goods' => new GoodsGiftDetailResource($good), ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } /** * vip赠品详情 小程序点击vip赠品查看赠品详情请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function vipGift(Goods $good) { $vipPay = VipPament::where(['user_id' => $this->uid, 'state' => 'SUCCESS'])->first(); $isVipUser = $vipPay ? true : false; $vipOrder = Order::where(['user_id' => $this->uid, 'item_type' => 'VIP_GIFT'])->whereRaw('substring(cast(status as char),1,1) = 1')->first(); $canCreateOrder = !$vipOrder && $isVipUser ? true : false; return [ 'data' => [ 'goods' => new GoodsGiftDetailResource($good), 'isVipUser' => $isVipUser,//是否是vip 'canCreateOrder' => $canCreateOrder//是否可以创建订单 ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } }