value('value'); $end_time=Basic::where('keys','=','round_end_time')->value('value'); $start_time=Basic::where('keys','=','round_start_time')->value('value'); // if ($time<$end_time&&$time>$start_time+3600*24){ $uids=Enroll::where('season',$season) ->join('user','user.id','=','enroll.uid') ->where('user.level_name','批发商') ->where('enroll.status',0)->pluck('enroll.uid'); $this->rank_days($season,$uids,3); $uids=Enroll::where('season',$season) ->join('user','user.id','=','enroll.uid') ->where('user.level_name','经销商') ->where('enroll.status',0)->pluck('enroll.uid'); $this->rank_days($season,$uids,2); // } Log::error('制作排行榜结束'); } public function rank_days($season,$uids=[],$level){ $re=Challenge::whereIn('challenge_status',[1,2])->where('season',$season)->whereIn('challenge_id',$uids) ->select(DB::raw('if(challenge_total >=accept_total,challenge_total,accept_total) as total'),DB::raw('if(challenge_total >=accept_total,challenge_id,accept_id) as idx'),'challenge_total','accept_total','challenge_id','accept_id') ->with(['get_challenge_user:id,nickname,avatar,phone']) ->with(['get_accept_user:id,nickname,avatar,phone']) ->orderByDesc('total')->GroupBy('idx')->limit(10)->get()->toArray(); if ($level==3){ $url=RankTemplate::where('season',$season)->where('type',1)->where('level',3)->value('url'); // $img=\Intervention\Image\Facades\Image::make(public_path().'/uploads/img/crown_pk.jpg'); $img=Image::make($url); }else{ $url=RankTemplate::where('season',$season)->where('type',1)->where('level',2)->value('url'); $img=Image::make($url); // $img=\Intervention\Image\Facades\Image::make(public_path().'/uploads/img/ji_pk.jpg'); } if ($level==3){ foreach ($re as $k=>$v){ if ($v['challenge_total']>$v['accept_total']){ $dwuser=DwbsUser::where('mobile',$v['get_challenge_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatar($v['get_challenge_user']['avatar'],$k,$img,1,$v['challenge_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatar($v['get_challenge_user']['avatar'],$k,$img,1,$v['challenge_total'],$v['get_challenge_user']['nickname'],$dwuser->headimgurl); } $dwuser=DwbsUser::where('mobile',$v['get_accept_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatar($v['get_accept_user']['avatar'],$k,$img,2,$v['accept_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatar($v['get_accept_user']['avatar'],$k,$img,2,$v['accept_total'],$v['get_accept_user']['nickname'],$dwuser->headimgurl); } $baifenbi=$this->judge_pk($v['challenge_total'],$v['accept_total']); $img->insert($baifenbi,'',240,1600+250*$k); }else{ $dwuser=DwbsUser::where('mobile',$v['get_accept_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatar($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatar($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$v['get_accept_user']['nickname'],$dwuser->headimgurl); } $dwuser=DwbsUser::where('mobile',$v['get_challenge_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatar($v['get_challenge_user']['avatar'],$k,$img,2,$v['challenge_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatar($v['get_challenge_user']['avatar'],$k,$img,2,$v['challenge_total'],$v['get_challenge_user']['nickname'],$dwuser->headimgurl); } // $this->avatar($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$v['get_accept_user']['nickname']); // $this->avatar($v['get_challenge_user']['avatar'],$k,$img,2,$v['challenge_total'],$v['get_challenge_user']['nickname']); $baifenbi=$this->judge_pk($v['accept_total'],$v['challenge_total']); $img->insert($baifenbi,'',240,1600+250*$k); } } $img->text(date('Y年m月d日',time()-3600*24).'-'.date('m月d日',time()),220,2090*2,function ($font){ $font->file(public_path() . '/ziti/ht.otf'); $font->size(50); $font->color('F6F09C'); $font->angle(0); }); }else{ foreach ($re as $k=>$v){ if ($v['challenge_total']>$v['accept_total']){ // $this->avatars($v['get_challenge_user']['avatar'],$k,$img,1,$v['challenge_total'],$v['get_challenge_user']['nickname']); // $this->avatars($v['get_accept_user']['avatar'],$k,$img,2,$v['accept_total'],$v['get_accept_user']['nickname']); $dwuser=DwbsUser::where('mobile',$v['get_challenge_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatars($v['get_challenge_user']['avatar'],$k,$img,1,$v['challenge_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatars($v['get_challenge_user']['avatar'],$k,$img,1,$v['challenge_total'],$v['get_challenge_user']['nickname'],$dwuser->headimgurl); } $dwuser=DwbsUser::where('mobile',$v['get_accept_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatars($v['get_accept_user']['avatar'],$k,$img,2,$v['accept_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatars($v['get_accept_user']['avatar'],$k,$img,2,$v['accept_total'],$v['get_accept_user']['nickname'],$dwuser->headimgurl); } $baifenbi=$this->judge_pks($v['challenge_total'],$v['accept_total']); $img->insert($baifenbi,'',240,1600-640+260*$k); }else{ // $this->avatars($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$v['get_accept_user']['nickname']); // $this->avatars($v['get_challenge_user']['avatar'],$k,$img,2,$v['challenge_total'],$v['get_challenge_user']['nickname']); $dwuser=DwbsUser::where('mobile',$v['get_accept_user']['phone'])->select('remark_name','headimgurl')->first(); if($dwuser){ if ($dwuser->remark_name){ $this->avatars($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatars($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$v['get_accept_user']['nickname'],$dwuser->headimgurl); } }else{ $dwuser=User::where('phone',$v['get_accept_user']['phone'])->select('nickname','avatar')->first(); if ($dwuser->nickname){ $this->avatars($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatars($v['get_accept_user']['avatar'],$k,$img,1,$v['accept_total'],$v['get_accept_user']['nickname'],$dwuser->avatar); } } $dwuser=DwbsUser::where('mobile',$v['get_challenge_user']['phone'])->select('remark_name','headimgurl')->first(); if ($dwuser->remark_name){ $this->avatars($v['get_challenge_user']['avatar'],$k,$img,2,$v['challenge_total'],$dwuser->remark_name,$dwuser->headimgurl); }else{ $this->avatars($v['get_challenge_user']['avatar'],$k,$img,2,$v['challenge_total'],$v['get_challenge_user']['nickname'],$dwuser->headimgurl); } $baifenbi=$this->judge_pks($v['accept_total'],$v['challenge_total']); $img->insert($baifenbi,'',240,1600-640+260*$k); } } $img->text(date('Y年m月d日',time()-3600*24).'-'.date('m月d日',time()),220,3750,function ($font){ $font->file(public_path() . '/ziti/ht.otf'); $font->size(50); $font->color('F6F09C'); $font->angle(0); }); } $folder_name = "uploads/images/PkImg/" . date("Ym/d", time()); // 文件具体存储的物理路径,`public_path()` 获取的是 `public` 文件夹的物理路径。 // 值如:/home/vagrant/Code/larabbs/public/uploads/images/avatars/201709/21/ $upload_path = '/public/' . $folder_name; // 获取文件的后缀名,因图片从剪贴板里黏贴时后缀名为空,所以此处确保后缀一直存在 $extension = 'png'; // 拼接文件名,加前缀是为了增加辨析度,前缀可以是相关数据模型的 ID // 值如:1_1493521050_7BVc9v9ujP.png $filename = $level . '_' . time() . '_' . str_random(10) . '.' . $extension; if (!file_exists(public_path($upload_path))) { mkdir(public_path($upload_path), 0777, true); } // File::isDirectory(public_path().$upload_path) or File::makeDirectory(public_path().$upload_path,077,true,true); // 将图片移动到我们的目标存储路径中 $img->save(public_path().$upload_path.'/'.$filename); $rank_path=env('APP_URL').$upload_path.'/'.$filename; $rank_days=new RankDays(); $rank_days->season=$season; $rank_days->level=$level; $rank_days->img_url=$rank_path; $rank_days->type=1; $rank_days->time=Carbon::today()->toDateString(); $rank_days->save(); } public function bg_resize($img2) { $img2 = $img2->resize(153, 153); $r = $img2->width() / 2; $img3 = Image::canvas(153, 153); for ($x = 0; $x < $img2->width(); $x++) { for ($y = 0; $y < $img2->height(); $y++) { if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) { $c = $img2->pickColor($x, $y, 'array'); $img3->pixel($c, $x, $y); } } } return $img3; } public function judge_pks($total1,$total2){ if ($total2==0){ $name='pk_100'; }else{ $nums=round($total1/($total2+$total1)*100,2); if ($nums>95){ $name='pk_100'; }elseif ($nums>85&&$nums<=95){ $name='pk_90'; }elseif ($nums>75&&$nums<=85){ $name='pk_80'; }elseif ($nums>65&&$nums<=75){ $name='pk_70'; }elseif ($nums>55&&$nums<=65){ $name='pk_60'; }else{ $name='pk_50'; } } $baifenbi=Image::make(public_path()."/uploads/img/".$name.".png")->resize(615); return $baifenbi; } public function avatar($url,$k,$img,$n,$total_1=0,$nickname,$imgs){ $len=mb_strlen($nickname); if ($len>4){ $nickname=mb_substr($nickname,0,4); } try { $avatars = Image::make($url); } catch (\Exception $exception) { try{ $avatars = Image::make($imgs); }catch (\Exception $exception){ $avatars = Image::make(public_path() . '/logo3.png'); } } $yuan=Image::make(public_path().'/uploads/img/yuan.png')->resize(169,169); $avatar=$this->bg_resize($avatars); if ($n==1){ $img->insert($avatar,'',128,1500+(250)*$k); $img->insert($yuan,'',120,1500-8+(250)*$k); $img->text($total_1.'分', 310, 1600-10+250*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(30); $font->color('F6F09C'); $font->angle(0); }); $img->text($nickname, 132, 1710+250*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(47); $font->color('F6F09C'); $font->angle(0); }); }else{ $img->insert($avatar,'',799+8,1500+250*$k); $img->insert($yuan,'',799,1500-8+250*$k); $img->text($total_1.'分', 680, 1600-10+250*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(30); $font->color('F6F09C'); $font->angle(0); }); $img->text($nickname, 812, 1710+250*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(47); $font->color('F6F09C'); $font->angle(0); }); } return $img; } public function judge_pk($total1,$total2){ if ($total2==0){ $name='pk_100'; }else{ $nums=round($total1/($total2+$total1)*100,2); if ($nums>95){ $name='pk_100'; }elseif ($nums>85&&$nums<=95){ $name='pk_90'; }elseif ($nums>75&&$nums<=85){ $name='pk_80'; }elseif ($nums>65&&$nums<=75){ $name='pk_70'; }elseif ($nums>55&&$nums<=65){ $name='pk_60'; }else{ $name='pk_50'; } } $baifenbi=Image::make(public_path()."/uploads/img/".$name.".png")->resize(615); return $baifenbi; } public function avatars($url,$k,$img,$n,$total_1=0,$nickname,$imgs){ $len=mb_strlen($nickname); if ($len>4){ $nickname=mb_substr($nickname,0,4); } try { $avatars = Image::make($url); } catch (\Exception $exception) { try{ $avatars = Image::make($imgs); }catch (\Exception $exception){ $avatars = Image::make(public_path() . '/logo3.png'); } } $yuan=Image::make(public_path().'/uploads/img/yuan.png')->resize(169,169); $avatar=$this->bg_resize($avatars); if ($n==1){ $img->insert($avatar,'',128,860+(260)*$k); $img->insert($yuan,'',120,860-8+(260)*$k); $img->text($total_1.'分', 310, 1600-640-10+260*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(30); $font->color('FF4104'); $font->angle(0); }); $img->text($nickname, 132, 1710-640+260*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(47); $font->color('FF4104'); $font->angle(0); }); }else{ $len=mb_strlen($nickname); if ($len==4){ $x=812-40; }elseif ($len==1){ $x=812+40; }else{ if ($len==2){ $nickname=mb_substr($nickname,0,1).' '.mb_substr($nickname,1,2); } $x=812; } $img->insert($avatar,'',799+8,1500-640+260*$k); $img->insert($yuan,'',799,1500-640-8+260*$k); $img->text($total_1.'分', 680, 1600-640-10+260*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(30); $font->color('FF4104'); $font->angle(0); }); $img->text($nickname, $x, 1710-640+260*$k, function ($font) { $font->file(public_path() . '/ziti/ht.otf'); $font->size(47); $font->color('FF4104'); $font->angle(0); }); } return $img; } }