input('page_index'); $page_size=$request->input('page_size'); $num=$page_size*($page_index-1); $count=Goods::count(); $list=Goods::orderBy('id','desc')->skip($num)->take($page_size)->get(); foreach($list as $key=>$val){ $list[$key]->good_sku=GoodSku::where('goods_id',$val->id)->orderBy('sort','asc')->get(); } return $this->success_list($list,'成功',$count); } //添加商品 public function addGoods(Request $request){ try{ DB::transaction(function()use($request){ //添加商品基本信息 $goods=Goods::create([ 'name'=>$request->input('name'), 'price'=>$request->input('price'), 'vip_price'=>$request->input('vip_price'), 'super_price'=>$request->input('super_price'), 'top_price'=>$request->input('top_price'), 'crown_price'=>$request->input('crown_price'), 'content'=>$request->input('content'), 'img'=>$request->input('img'), 'main_attr'=>$request->input('main_attr'), 'banner'=>json_encode($request->input('banner')), 'is_delete'=>0, 'is_shelves'=>0, ]); $sku=$request->input('sku'); $data=[]; foreach($sku as $key=>$val){ $data[$key]=$val; $data[$key]['goods_id']=$goods->id; $data[$key]['num']=1000; $data[$key]['sale_num']=0; $data[$key]['created_at']=date("Y-m-d H:i:s"); $data[$key]['updated_at']=date("Y-m-d H:i:s"); } GoodSku::insert($data); }); return $this->success([]); }catch(\Exception $e){ return $this->error($e->getMessage()); } } //编辑商品 public function editGoods(Request $request){ $sku_old=GoodSku::where('goods_id',$request->input('id')) ->select(DB::raw("CONCAT(type,'-',size,'-',sort) as string"))->pluck('string')->toArray(); $sku_new=[]; foreach($request->input('sku') as $key=>$val){ $sku_new[$key]=$val['type'].'-'.$val['size'].'-'.$val['sort']; } Log::info(json_encode($sku_new)); try{ DB::transaction(function()use($request,$sku_new,$sku_old){ //添加商品基本信息 $goods=Goods::where('id',$request->input('id'))->update([ 'name'=>$request->input('name'), 'price'=>$request->input('price'), 'vip_price'=>$request->input('vip_price'), 'super_price'=>$request->input('super_price'), 'top_price'=>$request->input('top_price'), 'crown_price'=>$request->input('crown_price'), 'content'=>$request->input('content'), 'img'=>$request->input('img'), 'main_attr'=>$request->input('main_attr'), 'banner'=>json_encode($request->input('banner')), 'is_delete'=>0, 'is_shelves'=>0, ]); $increase=array_diff($sku_new,$sku_old); Log::info('2222'.json_encode($increase)); $increase_data=[]; foreach($increase as $k=>$v){ $increase_data[$k]['type']=explode('-',$v)[0]; $increase_data[$k]['size']=explode('-',$v)[1]; $increase_data[$k]['sort']=explode('-',$v)[2]; $increase_data[$k]['goods_id']=$request->input('id'); $increase_data[$k]['num']=1000; $increase_data[$k]['sale_num']=0; $increase_data[$k]['created_at']=date("Y-m-d H:i:s"); $increase_data[$k]['updated_at']=date("Y-m-d H:i:s"); } GoodSku::insert($increase_data); $decrease=array_diff($sku_old,$sku_new); foreach($decrease as $k=>$v){ $type=explode('-',$v)[0]; $size=explode('-',$v)[1]; GoodSku::where('size',$size)->where('type',$type)->delete(); } },5); return $this->success([]); }catch(\Exception $e){ return $this->error($e->getMessage()); } } //商品上下架 public function shelves(Request $request){ $goods=Goods::where('id',$request->input('id'))->first(); $goods->is_shelves = $goods->is_shelves ? 0 : 1; $res=$goods->save(); if($res){ return $this->success([]); }else{ return $this->error(); } } //商品删除 public function destroy(Request $request){ $res=Goods::where('id',$request->input('id'))->delete(); if($res){ return $this->success([]); }else{ return $this->error(); } } //上传图片 public function uploadImg(Request $request){ $path_url = 'public/goods'; $path = $request->file('img')->store($path_url); if($path){ $url = env('APP_URL').Storage::url($path); return $this->success($url); } return $this->error(); } //获取当日各商品销量 public function getGoodsSalesValue(){ $list=OrderDetail::with('goods') ->whereHas('order',function($query){ $query->where('is_pay',1); })->select('goods_id',DB::raw('sum(num) as total'),DB::raw('sum(account) as amount')) ->groupBy('goods_id')->get(); // $goods_sku=OrderDetail::whereHas('order',function($query){ // $query->where('is_pay',1); // })->whereDate('created_at',date("Y-m-d")) // ->select('goods_id','type','size',DB::raw('sum(num) as total'),DB::raw('sum(account) as amount')) // ->groupBy('goods_id','type','size')->get(); // $list=GoodSku::whereHas('goods',function($query){ // $query->where('is_shelves',1); // })->select('goods_id','type','size')->with(['goods:id,name,main_attr'])->get(); // foreach($list as $k=>$v){ // $list[$k]->sale_num=0; // $list[$k]->sale_money=0; // foreach($goods_sku as $key=>$val){ // if($v->goods_id==$val->goods_id && $v->type==$val->type && $v->size==$val->size){ // $list[$k]->sale_num=$val->total; // $list[$k]->sale_money=$val->amount; // } // } // } return $this->success($list); } //获取当日商品单规格销量 public function getGoodsSkuSalesValue(Request $request){ if($request->has('date') && !empty($request->input('date'))){ $date=$request->input('date'); }else{ $date=date("Y-m-d"); } $where=function($query)use($date){ $query->whereDate('created_at',$date); }; $goods_sku=OrderDetail::whereHas('order',function($query){ $query->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]); })->where($where) ->select('goods_id','type','size',DB::raw('sum(num) as total'),DB::raw('sum(account) as amount')) ->groupBy('goods_id','type','size')->get(); $list=GoodSku::whereHas('goods',function($query){ $query->where('is_shelves',1); })->select('goods_id','type','size')->with(['goods:id,name,main_attr'])->get(); foreach($list as $k=>$v){ $list[$k]->sale_num=0; $list[$k]->sale_money=0; foreach($goods_sku as $key=>$val){ if($v->goods_id==$val->goods_id && $v->type==$val->type && $v->size==$val->size){ $list[$k]->sale_num=$val->total; $list[$k]->sale_money=$val->amount; } } } return $this->success($list); } //获取省级行政单位销售信息 public function getProvinceSalesOrderBy(Request $request,$id=700000) { $province = Region::where('level', 1)->where('id','<',$id)->pluck('name'); $list=[]; foreach ($province as $key => $val) { $pro = $val; switch ($province) { case '北京': $pro = '北京市'; break; case '天津': $pro = '天津市'; break; case '上海': $pro = '上海市'; break; case '重庆': $pro = '重庆市'; break; } $addr_ids = Address::where('province', $pro)->pluck('id'); $order_nos=Order::whereHas('address', function ($query) use ($addr_ids) { $query->whereIn('id', $addr_ids); })->where('is_pay',1)->pluck('order_no'); $type=$request->input('type'); if(count($order_nos)==0){ $list[$pro]=0; }else{ $data = OrderDetail::whereIn('order_no',$order_nos); if($type==1){ //各类型产品销量 $data->with('goods:id,name,main_attr'); $data->select('goods_id', 'size', 'type',DB::raw('sum(num) as total'), DB::raw('sum(account) as amount')); $data->groupBy('goods_id', 'size', 'type'); }elseif($type==2){ //各产品销量 $data->with('goods:id,name,main_attr'); $data->select('goods_id',DB::raw('sum(num) as total'), DB::raw('sum(account) as amount')); $data->groupBy('goods_id'); }else{ //各省级总销量 $data->select(DB::raw('ifNull(sum(num),0) as total'), DB::raw('ifNull(sum(account),0) as amount')); } $list[$pro]=$data->get(); } } return $this->success($list); } //获取所有省级单位 public function getProvinceList(){ $province=Region::where('level',1)->where('id','<',700000)->pluck('name','id'); return $this->success($province); } //获取市级行政单位销售信息 public function getCitySalesOrderBy(Request $request) { $pro=$request->input('province'); $pid=Region::where('level', 1)->where('name',$pro)->value('id'); $cities = Region::where('level', 2)->where('pid',$pid)->pluck('name'); $list=[]; foreach ($cities as $key => $val) { if($val=='直辖县级'){ $val='省直辖县级行政区划'; $addr_ids = Address::where('city', $val)->where('province',$pro)->pluck('id'); }else{ $addr_ids = Address::where('city', $val)->pluck('id'); } $order_nos=Order::whereHas('address', function ($query) use ($addr_ids) { $query->whereIn('id', $addr_ids); })->where('is_pay',1)->pluck('order_no'); $type=$request->input('type'); $data = OrderDetail::whereIn('order_no',$order_nos); if($type==1){ //各类型产品销量 $data->with('goods:id,name,main_attr'); $data->select('goods_id', 'size', 'type',DB::raw('sum(num) as total'), DB::raw('sum(account) as amount')); $data->groupBy('goods_id', 'size', 'type'); }elseif($type==2){ //各产品销量 $data->with('goods:id,name,main_attr'); $data->select('goods_id',DB::raw('sum(num) as total'), DB::raw('sum(account) as amount')); $data->groupBy('goods_id'); }else{ //各省级总销量 $data->select(DB::raw('ifNull(sum(num),0) as total'), DB::raw('ifNull(sum(account),0) as amount')); } $list[$val]=$data->get(); } return $this->success($list); } }