TeamController.php 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921
  1. <?php
  2. namespace App\Http\Controllers;
  3. /*
  4. * 人员管理
  5. * */
  6. use App\Models\AgentOperationLog;
  7. use App\Models\ApplyUser;
  8. use App\Models\IncomExpenses;
  9. use App\Models\Store;
  10. use App\Models\User;
  11. use App\Models\UserCert;
  12. use Carbon\Carbon;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\Auth;
  15. use Illuminate\Support\Facades\Cache;
  16. use Illuminate\Support\Facades\Log;
  17. class TeamController extends Controller{
  18. /*
  19. * 今日新增人数,本月新增
  20. * */
  21. public function new_per(){
  22. $user=Auth::user();
  23. Log::error('{---------}'.$user->nickname);
  24. $today=Carbon::today()->toDateTimeString();
  25. $month=Carbon::now()->firstOfMonth()->toDateTimeString();
  26. $user_all=User::whereIn('cert_status',[3,6])->where('created_at','>',$today)->get();
  27. $num=0;
  28. foreach ($user_all as $k=>$v){
  29. if ($v->agent_id==null){
  30. }else{
  31. if ($v->agent_id==$user->id){
  32. $num=$num+1;
  33. }else{
  34. $arr=User::where('id',$v->agent_id)->first();
  35. if ($arr->agent_id==$user->id){
  36. $num=$num+1;
  37. }
  38. }
  39. }
  40. }
  41. $user_all=User::whereIn('cert_status',[3,6])->where('created_at','>',$month)->get();
  42. $num_all=0;
  43. foreach ($user_all as $k=>$v){
  44. if ($v->agent_id==null){
  45. }else{
  46. if ($v->agent_id==$user->id){
  47. $num_all=$num_all+1;
  48. }else{
  49. $arr=User::where('id',$v->agent_id)->first();
  50. if ($arr->agent_id==$user->id){
  51. $num_all=$num_all+1;
  52. }
  53. }
  54. }
  55. }
  56. $data=['num'=>$num,'all_num'=>$num_all];
  57. // Log::error('{-0-----新增代理-------}'.json_encode($data));
  58. return $this->success($data);
  59. }
  60. /*
  61. * 直属代理
  62. * */
  63. public function level_count(Request $request){
  64. $user=Auth::user();
  65. // $page=($request->page)-1;
  66. $data=[];
  67. if ($request->has('page')){
  68. $page=($request->page)-1;
  69. }else{
  70. $page=0;
  71. }
  72. if ($request->type==0){
  73. $user_all=User::where('agent_id',$user->id)->where('status',0)->whereIn('cert_status',[3,6])->where('deleted_at','=',null)->orderBy('id')->get();
  74. $arr_per=[];
  75. foreach ($user_all as $k=>$v){
  76. $arr_per[$k]['id']=$v->id;
  77. $arr_per[$k]['avatar']=$v->headimgurl;
  78. $arr_per[$k]['nickname']=$v->nickname;
  79. $arr_per[$k]['level_name']=judge_level($v->level);
  80. }
  81. $num=count($arr_per);
  82. $num1=$num-$page*15;
  83. if ($num1>=15){
  84. $j=15;
  85. }else{
  86. $j=$num1;
  87. }
  88. for ($i=0;$i<$j;$i++){
  89. $data[$i]['id']=$arr_per[$page*15+$i]['id'];
  90. $data[$i]['avatar']=$arr_per[$page*15+$i]['avatar'];
  91. $data[$i]['nickname']=$arr_per[$page*15+$i]['nickname'];
  92. $data[$i]['level_name']=$arr_per[$page*15+$i]['level_name'];
  93. }
  94. // return $this->success($data);
  95. }else{
  96. $user_all=User::where('agent_id',$user->id)->where('status',0)->where('deleted_at','=',null)->orderBy('id')->whereIn('cert_status',[3,6])->get();
  97. // $user_all_1=User::where('agent_id',$user->id)->where('recom_id',$user->id)->where('status',0)->whereIn('cert_status',[3,6])->where('deleted_at','=',null)->orderBy('id')->get();
  98. $user_data=[];
  99. $arr_per=[];
  100. $all=[];
  101. $all_1=[];
  102. // foreach ($user_all as $k=>$v){
  103. // $arr=[];
  104. // $arr_per[$k]['id']=$v->id;
  105. // $arr_per[$k]['avatar']=$v->headimgurl;
  106. // $arr_per[$k]['nickname']=$v->nickname;
  107. // $arr_per[$k]['level_name']=judge_level($v->level);
  108. // $user_per=User::where('agent_id',$v->id)->where('status',0)->where('deleted_at','=',null)->orderBy('id')->whereIn('cert_status',[3,6])->get();
  109. // if ($user){
  110. // foreach ($user_per as $key=>$value){
  111. // $arr[$key]['id']=$value->id;
  112. // $arr[$key]['avatar']=$value->headimgurl;
  113. // $arr[$key]['nickname']=$value->nickname;
  114. // $arr[$key]['level_name']=judge_level($value->level);
  115. // }
  116. // $all=array_merge($all,$arr);
  117. // }
  118. // }
  119. // $user_data=array_merge($all,$arr_per);
  120. foreach ($user_all as $k=>$v){
  121. $arr_per=[];
  122. $user_per=User::where('agent_id',$v->id)->where('status',0)->where('deleted_at','=',null)->orderBy('id')->whereIn('cert_status',[3,6])->get();
  123. if ($user){
  124. foreach ($user_per as $key=>$value){
  125. $arr_per[$key]['id']=$value->id;
  126. $arr_per[$key]['avatar']=$value->headimgurl;
  127. $arr_per[$key]['nickname']=$value->nickname;
  128. $arr_per[$key]['level_name']=judge_level($value->level);
  129. }
  130. $all_1=array_merge($all_1,$arr_per);
  131. }
  132. }
  133. $user_data=array_merge($user_data,$all_1);
  134. $num=count($user_data);
  135. $num1=$num-$page*15;
  136. if ($num1>=15){
  137. $j=15;
  138. }else{
  139. $j=$num1;
  140. }
  141. for ($i=0;$i<$j;$i++){
  142. $data[$i]['id']=$user_data[$page*15+$i]['id'];
  143. $data[$i]['avatar']=$user_data[$page*15+$i]['avatar'];
  144. $data[$i]['nickname']=$user_data[$page*15+$i]['nickname'];
  145. $data[$i]['level_name']=$user_data[$page*15+$i]['level_name'];
  146. }
  147. // return $this->success($data);
  148. }
  149. $arr=$this->num_test();
  150. // $re= $arr->original;
  151. $res=[
  152. 'today_new'=>count($arr[0]),
  153. 'month_new'=>count($arr[1]),
  154. 'size'=>15,
  155. 'total'=>$num,
  156. 'list'=>$data
  157. ];
  158. // Log::error('{-------代理数量-----}'.json_encode($res));
  159. return $this->success($res);
  160. // return $this->success_list($data,'',$total['total']);
  161. }
  162. /*名片信息*/
  163. public function card_data(Request $request){
  164. $user=User::find($request->id);
  165. if ($user->recom_id==null){
  166. $users["recom_nickname"]= '';
  167. }else{
  168. $users["recom_nickname"]= $user->recom_user->nickname;
  169. }
  170. $users["id"]=$user->id;
  171. $users["nickname"]=$user->nickname;
  172. $users["real_name"]= $user->realname;
  173. $users["avatar"]= $user->headimgurl;
  174. $users["level"]= judge_level($user->level);
  175. $users["mobile"]= $user->mobile;
  176. $users["up_nickname"]= $user->agent_user->nickname;
  177. $users["team_num"]= User::where('agent_id',$user->id)->count();
  178. if ($user->cert_status==3||$user->cert_status==6){
  179. if ($user->auth_startime &&$user->auth_code){
  180. $users['status']=0;
  181. }else{
  182. $users['status']=1;
  183. }
  184. }else{
  185. $users['status']=1;
  186. }
  187. return $this->success($users);
  188. }
  189. /*---团队业绩---*/
  190. public function money(Request $request){
  191. $user=Auth::user();
  192. if ($request->type==0){
  193. $user_all=User::where('agent_id',$user->id)->orderByDesc('created_at')->where('deleted_at','=',null)->paginate(15);
  194. }elseif ($request->type==1){
  195. $user_all=User::where('agent_id',$user->id)->orderByDesc('created_at')->where('deleted_at','=',null)->where('level',2)->paginate(15);
  196. }else{
  197. $user_all=User::where('agent_id',$user->id)->orderByDesc('created_at')->where('deleted_at','=',null)->where('level',1)->paginate(15);
  198. }
  199. if ($request->time==0){
  200. $time=Carbon::now()->toDateTimeString();
  201. }elseif ($request->time==1){
  202. $time=Carbon::now()->startOfDay()->toDateTimeString();
  203. }else{
  204. $time=Carbon::now()->startOfMonth()->toDateTimeString();
  205. }
  206. $total=$user_all->toArray();
  207. $data=[];
  208. $money=0;
  209. foreach ($user_all as $k=>$v){
  210. $data[$k]['money']=IncomExpenses::where('user_id',$v->id)
  211. ->where('created_at','>=',$time)->sum('totalprice');
  212. $money=$money+$data[$k]['money'];
  213. $data[$k]['avatar']=$v->headimgurl;
  214. $data[$k]['level']=judge_level($v->level);
  215. $data[$k]['nickname']=$v->nickname;
  216. }
  217. return $this->success_list($data,'',$total['total'],$money,'money');
  218. }
  219. /*我的邀请*/
  220. public function invite(Request $request){
  221. $id=Auth::user()->id;
  222. if ($request->type==0){
  223. $type='=';
  224. $user_all=User::where('recom_id',$id)->whereIn('cert_status',[3,6])->where('deleted_at','=',null)->where('status',0)->paginate(15);
  225. }elseif ($request->type==1){
  226. $type='<>';
  227. $user_all=User::where('recom_id',$id)->whereIn('cert_status',[1,2,4,5])->where('deleted_at','=',null)->where('status',0)->paginate(15);
  228. }
  229. $active=User::where('recom_id',$id)->whereIn('cert_status',[3,6])->where('deleted_at','=',null)->where('status',0)->count();
  230. $no_active=User::where('recom_id',$id)->whereIn('cert_status',[1,2,4,5])->where('deleted_at','=',null)->where('status',0)->count();
  231. $total=$user_all->toArray();
  232. $data=[];
  233. foreach ($user_all as $k=>$v){
  234. $data[$k]['id']=$v->id;
  235. $data[$k]['avatar']=$v->headimgurl;
  236. $data[$k]['level']=judge_level($v->level);
  237. $data[$k]['nickname']=$v->nickname;
  238. $data[$k]['realname']=$v->realname;
  239. $data[$k]['mobile']=$v->mobile;
  240. $data[$k]['recom_name']=$v->recom_user?$v->recom_user->nickname:null;
  241. $data[$k]['agent_name']=$v->agent_user?$v->agent_user->nickname:null;
  242. $data[$k]['team_num']=User::where('agent_id',$v->id)->count();
  243. $data[$k]['created_at']=Carbon::parse($v->created_at)->toDateTimeString();
  244. }
  245. $count=User::where('agent_id',$id)->where('status',0)->whereIn('cert_status',[3,6])->count();
  246. // $arr=$this->new_per();
  247. // $re= $arr->original;
  248. $res=[
  249. // 'today_new'=>$re['data']['num'],
  250. // 'month_new'=>$re['data']['all_num'],
  251. 'active'=>$active,
  252. 'no_active'=>$no_active,
  253. 'size'=>15,
  254. 'total'=>$user_all->total(),
  255. 'list'=>$data
  256. ];
  257. return $this->success($res);
  258. }
  259. public function add_list(Request $request){
  260. if ($request->has('page')){
  261. $page=($request->page)-1;
  262. }else{
  263. $page=0;
  264. }
  265. $re=$this->num_test();
  266. if ($request->type==0){
  267. $num=count($re[0]);
  268. $arr_per=$re[0];
  269. $num1=$num-$page*15;
  270. if ($num1>=15){
  271. $j=15;
  272. }else{
  273. $j=$num1;
  274. }
  275. $data=[];
  276. for ($i=0;$i<$j;$i++){
  277. $data[$i]['id']=$arr_per[$page*15+$i]['id'];
  278. $data[$i]['avatar']=$arr_per[$page*15+$i]['avatar'];
  279. $data[$i]['nickname']=$arr_per[$page*15+$i]['nickname'];
  280. $data[$i]['level_name']=$arr_per[$page*15+$i]['level_name'];
  281. }
  282. return $this->success_list($data);
  283. }else{
  284. $num=count($re[1]);
  285. $arr_per=$re[1];
  286. $num1=$num-$page*15;
  287. if ($num1>=15){
  288. $j=15;
  289. }else{
  290. $j=$num1;
  291. }
  292. $data=[];
  293. for ($i=0;$i<$j;$i++){
  294. $data[$i]['id']=$arr_per[$page*15+$i]['id'];
  295. $data[$i]['avatar']=$arr_per[$page*15+$i]['avatar'];
  296. $data[$i]['nickname']=$arr_per[$page*15+$i]['nickname'];
  297. $data[$i]['level_name']=$arr_per[$page*15+$i]['level_name'];
  298. }
  299. return $this->success_list($data);
  300. }
  301. }
  302. public function num_test(){
  303. $id=Auth::user()->id;
  304. // $id=DB::table('users')->where('mobile',13009681680)->value('id');
  305. $user=User::with(['recom_user:id,nickname,mobile','agent_user:id,nickname,mobile'
  306. // ,'childAgent'=>function($query){$query->select('id','agent_id','nickname','level','mobile');}
  307. ])->find($id);
  308. //,'childAgent'=>function($query){$query->select('id','agent_id','nickname','level','mobile');}
  309. if($user){
  310. if($user->level=='3'){
  311. $childAgent=User::where('agent_id',$user->id)->select('id', 'nickname','level','mobile','created_at','headimgurl as avatar')->orderBy('id')->get()->toArray();
  312. $childAgentIds=array_column($childAgent,'id');
  313. if($childAgentIds){
  314. $childChildAgent=User::whereIn('agent_id',$childAgentIds)->select('id', 'nickname','level','mobile','created_at','headimgurl as avatar')->orderBy('id')->get()->toArray();
  315. $agent=array_merge($childAgent,$childChildAgent);
  316. }else{
  317. $agent=$childAgent;
  318. }
  319. $re=[];
  320. $res=[];
  321. $i=0;
  322. $j=0;
  323. foreach ($agent as $k=>$v){
  324. if (strtotime($v['created_at'])>mktime(0,0,0,date('m'),1,date('Y'))){
  325. // $re[$i]=$v;
  326. $re[$i]['nickname']=$v['nickname'];
  327. $re[$i]['id']=$v['id'];
  328. $re[$i]['avatar']=$v['avatar'];
  329. $re[$i]['level_name']=judge_level($v['level']);
  330. // $re[$i]['up']=User::where('id',$v['recom_id'])->value('nickname');
  331. $i++;
  332. }
  333. if (strtotime($v['created_at'])>Carbon::today()->timestamp){
  334. // $res[$j]=$v;
  335. $res[$j]['nickname']=$v['nickname'];
  336. $res[$j]['id']=$v['id'];
  337. $res[$j]['avatar']=$v['avatar'];
  338. $res[$j]['level_name']=judge_level($v['level']);
  339. // $re[$j]['up']=User::where('id',$v['recom_id'])->value('nickname');
  340. $j++;
  341. }
  342. }
  343. }elseif($user->level=='2'){
  344. $user->child_agent=User::where('agent_id',$user->id)->select('id', 'nickname','level','mobile','created_at','headimgurl as avatar')->orderBy('id')->get()->toArray();
  345. $agent=$user->child_agent;
  346. $re=[];
  347. $res=[];
  348. $i=0;
  349. $j=0;
  350. foreach ($agent as $k=>$v){
  351. if (strtotime($v['created_at'])>mktime(0,0,0,date('m'),1,date('Y'))){
  352. // $re[$i]=$v;
  353. $re[$i]['nickname']=$v['nickname'];
  354. $re[$i]['id']=$v['id'];
  355. $re[$i]['avatar']=$v['avatar'];
  356. $re[$i]['level_name']=judge_level($v['level']);
  357. // $re[$i]['up']=User::where('id',$v['recom_id'])->value('nickname');
  358. $i++;
  359. }
  360. if (strtotime($v['created_at'])>Carbon::today()->timestamp){
  361. // $res[$j]=$v;
  362. $res[$j]['nickname']=$v['nickname'];
  363. $res[$j]['id']=$v['id'];
  364. $res[$j]['avatar']=$v['avatar'];
  365. $res[$j]['level_name']=judge_level($v['level']);
  366. // $re[$j]['up']=User::where('id',$v['recom_id'])->value('nickname');
  367. $j++;
  368. }
  369. }
  370. }else{
  371. $re=[];
  372. $res=[];
  373. }
  374. // Cache::put('team_list'.$id,[$re,$res]);
  375. // return [count($re),count($res)];
  376. // return $this->success_list($re);
  377. return [$res,$re];
  378. }else{
  379. return [];
  380. }
  381. }
  382. /**邀请码**/
  383. public function invite_code(){
  384. $user=Auth::user();
  385. $invite_num=UserCert::where('recom_id',$user->id)->count();
  386. $team_num=User::where('agent_id',$user->id)->count();
  387. return $this->success([
  388. 'invite_code'=>$user->recom_code,
  389. 'incite_num'=>(int)$invite_num,
  390. 'team_num'=>$team_num
  391. ]);
  392. }
  393. // public function GetUserTeamList(Request $request){
  394. // $user=Auth::user();
  395. // $arr=['crown'=>0,'manager'=>0,'lowest'=>0];
  396. //// if ($user->level==1){
  397. //// $data=[
  398. //// 'totay_num'=>0,
  399. //// 'month_num'=>0,
  400. //// 'group'=>$arr
  401. //// ];
  402. //// return $this->success($data);
  403. //// }
  404. // $id=$user->id;
  405. //// if ($id==39516){
  406. //// $user=User::where('mobile',18753967396)->first();
  407. //// $id=$user->id;
  408. //// }
  409. // $s=false;
  410. // if ($user->level==1){
  411. // $s=true;
  412. // }
  413. // $type=$request->type;
  414. //// $id=7;
  415. // if ($type==0){
  416. // $data=User::where('status',0)
  417. // ->where('service_status',0)
  418. // ->whereNull('deleted_at')
  419. // ->where('recom_id',$id)
  420. // ->when($s,function ($q){
  421. // return $q->where('level','<>',3);
  422. // })
  423. // ->select('users.level',\DB::raw('count(*) as total'))->groupBy('level')->get();
  424. // }else{
  425. // $arrs=User::where('agent_id',$id)->where('status',0)
  426. // ->where('service_status',0)
  427. // ->whereNull('deleted_at')
  428. // ->pluck('id')->toArray();
  429. // array_push($arrs,$id);
  430. // $data=User::where('status',0)
  431. // ->where('service_status',0)
  432. // ->whereNull('deleted_at')
  433. // ->whereIn('agent_id',$arrs)
  434. // ->select('users.level',\DB::raw('count(*) as total'))->groupBy('level')->get();
  435. // }
  436. //
  437. // foreach ($data as $k=>$v){
  438. // if ($v->level==1){
  439. // $arr['lowest']=$v->total;
  440. // }
  441. // if ($v->level==2){
  442. // $arr['manager']=$v->total;
  443. // }
  444. // if ($v->level==3){
  445. // $arr['crown']=$v->total;
  446. // }
  447. // }
  448. // $totay_num=$this->GetNewUserTotal($id,Carbon::today());
  449. // $month_num=$this->GetNewUserTotal($id,Carbon::now()->startOfMonth());
  450. // $counts=$this->getStore($id);
  451. // $applyCount=ApplyUser::where('user_id',$id)->count();
  452. // $data=[
  453. // 'totay_num'=>$totay_num,
  454. // 'month_num'=>$month_num,
  455. // 'store_no_num'=>$counts,
  456. // 'year_num'=>$this->GetNewUserTotal($id,Carbon::now()->startOfYear()),
  457. // 'group'=>$arr,
  458. // 'applyCount'=>$applyCount,
  459. //
  460. // ];
  461. // return $this->success($data);
  462. // }
  463. public function GetUserTeamListNum(Request $request){
  464. $user=Auth::user();
  465. $id=$user->id;
  466. $totay_num=$this->GetNewUserTotal($id,Carbon::today());
  467. $month_num=$this->GetNewUserTotal($id,Carbon::now()->startOfMonth());
  468. $counts=$this->getStore($id);
  469. $applyCount=ApplyUser::where('user_id',$id)->count();
  470. $levelUp=0;
  471. if ($user->level==3){
  472. $id_arr=User::where('agent_id',$user->id)->where('level',2)->pluck('id');
  473. $levelUp=\DB::table('agent_operation_log')->whereIn('user_id',$id_arr)->where('type',2)
  474. ->where('created_at','>',Carbon::now()->startOfYear()->toDateTimeString())->count();
  475. }
  476. $data=[
  477. 'totay_num'=>$totay_num,
  478. 'month_num'=>$month_num,
  479. 'store_no_num'=>$counts,
  480. 'year_num'=>$this->GetNewUserTotal($id,Carbon::now()->startOfYear()),
  481. 'level_up'=>$levelUp,
  482. 'applyCount'=>$applyCount,
  483. ];
  484. return $this->success($data);
  485. }
  486. public function GetUserTeamList(Request $request){
  487. $user=Auth::user();
  488. $arr0=['crown'=>0,'manager'=>0,'lowest'=>0];
  489. $arr1=['crown'=>0,'manager'=>0,'lowest'=>0];
  490. $id=$user->id;
  491. $s=false;
  492. if ($user->level==1){
  493. $s=true;
  494. }
  495. if($request->has('type')){
  496. $type=$request->type;
  497. }else{
  498. $type=0;
  499. }
  500. $ll=[];
  501. $data0=User::where('status',0)
  502. ->where('service_status',0)
  503. ->whereNull('deleted_at')
  504. ->where('recom_id',$id)
  505. ->when($s,function ($q){
  506. return $q->where('level','<>',3);
  507. })
  508. ->select('users.level',\DB::raw('count(*) as total'))->groupBy('level')->get();
  509. $arrs=User::where('agent_id',$id)->where('status',0)
  510. ->where('service_status',0)
  511. ->whereNull('deleted_at')
  512. ->pluck('id')->toArray();
  513. array_push($arrs,$id);
  514. $data1=User::where('status',0)
  515. ->where('service_status',0)
  516. ->whereNull('deleted_at')
  517. ->whereIn('agent_id',$arrs)
  518. ->select('users.level',\DB::raw('count(*) as total'))->groupBy('level')->get();
  519. foreach ($data0 as $k=>$v){
  520. if ($v->level==1){
  521. $arr0['lowest']=$v->total;
  522. }
  523. if ($v->level==2){
  524. $arr0['manager']=$v->total;
  525. }
  526. if ($v->level==3){
  527. $arr0['crown']=$v->total;
  528. }
  529. }
  530. foreach ($data1 as $k=>$v){
  531. if ($v->level==1){
  532. $arr1['lowest']=$v->total;
  533. }
  534. if ($v->level==2){
  535. $arr1['manager']=$v->total;
  536. }
  537. if ($v->level==3){
  538. $arr1['crown']=$v->total;
  539. }
  540. }
  541. $ll['directly']=$arr0;
  542. $ll['lower']=$arr1;
  543. $totay_num=$this->GetNewUserTotal($id,Carbon::today());
  544. $month_num=$this->GetNewUserTotal($id,Carbon::now()->startOfMonth());
  545. $counts=$this->getStore($id);
  546. $applyCount=ApplyUser::where('user_id',$id)->count();
  547. $data=[
  548. 'totay_num'=>$totay_num,
  549. 'month_num'=>$month_num,
  550. 'store_no_num'=>$counts,
  551. 'year_num'=>$this->GetNewUserTotal($id,Carbon::now()->startOfYear()),
  552. 'group'=>$type==1?$arr1:$arr0,
  553. 'applyCount'=>$applyCount,
  554. 'll'=>$ll
  555. ];
  556. return $this->success($data);
  557. }
  558. public function GetLevelUp(){
  559. $user=Auth::user();
  560. $id_arr=User::where('agent_id',$user->id)->where('level',2)->pluck('id');
  561. $query=\DB::table('agent_operation_log')->whereIn('user_id',$id_arr)->where('type',2);
  562. $query1=clone $query;
  563. $query2=clone $query;
  564. $yesterday=$query->where('created_at','>',Carbon::yesterday()->toDateTimeString())->count();
  565. $month=$query1->where('created_at','>',Carbon::now()->startOfMonth()->toDateTimeString())->count();
  566. $year=$query2->where('created_at','>',Carbon::now()->startOfYear()->toDateTimeString())->count();
  567. return $this->success(['yesterday'=>$yesterday,'month'=>$month,'year'=>$year]);
  568. }
  569. public function GetLevelUpList(Request $request){
  570. $page_index=$request->input('page_index');
  571. $page_size=$request->input('page_size');
  572. $num=($page_index-1)*$page_size;
  573. $search_name=$request->input('search_name')??'';
  574. $type=$request->input('type');
  575. $start_time=$request->input('time_start')??'';
  576. $end_time=$request->input('time_end')??'';
  577. $user=Auth::user();
  578. $id_arr=User::where('agent_id',$user->id)->where('level',2)->pluck('id');
  579. if ($search_name){
  580. $id_arr=User::whereIn('id',$id_arr)->where('mobile','like',"%$search_name%")
  581. ->orwhere('nickname','like',"%$search_name%")->pluck('id');
  582. }
  583. $query=AgentOperationLog::whereIn('user_id',$id_arr)->where('type',2);
  584. if ($type==0){
  585. $query->where('created_at','>',Carbon::yesterday()->toDateTimeString());
  586. }elseif($type==1){
  587. $query->where('created_at','>',Carbon::now()->startOfMonth()->toDateTimeString());
  588. }elseif($type==2){
  589. if ($start_time){
  590. $query->where('created_at','>',Carbon::now()->format('Y').'-'.$start_time.' 00:00:00')
  591. ->where('created_at','<',Carbon::now()->format('Y').'-'.$end_time.' 23:59:59');
  592. }else{
  593. $query->where('created_at','>',Carbon::now()->startOfYear()->toDateTimeString());
  594. }
  595. }
  596. $count=$query->count();
  597. $data=$query->with(['user'=>function($q){
  598. $q->select('id','nickname','level','mobile','headimgurl','realname','recom_id')->with(['recom_user:id,nickname']);
  599. }])->select('user_id')
  600. ->take($page_size)->skip($num)->get();
  601. return $this->success_list($data,'',$count);
  602. }
  603. public function GetUserTeamLists(Request $request){
  604. // $user=Auth::user();
  605. $arr=['crown'=>0,'manager'=>0,'lowest'=>0];
  606. // if ($user->level==1){
  607. // $data=[
  608. // 'totay_num'=>0,
  609. // 'month_num'=>0,
  610. // 'group'=>$arr
  611. // ];
  612. // return $this->success($data);
  613. // }
  614. // $id=$user->id;
  615. $user=User::where('mobile','15538160193')->first();
  616. $id=$user->id;
  617. $s=false;
  618. if ($user->level==1){
  619. $s=true;
  620. }
  621. $type=$request->type;
  622. // $id=7;
  623. if ($type==0){
  624. $data=User::where('status',0)
  625. ->where('service_status',0)
  626. ->whereNull('deleted_at')
  627. ->where('recom_id',$id)
  628. ->when($s,function ($q){
  629. return $q->where('level','<>',3);
  630. })
  631. ->select('users.level',\DB::raw('count(*) as total'))->groupBy('level')->get();
  632. }else{
  633. $arrs=User::where('agent_id',$id)->where('status',0)
  634. ->where('service_status',0)
  635. ->whereNull('deleted_at')
  636. ->pluck('id')->toArray();
  637. array_push($arrs,$id);
  638. $data=User::where('status',0)
  639. ->where('service_status',0)
  640. ->whereNull('deleted_at')
  641. ->whereIn('agent_id',$arrs)
  642. ->select('users.level',\DB::raw('count(*) as total'))->groupBy('level')->get();
  643. }
  644. foreach ($data as $k=>$v){
  645. if ($v->level==1){
  646. $arr['lowest']=$v->total;
  647. }
  648. if ($v->level==2){
  649. $arr['manager']=$v->total;
  650. }
  651. if ($v->level==3){
  652. $arr['crown']=$v->total;
  653. }
  654. }
  655. $totay_num=$this->GetNewUserTotal($id,Carbon::today());
  656. $month_num=$this->GetNewUserTotal($id,Carbon::now()->startOfMonth());
  657. $counts=$this->getStore($id);
  658. $applyCount=ApplyUser::where('user_id',$id)->count();
  659. $data=[
  660. 'totay_num'=>$totay_num,
  661. 'month_num'=>$month_num,
  662. 'store_no_num'=>$counts,
  663. 'year_num'=>$this->GetNewUserTotal($id,Carbon::now()->startOfYear()),
  664. 'group'=>$arr,
  665. 'applyCount'=>$applyCount,
  666. ];
  667. return $this->success($data);
  668. }
  669. public function getStore($id){
  670. $arrs=User::where('agent_id',$id)->where('status',0)
  671. ->where('service_status',0)
  672. ->whereNull('deleted_at')
  673. ->pluck('id')->toArray();
  674. array_push($arrs,$id);
  675. $data=User::where('status',0)
  676. ->where('service_status',0)
  677. ->whereIn('agent_id',$arrs)
  678. ->whereNull('deleted_at')->pluck('id')->toArray();
  679. $arrs=array_merge($arrs,$data);
  680. $arrs=array_diff($arrs,[$id]);
  681. array_unique($arrs);
  682. $w_ids=Store::where('is_apply',3)->pluck('user_id')->toArray();
  683. array_unique($w_ids);
  684. $count=count(array_unique(array_diff($arrs,$w_ids)));
  685. return $count;
  686. }
  687. public function GetUserTeamLevelDetail(Request $request){
  688. $user=Auth::user();
  689. $id=$user->id;
  690. // $id=7;
  691. // if ($id==39516){
  692. // $user=User::where('mobile',18753967396)->first();
  693. // $id=$user->id;
  694. // }
  695. $input=$request->all();
  696. $page_index=$input['page_index'];
  697. $page_size=$input['page_size'];
  698. $level=$input['level'];
  699. $type=$input['type'];
  700. $search_name=$input['search_name'];
  701. // $search_type=$request->input('search_type',0);
  702. $s=0;
  703. if ($level<$user->level){
  704. if ($level!=1){
  705. $s=1;
  706. }
  707. }
  708. if ($type==0){
  709. $data=User::where('status',0)
  710. ->where('service_status',0)
  711. ->whereNull('deleted_at')
  712. ->where('level',$level)
  713. ->where('recom_id',$id)->with(['agent_user:id,nickname'])->with(['get_store:id,user_id,is_apply'])->with(['recom_user:id,nickname'])
  714. ->select('level','id','headimgurl','mobile','nickname','recom_id','agent_id','realname',\DB::raw("if($s,1,0) as status"),'service_status','in_group');
  715. }else{
  716. $arrs=User::where('agent_id',$id)->where('status',0)
  717. ->where('service_status',0)
  718. ->whereNull('deleted_at')
  719. ->pluck('id')->toArray();
  720. array_push($arrs,$id);
  721. $data=User::where('status',0)
  722. ->where('service_status',0)
  723. ->whereNull('deleted_at')
  724. ->where('level',$level)
  725. ->whereIn('agent_id',$arrs)
  726. ->with(['agent_user:id,nickname'])->with(['get_store:id,user_id,is_apply'])->with(['recom_user:id,nickname'])
  727. ->select('level','headimgurl','mobile','nickname','recom_id','agent_id','realname','id',\DB::raw("if($s,1,0) as status"),'service_status','in_group');
  728. }
  729. if ($search_name){
  730. $wheres=function ($q)use($search_name){
  731. $q->where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->orwhere('realname','like',"%$search_name%");
  732. };
  733. $data=$data->where($wheres);
  734. }
  735. $total=$data->count();
  736. $data=$data->take($page_size)->skip(($page_index-1)*$page_size)->get();
  737. if ($level==2){
  738. foreach ($data as $k=>$v){
  739. $data[$k]->up_time=\DB::table('agent_operation_log')->orderByDesc('id')->where('user_id',$v->id)->where('type',2)->value('created_at');
  740. }
  741. }
  742. return $this->success_list($data,'',$total);
  743. }
  744. /**未开通微店**/
  745. public function StoreNoOpen(Request $request){
  746. $id=Auth::user()->id;
  747. $arrs=User::where('agent_id',$id)->where('status',0)
  748. ->where('service_status',0)
  749. ->whereNull('deleted_at')
  750. ->pluck('id')->toArray();
  751. array_push($arrs,$id);
  752. $data=User::where('status',0)
  753. ->where('service_status',0)
  754. ->whereIn('agent_id',$arrs)
  755. ->whereNull('deleted_at')->pluck('id')->toArray();
  756. $arrs=array_merge($arrs,$data);
  757. $arrs=array_diff($arrs,[$id]);
  758. array_unique($arrs);
  759. $w_ids=Store::where('is_apply',3)->pluck('user_id')->toArray();
  760. array_unique($w_ids);
  761. $ids=array_unique(array_diff($arrs,$w_ids));
  762. $search_name=$request->input('search_name','');
  763. $page_index=$request->input('page_index',0);
  764. $page_size=$request->input('page_size',20);
  765. $data=User::whereIn('id',$ids)->with(['agent_user:id,nickname'])->with(['get_store:id,user_id,is_apply'])->with(['recom_user:id,nickname'])
  766. ->select('level','headimgurl','mobile','nickname','recom_id','agent_id','realname','id',\DB::raw("if(level=1,0,1) as status"),'service_status','in_group');
  767. if ($search_name){
  768. $wheres=function ($q)use($search_name){
  769. $q->where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->orwhere('realname','like',"%$search_name%");
  770. };
  771. $data=$data->where($wheres);
  772. }
  773. $total=$data->count();
  774. $data=$data->take($page_size)->skip(($page_index-1)*$page_size)->get();
  775. return $this->success_list($data,'',$total);
  776. }
  777. public function SearchUserTeamLevelDetail(Request $request){
  778. $user=Auth::user();
  779. $id=$user->id;
  780. $input=$request->all();
  781. $page_index=$input['page_index'];
  782. $page_size=$input['page_size'];
  783. $search_name=$input['search_name'];
  784. $arrs=User::where('agent_id',$id)->where('status',0)
  785. ->where('service_status',0)
  786. ->whereNull('deleted_at')
  787. ->pluck('id')->toArray();
  788. array_push($arrs,$id);
  789. $data=User::where('status',0)
  790. ->where('service_status',0)
  791. ->whereNull('deleted_at')
  792. ->whereIn('agent_id',$arrs)
  793. ->with(['agent_user:id,nickname'])->with(['get_store:id,user_id,is_apply'])->with(['recom_user:id,nickname'])->select('level','headimgurl','mobile','nickname','recom_id','agent_id','realname','id',\DB::raw("if(level=1,0,1) as status"));
  794. if ($search_name){
  795. $wheres=function ($q)use($search_name){
  796. $q->where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->orwhere('realname','like',"%$search_name%");
  797. };
  798. $data=$data->where($wheres);
  799. }
  800. $total=$data->count();
  801. $data=$data->take($page_size)->skip(($page_index-1)*$page_size)->get();
  802. return $this->success_list($data,'',$total);
  803. }
  804. public function GetTeamList(Request $request){
  805. $page_size=$request->page_size;
  806. $page_index=$request->page_index;
  807. $data=User::where('status',0)
  808. ->where('service_status',0)
  809. ->whereNull('deleted_at')
  810. ->where('level',1)
  811. ->where('agent_id',$request->id)
  812. ->with(['agent_user:id,nickname'])->with(['recom_user:id,nickname'])->select('level','headimgurl','mobile','nickname','recom_id','agent_id','realname');
  813. $total=$data->count();
  814. $data=$data->take($page_size)->skip(($page_index-1)*$page_size)->get();
  815. return $this->success_list($data,'',$total);
  816. }
  817. public function GetNewUserTotal($id,$time){
  818. $arr=User::where('agent_id',$id)->where('status',0)
  819. ->where('service_status',0)
  820. ->whereNull('deleted_at')
  821. ->pluck('id')->toArray();
  822. array_push($arr,$id);
  823. $total=User::whereIn('agent_id',$arr)->where('status',0)
  824. ->where('service_status',0)
  825. ->whereNull('deleted_at')
  826. ->where('created_at','>=',$time)
  827. ->count();
  828. return $total;
  829. }
  830. public function GetNewUserDetail(Request $request){
  831. // $id=39516;
  832. $id=Auth::user()->id;
  833. $input=$request->all();
  834. $page_index=$input['page_index'];
  835. $page_size=$input['page_size'];
  836. $search_name=$input['search_name'];
  837. $type=$input['type'];
  838. if ($type==0){
  839. $time=Carbon::today();
  840. }elseif($type==1){
  841. $time=Carbon::now()->startOfMonth();
  842. }else{
  843. $time=Carbon::now()->startOfYear();
  844. }
  845. $arr=User::where('agent_id',$id)->where('status',0)
  846. ->where('service_status',0)
  847. ->whereNull('deleted_at')
  848. ->pluck('id')->toArray();
  849. array_push($arr,$id);
  850. $data=User::whereIn('agent_id',$arr)->where('status',0)
  851. ->where('service_status',0)
  852. ->whereNull('deleted_at')
  853. ->where('created_at','>=',$time);
  854. if($search_name){
  855. $data->where(function ($q)use($search_name){
  856. $q->where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->orwhere('realname','like',"%$search_name%");
  857. });
  858. }
  859. $total=$data->count();
  860. $data=$data->with(['get_store:id,user_id,is_apply'])
  861. ->with(['agent_user:id,nickname'])->with(['recom_user:id,nickname'])
  862. ->select('level','headimgurl','mobile','nickname','recom_id','agent_id','realname','id','service_status','in_group')
  863. ->take($page_size)
  864. ->skip(($page_index-1)*$page_size)
  865. ->get();
  866. return $this->success_list($data,'',$total);
  867. }
  868. }