input('type'); $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); $goods=StoreGoods::where('is_delete',0)->where('is_shelves',1)->select('id','name','img','price','vip_price','main_attr')->orderByDesc('sort')->orderBy('id')->get(); $inventory=InventoryW::where('store_id',$store_id)->pluck('num',DB::raw("CONCAT(store_id,'_',goods_id,'_',sku_id)"))->toArray(); foreach($goods as $key=>$val){ $goods[$key]->imgs=str_replace('http://','https://',$val->img); $second=mt_rand(3600,7200); if(Cache::has('goods_id_'.$val->id.'_sku')){ $sku= Cache::get('goods_id_'.$val->id.'_sku'); }else{ $sku=StoreGoodsSku::where('goods_id',$val->id)->groupBy('type')->pluck('type'); Cache::add('goods_id_'.$val->id.'_sku',$sku,$second); } $goods[$key]->sku=$sku; $size=[]; foreach($sku as $k=>$v){ if(Cache::has('goods_id_'.$val->id.'_'.$v.'_sku')){ $skuInfo= Cache::get('goods_id_'.$val->id.'_'.$v.'_sku'); }else{ $skuInfo=StoreGoodsSku::where('goods_id',$val->id)->where('type',$v)->select('id','size')->orderBy('sort')->get(); Cache::put('goods_id_'.$val->id.'_'.$v.'_sku',$skuInfo,$second); } foreach($skuInfo as $ks => $vs){ $info=$vs; $info->type=$v; if(empty($inventory[$store_id.'_'.$val->id.'_'.$vs->id])){ $info->num=0; }else{ $info->num=$inventory[$store_id.'_'.$val->id.'_'.$vs->id]; } $info->isChecked=false; // if($type==1 && $k==0 && $ks==0){ // $info->isChecked=true; // } $size[$v][$ks]=$info; } $goods[$key]->size=$size; } } return $this->success($goods); } //获取店铺用户 public function getStoreUser(Request $request){ $input=$request->all(); $user_id=Auth::user()->id; $time=Carbon::now()->toDateTimeString(); $level=User::where('id',$user_id)->value('level'); if($level==1 && $time>'2023-02-03 09:00:00'){ return $this->error('451101','该店铺不能进行代下单','该店铺不能进行代下单'); } $store_id=Store::where('user_id',$user_id)->value('id'); $user_ids=OrderW::where('store_id',$store_id)->groupBy('user_id')->pluck('user_id'); $user=UserW::whereIn('id',$user_ids); $search_name=$input['search_name']; if(!empty($search_name)){ $user->where(function($query)use($search_name){ $query->where('nickname','like','%'.$search_name.'%') ->orWhere('phone','like','%'.$search_name.'%'); }); } $list=$user->orderBy('id')->get(); Log::info('已下单顾客信息'); Log::info($store_id); $mobiles = []; if(empty($list)){ Log::info('没有已下单顾客信息'); Log::info($list); return $this->success([]); } foreach($list as $key=>$val){ $uu=User::where('mobile',$val->phone) ->where(function($query){ $query->where('cert_status',3) ->orWhere('cert_status',6); }) ->where('service_status',0)->whereNull('deleted_at')->pluck('uuid'); foreach($uu as $v){ $mobiles[] = Crypt::decryptString($v); break; } } Log::info('count:'.count($list)); $client = new Client(['headers' => [ "User-Agent" => 'Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:0.9.4)', "Content-type" => 'application/json' ]]); $url='https://weidian.cliu.cc/api/crypt/getCryptData'; $data = [ 'form_params' => [ 'list' => array_column($list->toArray(),'id'), 'store_id' => $store_id, 'mobiles' => $mobiles ], 'timeout' => 300 ]; $data=$client->post($url,$data); $ids=$data->getBody()->getContents(); $ids = json_decode($ids, true); $ll = UserW::whereIn('id',$ids)->get(); Log::info('count_ll:'.count($ll)); return $this->success($ll); } //获取商品信息 public function getGoods(){ $data=[]; $goods=StoreGoods::where('is_delete',0)->where('is_shelves',1)->pluck('name','id'); $type=['男款','女款']; $size=['S','M','L','XL','XXL','XXXL']; $data['goods']=$goods; $data['type']=$type; $data['size']=$size; return $this->success($data); } public function getGoodsDetail(Request $request){ $goods_id=$request->input('goods_id'); $goods=StoreGoods::with('goodSku')->where('id',$goods_id)->first(); $goods->imgs=str_replace('http://','https://',$goods->img); return $this->success($goods); } //获取商品列表 public function getGoodsList(Request $request){ $input=$request->all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $num=$page_size*($page_index-1); $goods_id=$input['goods_id']; if(!is_array($input['ids'])){ $ids=json_decode($input['ids'],true); }else{ $ids=$input['ids']; } $data=StoreGoodsSku::with(['goods:id,name,price,img']) ->whereHas('goods',function($query){ $query->where('is_delete',0)->where('is_shelves',1); }); if(!empty($goods_id)){ $data ->where('goods_id',$goods_id); } if(!empty($ids)){ $data->whereIn('id',$ids); } $count=$data->count(); $list=$data->orderByDesc('goods_id')->orderByDesc('goods_id') ->skip($num)->take($page_size) ->get(); return $this->success_list($list,'成功',$count); } //分享商品 public function shareGoods(Request $request){ $input=$request->all(); $sku_id=$input['sku_id']; $info=StoreGoodsSku::with(['goods'])->whereHas('goods',function($query){ $query->where('is_delete',0)->where('is_shelves',1); })->where('id',$sku_id) ->orderByDesc('goods_id')->orderByDesc('goods_id')->get(); return $this->success($info); } //上传图片 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 auth_code(Request $request){ $user=User::find($request->id); if ($user->cert_status==3||$user->cert_status==6){ if ($user->auth_startime &&$user->auth_code){ if ($user->auth_img==null){ $name=$user->realname==null?$user->nickname:$user->realname; $url=$this->auth_create($name,$user->mobile,judge_level($user->level),$user->auth_code,$user->auth_startime,$user->auth_endtime,$user->id); $user->auth_img=$url; $user->save(); } $data['status']=0; }else{ $data['status']=1; } }else{ $data['status']=1; } if ($user->service_status==1){ // return $this->error(50021,'','该代理尚未通过客服审核'); return $this->error(50021,'','该账号尚未通过经销商审核'); } if ($user->service_status==2){ // return $this->error(50021,'','该代理的申请已被客服驳回'); return $this->error(50021,'','该账号的申请已被经销商驳回'); } $data['auth_startime']=strtotime($user->auth_startime)*1000; $data['auth_endtime']=strtotime($user->auth_endtime)*1000; $data['code']=$user->auth_code; $data['phone']=$user->mobile; $data['level_name']=judge_level($user->level); $data['realname']=$user->realname==null?$user->nickname:$user->realname; $data['url']=$user->auth_img==null?'':$user->auth_img; return $data; } public function auth_create($name,$phone,$level_name,$auth_code,$time_start,$time_end,$num){ $client=new Client(); $url='http://api.app.cliu.cc/138.jpg'; $avatarResponse = $client->get($url); $img = Image::make($avatarResponse->getBody()->getContents()); $img->text($name, 400, 565,function ($font){ $font->file(base_path().'/public/fangzheng.ttf'); $font->size(25); $font->angle(0); }); $img->text($phone, 400, 635,function ($font){ $font->file(base_path().'/public/fangzheng.ttf'); $font->size(25); $font->angle(0); }); $img->text($level_name, 350, 820,function ($font){ $font->file(base_path().'/public/fangzheng.ttf'); $font->size(60); $font->angle(0); }); $img->text($auth_code, 285, 965,function ($font){ $font->file(base_path().'/public/fangzheng.ttf'); $font->size(25); $font->angle(0); }); $year=mb_substr($time_start,0,4); $month=mb_substr($time_start,5,2); $day=mb_substr($time_start,8,2); $year_t=mb_substr($time_end,0,4); $month_t=mb_substr($time_end,5,2); $day_t=mb_substr($time_end,8,2); $img->text("{$year}年{$month}月{$day}日 - {$year_t}年{$month_t}月{$day_t}日", 285, 1050,function ($font){ $font->file(base_path().'/public/fangzheng.ttf'); $font->size(25); $font->angle(0); }); $name=$this->rand_code($num); $img->save(base_path().'/public/public/uploads/auth_img/'.$name.'.jpg'); return env('APP_URL').'/public/uploads/auth_img/'.$name.'.jpg'; } public function rand_code($num){ $code='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $str=$num."_"; $str_1=''; for ($i=0;$i<20;$i++){ $int=rand(0,34); $str_1.=mb_substr($code,$int,1); } $str=$str.mb_substr(time(),2,3).$str_1; return $str.mb_substr(time(),7,3); } //获取所有取消订单信息 public function getCancelOrderList(Request $request){ $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); $page_index=$request->input('page_index'); $page_size=$request->input('page_size'); $order_no=$request->input('order_no'); $num=$page_size*($page_index-1); $data= OrderW::with(['user:id,nickname,phone','order_cancel'=>function($query){$query->where('using',1);},'refund','store:id,name,img,phone']) ->where('store_id',$store_id) ->whereIn('apply_cancel',[1,2,3]); if($order_no){ $data->where('order_no','like','%'.$order_no.'%'); } $count= $data->count(); $orders= $data->orderByDesc('cancel_at')->skip($num)->take($page_size)->get(); foreach($orders as $key=>$val){ $goods_ids=OrderDetailW::where('order_no',$val->order_no)->groupBy('goods_id')->pluck('goods_id'); $goods=[]; foreach($goods_ids as $k=>$v){ $goods[$k]=StoreGoods::select('id','name','img','main_attr')->where('id',$v)->first(); $goods[$k]->sku=OrderDetailW::where('order_no',$val->order_no)->where('goods_id',$v)->get(); if(count($goods[$k]->sku)>0){ $goods[$k]->price=$goods[$k]->sku[0]->price; } } $orders[$key]->goods=$goods; } return $this->success_list($orders,'成功',$count); } //获取所有退货订单 public function getAllRefundOrder(Request $request) { $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); $page_index=$request->input('page_index'); $page_size=$request->input('page_size'); $num=$page_size*($page_index-1); $refund_no=$request->input('refund_no'); $data=OrderRefundW::with('store:id,name,phone')->where('store_id',$store_id); if($refund_no){ $data->where('refund_no','like','%'.$refund_no.'%'); } $total= $data->count(); $refunds = $data->orderBy('id','desc')->skip($num)->take($page_size)->get(); foreach($refunds as $key=>$val){ $goods=[]; $goods_ids=OrderDetailW::where('order_no',$val->refund_no)->groupBy('goods_id')->pluck('goods_id'); foreach($goods_ids as $k=>$v){ $goods[$k]=StoreGoods::where('id',$v)->first(); $goods[$k]->sku=OrderDetailW::where('order_no',$val->refund_no)->where('goods_id',$v)->get(); } $refunds[$key]->goods=$goods; } return $this->success_list($refunds,'成功',$total); } //获取退货订单详情 public function getRefundOrderDetail(Request $request) { $refund_id = $request->input('refund_id'); //获取订单信息(id) $order = OrderRefundW::with(['store:id,name,img,phone'])->where('id', $refund_id)->first(); $goods_ids = OrderDetailW::where('order_no', $order->refund_no)->groupBy('goods_id')->pluck('goods_id'); $goods = []; foreach ($goods_ids as $key => $val) { $goods[$key] = StoreGoods::where('id', $val)->first(); $goods[$key]->sku = OrderDetailW::where('order_no', $order->refund_no)->where('goods_id', $val)->get(); } $order->goods = $goods; return $this->success($order); } //删除订单 public function deleteOriginOrder(Request $request){ $order_id=$request->input('order_id'); $res=OrderW::where('id',$order_id)->delete(); if($res){ return $this->success([]); }else{ return $this->error(); } } //取消退货审核 public function cancelRefundOrder(Request $request){ $refund_id=$request->input('refund_id'); $refund=OrderRefundW::where('id',$refund_id)->first(); if(empty($refund)){ return $this->error('450001','退货单不存在'); } $count=OrderRefundW::where('order_no',$refund->order_no)->count(); try{ DB::transaction(function()use($count,$refund){ if($count==1){ OrderW::where('order_no',$refund->order_no)->update([ 'is_refund'=>0 ]); }elseif($count>1){ OrderW::where('order_no',$refund->order_no)->update([ 'is_refund'=>2 ]); } OrderRefundW::where('id',$refund->id)->delete(); },5); return $this->success([]); }catch(\Exception $e){ return $this->error('450001',$e->getMessage()); } } //修改订单物流信息 public function editExpress(Request $request){ $input=$request->all(); $rules=[ 'express_no' =>'required', 'express_company'=>'required', 'express_time' =>'required' ]; $message=[ 'express_no.required' =>'发货单号不能为空.', 'express_company.required'=>'物流公司不能为空.', 'express_time.required' =>'发货时间不能为空.' ]; $validator = Validator::make($input,$rules,$message); if($validator->fails()){ return $this->error('400013',$validator->errors()->first()); } $res=OrderW::where('order_no',$input['order_no'])->update([ 'express_no'=>str_replace(' ','', $input['express_no']), 'express_company'=>$input['express_company'], 'express_code'=>$input['express_code'], 'express_state'=>0, 'express_info'=>null, 'express_receive_time'=>null, 'express_phone'=>$input['express_phone'], 'express_time'=>$input['express_time'] ]); if($res){ return $this->success([]); }else{ return $this->error(); } } //添加微信二维码 public function uploadWxQrCodeImg(Request $request){ Log::info(Auth::user()->id.'---'.Auth::user()->nickname.'---变更了微信二维码'); // $path_url = 'public/wxQrCode/'.date("Ymd"); $file=$request->file('img'); $extension=['jpg','png','jpeg'];//,'xbm','tif','tiff','pjp','svgz','ico','gif','svg','webp','bpm','pjpeg','avif','xbm','tif','tiff','pjp','svgz','ico','gif','svg','webp','bpm','pjpeg','avif' $fileextension=$file->getClientOriginalExtension(); Log::info(Auth::user()->id.'---'.Auth::user()->nickname.'---'.$fileextension); $fileextension=strtolower($fileextension); if(!in_array($fileextension,$extension)){ return $this->error('450001','上传图片格式有误,当前文件格式为:'.$fileextension); } // $path = $file->store($path_url); // 获取七牛云配置信息 $config = [ 'driver' => 'qiniu', 'domain' => 'http://image.chuliu.cc', //七牛域名 'access_key' => 'cIbo9JAqHBgO6uw97gT5fJOlEHiTiGrpB84unVEn', //AccessKey 'secret_key' => '4f0nTNNrvzOsFc6Rz0GC5DntiJRnk2GcfkyJFNQp', //SecretKey 'bucket' => 'daweiboshi-app', //Bucket名字 'dirname'=> 'daweiboshi-weidian' ]; // 构建鉴权对象 $auth = new Auths($config['access_key'], $config['secret_key']); // 生成上传 Token $token = $auth->uploadToken($config['bucket']); //获取文件的绝对路径,但是获取到的在本地不能打开 $filePath = $file->getRealPath(); //获取文件的扩展名 $ext = $file->getClientOriginalExtension(); // 新文件名 $filename =date('His') . uniqid(mt_rand(10000,99999)) .'.'. $ext; $dirname=$config['dirname']; // 初始化 UploadManager 对象并进行文件的上传。 $uploadMgr = new UploadManager(); // 调用 UploadManager 的 putFile 方法进行文件的上传。 $pathname= $dirname.'/wxQrCode/'.date('Ymd').'/'.$filename; try{ $uploadMgr->putFile($token, $pathname, $filePath); }catch(\Exception $e){ return $this->error('450001',$e->getMessage(),$e->getMessage()); } // 获取文件完整路径 $url = $config['domain'].'/'.$pathname; if($url){ $user_id=Auth::user()->id; $res=Store::where('user_id',$user_id)->update(['qr_code'=>$url]); if($res){ return $this->success($url); }else{ return $this->error('450001','二维码上传失败'); } }else{ return $this->error('450001','二维码上传失败'); } } //销收数据 public function getSaleInfo(Request $request){ $cycle=$request->input('cycle'); $startime=$request->input('startime'); $endtime=$request->input('endtime'); $agent_id=Auth::user()->id; $store_id=Store::where('status',0)->where('user_id',$agent_id)->value('id'); $data=OrderW::with('user')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]); if(!empty($startime) && !empty($endtime)){ $data->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime($startime)),date("Y-m-d 23:59:59",strtotime($endtime))]); }else{ switch($cycle){ case 'daily': $data->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); break; case 'today': $data->whereDate('created_at',date("Y-m-d")); break; case 'week': $w=date('w'); if($w==0){ $w=7; } $w-=1; $data->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]); break; case 'month': $data->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]); break; // case 'quarter': // $start=(ceil(date("m")/3)-1)*3+1; // $data->whereBetween('created_at',[date("Y-".$start."-01 00:00:00"),date("Y-m-d 23:59:59")]); // break; default: $data->where([]); } } $order_nos=$data->pluck('order_no'); $goods_ids=StoreGoods::where('is_shelves',1)->select('id','name','main_attr')->get()->toArray(); $sale_info=[]; // return $order_nos; foreach($goods_ids as $key=>$val){ $order_details=OrderDetailW::with('goods:id,name,main_attr,img') ->where('goods_id',$val['id'])->whereIn('order_no',$order_nos) ->select('goods_id',DB::raw('sum(num) as num'),DB::raw('sum(ifNUll(account,0)) as account')) ->first()->toArray(); if(empty($order_details['goods'])){ $order_details['goods_id']=$val['id']; $order_details['num']=0; $order_details['account']=0; $order_details['goods']=$val; } $sale_info[$key]=$order_details; } return $this->success($sale_info); } //销售曲线 public function getSaleAccount(Request $request){ $cycle=$request->input('cycle'); $startime=$request->input('startime'); $endtime=$request->input('endtime'); $agent_id=Auth::user()->id; $store_id=Store::where('status',0)->where('user_id',$agent_id)->value('id'); switch($cycle){ case 'daily': case 'today': $type='daily'; $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d")); break; case 'week': $w=date('w'); if($w==0){ $w=7; } $w-=1; $type='daily'; $date=$this->getDateFromRange(date("Y-m-d",strtotime("-$w day")),date("Y-m-d")); break; case 'month': $type='daily'; $date=$this->getDateFromRange(date("Y-m-01"),date("Y-m-d")); break; default: $time=OrderW::with('user')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->pluck('created_at')->toArray(); if(count($time)>=2) { $max_time = date("Y-m-d", strtotime(max($time))); $min_time = date("Y-m-d", strtotime(min($time))); $datetime1 = date_create($max_time); //格式化日期 $datetime2 = date_create($min_time); //格式化日期 $interval = date_diff($datetime1, $datetime2); if ($interval->format('%a') > 31) { $type = 'month'; $date = $this->dateMonths($min_time, $max_time); } else { $type = 'daily'; $date = $this->getDateFromRange($min_time, $max_time); } }else{ $type='daily'; $date=$this->getDateFromRange(date("Y-m-d",strtotime("-1 days")),date("Y-m-d")); } } if(!empty($startime) && !empty($endtime)){ $max_time=date("Y-m-d",strtotime($endtime)); $min_time=date("Y-m-d",strtotime($startime)); $datetime1 = date_create($max_time); //格式化日期 $datetime2 = date_create($min_time); //格式化日期 $interval = date_diff($datetime1, $datetime2); if($interval->format('%a') > 31){ $type='month'; $date=$this->dateMonths($min_time,$max_time); }else{ $type='daily'; $date=$this->getDateFromRange($min_time,$max_time); } } $stores=[]; foreach($date as $key=>$val){ if($type=='daily'){ $order_nos=OrderW::with('user')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->whereDate('created_at',$val)->pluck('order_no'); }else{ $order_nos=OrderW::with('user')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->whereMonth('created_at',$val)->pluck('order_no'); } $stores[$val]=OrderDetailW::with('goods:id,name,main_attr,img')->whereIn('order_no',$order_nos)->groupBy('goods_id') ->select('goods_id',DB::raw('sum(num) as num'),DB::raw('sum(ifNUll(account,0)) as account')) ->get(); } $goods=StoreGoods::where('is_shelves',1)->select('id','name','main_attr')->get(); $data['store']=$stores; $data['goods']=$goods; return $this->success($data); } function getDateFromRange($startdate, $enddate){ $stimestamp = strtotime($startdate); $etimestamp = strtotime($enddate); // 计算日期段内有多少天 $days = ($etimestamp-$stimestamp)/86400+1; // 保存每天日期 $date = array(); for($i=0; $i<$days; $i++){ $date[] = date('Y-m-d', $stimestamp+(86400*$i)); } return $date; } /** * 计算出两个日期之间的月份区间 * @author Eric * @param [type] $start_date [开始日期,如2014-03] * @param [type] $end_date [结束日期,如2015-12] * @param string $explode [年份和月份之间分隔符,此例为 - ] * @param boolean $addOne [算取完之后最后是否加一月,用于算取时间戳用] * @return [type] [返回是两个月份之间所有月份字符串] */ function dateMonthsSections($start_date,$end_date,$explode='-',$addOne=false){ $data = $this->dateMonths($start_date,$end_date,$explode,$addOne); $length = sizeof($data); $res = array(); foreach ($data as $key => $value) { if($key < ($length-1)){ $date1 = $value; $date2 = $data[$key + 1]; $res[$key][0] = $date1; $res[$key][1] = $date2; } } return $res; } /** * 计算出两个日期之间的月份 * @author Eric * @param [type] $start_date [开始日期,如2014-03] * @param [type] $end_date [结束日期,如2015-12] * @param string $explode [年份和月份之间分隔符,此例为 - ] * @param boolean $addOne [算取完之后最后是否加一月,用于算取时间戳用] * @return [type] [返回是两个月份之间所有月份字符串] */ function dateMonths($start_date,$end_date,$explode='-',$addOne=false){ //判断两个时间是不是需要调换顺序 $start_date=date("Y-m",strtotime($start_date)); $end_date=date("Y-m",strtotime($end_date)); $start_int = strtotime($start_date); $end_int = strtotime($end_date); if($start_int > $end_int){ $tmp = $start_date; $start_date = $end_date; $end_date = $tmp; } //结束时间月份+1,如果是13则为新年的一月份 $start_arr = explode($explode,$start_date); $start_year = intval($start_arr[0]); $start_month = intval($start_arr[1]); $end_arr = explode($explode,$end_date); $end_year = intval($end_arr[0]); $end_month = intval($end_arr[1]); $data = array(); $data[] = $start_date; $tmp_month = $start_month; $tmp_year = $start_year; //如果起止不相等,一直循环 while (!(($tmp_month == $end_month) && ($tmp_year == $end_year))) { $tmp_month ++; //超过十二月份,到新年的一月份 if($tmp_month > 12){ $tmp_month = 1; $tmp_year++; } $data[] = $tmp_year.$explode.str_pad($tmp_month,2,'0',STR_PAD_LEFT); } if($addOne == true){ $tmp_month ++; //超过十二月份,到新年的一月份 if($tmp_month > 12){ $tmp_month = 1; $tmp_year++; } $data[] = $tmp_year.$explode.str_pad($tmp_month,2,'0',STR_PAD_LEFT); } return $data; } //获取操作全部视频 public function getAllVideo(){ $setting=SettingW::all(); return $this->success($setting); } public function getUserData(Request $request){ $cycle=$request->input('cycle'); $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); $data=OrderW::where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->select(DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as account')); switch($cycle){ case 'yesterday': $type='yesterday'; $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d")); break; case 'today': $type='today'; $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d")); break; case 'week': $type='week'; $w=date('w'); if($w==0){ $w=7; } $w-=1; $where=function($query)use($w){ $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]); }; $date=$this->getDateFromRange(date("Y-m-d",strtotime("-$w day")),date("Y-m-d")); break; case 'month': $type='month'; $where=function($query){ $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]); }; $date=$this->getDateFromRange(date("Y-m-01"),date("Y-m-d")); break; default: $where=[]; $time=OrderW::with('user')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->pluck('created_at')->toArray(); if(count($time)>=2){ $max_time=date("Y-m-d",strtotime(max($time))); $min_time=date("Y-m-d",strtotime(min($time))); $datetime1 = date_create($max_time); //格式化日期 $datetime2 = date_create($min_time); //格式化日期 $interval = date_diff($datetime1, $datetime2); if($interval->format('%a') > 31){ $type='all'; $date=$this->dateMonths($min_time,$max_time); }else{ $type='daily'; $date=$this->getDateFromRange($min_time,$max_time); } }else{ $type='daily'; $date=$this->getDateFromRange(date("Y-m-d",strtotime("-1 days")),date("Y-m-d")); } } $data->where($where); $data1=clone $data; $list=$data->first()->toArray(); $users=$data1->whereHas('user',function($query)use($where){ $query->where($where); })->groupBy('user_id')->get(); $list['type']=$type; $list['count']=$users->count(); foreach($date as $key=>$val){ if($type=='yesterday' || $type=='today' || $type=='week' || $type=='month'){ $user_ids=OrderW::where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->where('store_id',$store_id)->whereDate('created_at',$val)->groupBy('user_id')->pluck('user_id'); $line[$val]=UserW::whereDate('created_at',$val)->whereIn('id',$user_ids)->count(); }else{ Log::info('two'); $timestamp=strtotime($val); $start=Carbon::parse($timestamp)->tz('PRC')->startOfMonth()->toDateTimeString(); $end=Carbon::parse($timestamp)->tz('PRC')->endOfMonth()->toDateTimeString(); $user_ids=OrderW::query()->where('store_id',$store_id)->whereBetween('created_at',[$start,$end])->groupBy('user_id')->pluck('user_id'); $line[$val]=UserW::whereBetween('created_at',[$start,$end])->whereIn('id',$user_ids)->count(); } } Log::info('123122222'); $list['line']=$line; return $this->success($list); } public function getUserList(Request $request){ // dispatch(new PayOrderAddCreditsJob('运行队列测试123--00--123')); $cycle=$request->input('cycle'); $search_name=$request->input('search_name'); $page_index=$request->input('page_index'); $page_size=$request->input('page_size'); $num=$page_size*($page_index-1); $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); $wheres=[]; if($search_name){ $wheres=function($query)use($search_name){ $query->where('nickname','like','%'.$search_name.'%')->orWhere('phone','like','%'.$search_name.'%'); }; } switch($cycle){ case 'yesterday': $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; break; case 'today': $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; break; case 'week': $w=date('w'); if($w==0){ $w=7; } $w-=1; $where=function($query)use($w){ $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]); }; break; case 'month': $where=function($query){ $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]); }; break; default: $where=[]; } $count=OrderW::where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->select(DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as account')) ->whereHas('user',function($query)use($where,$wheres){ $query->where($where)->where($wheres); })->groupBy('user_id')->get()->count(); $list=OrderW::with('user:id,nickname,avatar')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->select('user_id',DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as account')) ->whereHas('user',function($query)use($where,$wheres){ $query->where($where)->where($wheres); })->groupBy('user_id')->OrderByDesc('total')->OrderByDesc('account')->OrderBy('user_id')->skip($num)->take($page_size)->get(); return $this->success_list($list,'',$count); } public function getSeeUserData(Request $request){ $cycle=$request->input('cycle'); $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); switch($cycle){ case 'yesterday': $type='yesterday'; $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d")); break; case 'today': $type='today'; $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d")); break; case 'week': $type='week'; $w=date('w'); if($w==0){ $w=7; } $w-=1; $where=function($query)use($w){ $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]); }; $date=$this->getDateFromRange(date("Y-m-d",strtotime("-$w day")),date("Y-m-d")); break; case 'month': $type='month'; $where=function($query){ $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]); }; $date=$this->getDateFromRange(date("Y-m-01"),date("Y-m-d")); break; default: $where=[]; $time=OrderW::with('user')->where('store_id',$store_id) ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]) ->pluck('created_at')->toArray(); if(count($time)>=2){ $max_time=date("Y-m-d",strtotime(max($time))); $min_time=date("Y-m-d",strtotime(min($time))); $datetime1 = date_create($max_time); //格式化日期 $datetime2 = date_create($min_time); //格式化日期 $interval = date_diff($datetime1, $datetime2); if($interval->format('%a') > 31){ $type='all'; $date=$this->dateMonths($min_time,$max_time); }else{ $type='daily'; $date=$this->getDateFromRange($min_time,$max_time); } }else{ $type='daily'; $date=$this->getDateFromRange(date("Y-m-d",strtotime("-1 days")),date("Y-m-d")); } } $list=[]; $list['count']=See::where($where)->where('store_id',$store_id)->groupBy('user_id')->get()->count(); foreach($date as $key=>$val){ if($type=='yesterday' || $type=='today' || $type=='week' || $type=='month'){ $user_ids=See::where('store_id',$store_id)->whereDate('created_at',$val)->groupBy('user_id')->pluck('user_id'); }else{ $timestamp=strtotime($val); $start=Carbon::parse($timestamp)->tz('PRC')->startOfMonth()->toDateTimeString(); $end=Carbon::parse($timestamp)->tz('PRC')->endOfMonth()->toDateTimeString(); $user_ids=See::query()->where('store_id',$store_id)->whereBetween('created_at',[$start,$end])->groupBy('user_id')->pluck('user_id'); } $line[$val]=count($user_ids); } $list['line']=$line; return $this->success($list); } public function getSeeUserList(Request $request){ $cycle=$request->input('cycle'); $search_name=$request->input('search_name'); $page_index=$request->input('page_index'); $page_size=$request->input('page_size'); $num=$page_size*($page_index-1); $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); switch($cycle){ case 'yesterday': $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; break; case 'today': $where=function($query){ $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day'))); }; break; case 'week': $w=date('w'); if($w==0){ $w=7; } $w-=1; $where=function($query)use($w){ $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]); }; break; case 'month': $where=function($query){ $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]); }; break; default: $where=[]; } $count=See::where($where)->where('store_id',$store_id)->whereHas('user',function($query)use($search_name){ $query->where('nickname','like','%'.$search_name.'%')->orWhere('phone','like','%'.$search_name.'%'); })->count(); $list=See::with(['user:id,nickname,avatar','goods:id,name,img']) ->whereHas('user',function($query)use($search_name){ $query->where('nickname','like','%'.$search_name.'%')->orWhere('phone','like','%'.$search_name.'%'); }) ->where($where)->where('store_id',$store_id)->orderByDesc('created_at')->skip($num)->take($page_size)->get(); return $this->success_list($list,'',$count); } //设置店铺商品库存 public function setStoreGoodsInventory(Request $request){ $data=$request->input('data'); $user_id=Auth::user()->id; $store_id=Store::where('user_id',$user_id)->value('id'); foreach($data as $key=>$val){ $sku=StoreGoodsSku::where('id',$val[0])->first(); if($sku){ InventoryW::updateOrCreate( [ 'store_id'=>$store_id, 'goods_id'=>$sku->goods_id, 'sku_id'=>$val[0], 'size'=>$sku->size, 'type'=>$sku->type ], [ 'num'=>$val[1] ] ); } } return $this->success([]); } }