all(), [ 'year' => 'required|integer|min:2019|max:2099', 'month' => 'integer|min:1|max:12' ]); if ($validate->fails()) { return showJsonErr($validate->errors()->first()); } $res = []; if (empty($param['month'])) { for ($i = 1; $i < 12; $i++) { $stat = Stat::where('date', $param['year'] . $i)->whereType(2)->with(['User' => function ($query) { $query->select(['id', 'nick_name', 'mobile']); }]); // 城市代理管理员只能查看该地区代理的用户 if (\Auth::user()->is_super == 3) { $stat = $stat->whereIn('uid', getIds()); } $stat = $stat->first(); if ($stat) { $res[] = $stat; } } } else { $startmonth=$param['year'].'-'.$param['month'].'-01'; $endmonth=date('Y-m-d H:i:s', strtotime(date('Y-m-01', strtotime($startmonth)) . ' +1 month')); $stat = Stat::whereBetween('date',[$startmonth , $endmonth])->whereType(2)->with(['User' => function ($query) { $query->select(['id', 'nick_name', 'mobile']); }]); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3) { $stat = $stat->whereIn('uid', getIds()); } $res = $stat->get(); } return showJsonSucc(1001, $res); } /* * 月任务量完成情况统计 wsl 20190702 *仅展示已完成目标的代理 * */ public function goalInMonth(Request $request){ $validate = \Validator::make($param = $request->all(), [ 'year' => 'required|integer|min:2019|max:2099', 'month' => 'integer|min:1|max:12' ]); if ($validate->fails()) { return showJsonErr($validate->errors()->first()); } // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3) { $users = User::whereIn('id', getIds())->select('level','province','city','district','id','mobile','nick_name')->get(); }else{ $user=User::select('level','province','city','district','id','mobile','nick_name'); //管理员查看对应的代理 $district=AdminArea::getAdminArea(); if(!empty($district)){ if(!empty($district['city'])){ $user->whereCity($district['city']); }else{ $user->whereDistrict($district['district']); } } $users=$user->get(); } $res=[]; //计算任务量 $total=0;//总完成任务量 $kk=0; foreach($users as $key=>$item){ $childarr=User::where('invitor','=',$item->id)->get(['id']); $childarr=$childarr->toArray(); $arr=[]; if(!empty($childarr)){ foreach ($childarr as $ke=>$ve){ $arr[]=$ve['id']; } } $montstat=$this->getMonthOrYearStat($item->id,$arr,$param['year'],$param['month']);//已完成的月任务量 if(($item->level+1)<=7){ $setting=Proxy::getSettingByAreaAndLevel($item->level+1,$item->province,$item->city,$item->district); //目标任务量 if(!empty($setting)&&$montstat>=$setting['upgrade_business_month'] && $setting['upgrade_business_month']!='0.000'){ $res[$kk]['id']=$kk+1; $res[$kk]['province']=$item->province; $res[$kk]['city']=$item->city; $res[$kk]['district']=$item->district; $res[$kk]['current']=round($montstat,3); $res[$kk]['goal']=$setting['upgrade_business_month']; $res[$kk]['date']=$param['year'].$param['month']; $res[$kk]['user']=['id'=>$item->id,'nick_name'=>$item->nick_name,'mobile'=>$item->mobile]; $kk++; } } $total+=$montstat; } if(!empty($res)){ foreach($res as $k=>$v){ //$res[$k]['percent']=round($v['current']/$total,2)*100; $res[$k]['percent']=sprintf("%.4f",$v['current']/$total)*100; } } return showJsonSucc(1001, $res); } /* * 计算当月或者当年的业绩 * addby wsl 20190626 * * */ public static function getMonthOrYearStat($uid,$childarr,$year=0,$month=0){ if(!empty($month)){ //yue $startime=$year.'-'.$month.'-01'; $endmonth=date('Y-m-d H:i:s', strtotime(date('Y-m-01', strtotime($startime)) . ' +1 month')); }else{ //nian $startime=$year.'-'.'01-01 00:00:00'; $endmonth=($year+1).'-'.'01-01 00:00:00'; } if(!empty($childarr)){ $sumprice=Order::where(function ($query) use ($childarr,$uid){ $query->where('uid','=',$uid) ->orWhere(function ($query) use ($childarr){ $query->whereIn('uid',$childarr) ->where('type','=',2); }); })->where('is_pay','=',1) ->whereBetween('created_at',[$startime,$endmonth]) ->sum('price'); }else{ $sumprice=Order::where('uid','=',$uid) ->where('is_pay','=',1) ->whereBetween('created_at',[$startime,$endmonth]) ->sum('price'); } return $sumprice; } /** * 年任务量完成情况统计 数据错误此处不用了 * @author lyh * @date 2019/4/8 * @modify_author lyh * @modify_time 2019-4-26 11:26:31 * @modify 确认已区分系统管理员与地区管理员权限 * @description */ public function goalInYearlyh(Request $request) { $validate = \Validator::make($param = $request->all(), [ 'year' => 'required|integer|min:2019|max:2099', ]); if ($validate->fails()) { return showJsonErr($validate->errors()->first()); } $stat = Stat::where('date', $param['year'])->whereType(1)->with(['User' => function ($query) { $query->select(['id', 'nick_name', 'mobile']); }]); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3) { $stat = $stat->whereIn('uid', getIds()); } $res = $stat->get(); return showJsonSucc(1001, $res); } public function goalInYear(Request $request){ $validate = \Validator::make($param = $request->all(), [ 'year' => 'required|integer|min:2019|max:2099', //'month' => 'integer|min:1|max:12' ]); if ($validate->fails()) { return showJsonErr($validate->errors()->first()); } // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3) { $users = User::whereIn('id', getIds())->select('level','province','city','district','id','mobile','nick_name')->get(); }else { $user=User::select('level','province','city','district','id','mobile','nick_name'); //管理员查看对应的代理 $district=AdminArea::getAdminArea(); if(!empty($district)){ if(!empty($district['city'])){ $user->whereCity($district['city']); }else{ $user->whereDistrict($district['district']); } } $users=$user->get()->toArray(); } $res=[]; //计算任务量 $total=0;//总完成任务量 $kk=0; foreach($users as $key=>$item){ $childarr=User::where('invitor','=',$item->id)->get(['id']); $childarr=$childarr->toArray(); $arr=[]; if(!empty($childarr)){ foreach ($childarr as $ke=>$ve){ $arr[]=$ve['id']; } } $montstat=$this->getMonthOrYearStat($item['id'],$arr,$param['year']);//已完成的年任务量 if(($item['level']+1)<=7) { $setting = Proxy::getSettingByAreaAndLevel($item['level'] + 1, $item['province'], $item['city'], $item['district']); //目标任务量 if (!empty($setting) && $montstat >= $setting['upgrade_business_month'] && $setting['upgrade_business_month'] != '0.000') { $res[$kk]['id'] = $kk + 1; $res[$kk]['province'] = $item['province']; $res[$kk]['city'] = $item['city']; $res[$kk]['district'] = $item['district']; $res[$kk]['current'] = round($montstat, 3); $res[$kk]['goal'] = $setting['upgrade_business_month']; $res[$kk]['date'] = $param['year']; $res[$kk]['user'] = ['id' => $item['id'], 'nick_name' => $item['nick_name'], 'mobile' => $item['mobile']]; $kk++; } } $total+=$montstat; } if(!empty($res)){ foreach($res as $k=>$v){ //round($v['current']/$total,3)*100; $res[$k]['percent']=sprintf("%.4f",$v['current']/$total)*100; $res[$k]['total']=$total; } } return showJsonSucc(1001, $res); } }