DownloadController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Carbon\Carbon;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\View;
  7. class DownloadController extends Controller{
  8. public function excel_all(Request $request){
  9. $s=DB::table('season')->where('season',$request->season)->first();
  10. $start=$s->round_start_time;
  11. $end=$s->round_end_time;
  12. $season=DB::table('basic')->where('keys','=','season')->value('value');
  13. if ($season !==$request->season){
  14. $data=DB::select("select gl.integral,al.* from (select f.*,e.war_names as war_name FROM (SELECT c.level_name,c.id,c.phone,c.up_phone,c.up_name,c.nickname,ifnull(b.total,0) as total, IFNULL(b.hard,0) as hard,IFNULL(b.simple,0) as simple, IFNULL(b.old,0) as old FROM `user` c LEFT JOIN (select sum(ifnull(a.type_one,0)) AS hard,sum(ifnull(a.type_two,0)) as simple,sum(ifnull(a.type_three,0)) as old,a.uid , (sum(ifnull(a.type_one,0))+sum(ifnull(a.type_two,0))+sum(ifnull(a.type_three,0))) as total from inte_review a WHERE a.time>=? AND a.time<? group By a.uid ) as b ON b.uid=c.id JOIN enroll d WHERE d.uid=c.id and d.status=0 and d.season=?) as f JOIN service e ON e.phone=f.up_phone) as al join glory gl on al.id=gl.uid where gl.season=?;",[$start,$end,$request->season,$request->season]);
  15. }else{
  16. $data=DB::select("select f.*,e.war_names as war_name FROM (SELECT c.level_name,c.phone,c.up_phone,c.up_name,c.integral,c.nickname,ifnull(b.total,0) as total, IFNULL(b.hard,0) as hard,IFNULL(b.simple,0) as simple, IFNULL(b.old,0) as old FROM `user` c LEFT JOIN (select sum(ifnull(a.type_one,0)) AS hard,sum(ifnull(a.type_two,0)) as simple,sum(ifnull(a.type_three,0)) as old,a.uid , (sum(ifnull(a.type_one,0))+sum(ifnull(a.type_two,0))+sum(ifnull(a.type_three,0))) as total from inte_review a WHERE a.time>=? AND a.time<? group By a.uid ) as b ON b.uid=c.id JOIN enroll d WHERE d.uid=c.id and d.status=0 and d.season=?) as f JOIN service e ON e.phone=f.up_phone;",[$start,$end,$request->season]);
  17. }
  18. // $end=DB::table('basic')->where('keys','=','round_end_time')->value('value');
  19. // $data=DB::table('user')
  20. // ->join('service','service.phone','=','user.up_phone')
  21. // ->join('war_zone','war_zone.uid','=','service.uid')
  22. // ->join('enroll','enroll.uid','=','user.id')
  23. // ->where('enroll.status',0)
  24. // ->leftJoin('inte_review','user.id','=','inte_review.uid')
  25. // ->whereIn('user.level_name',['销售主管','销售经理'])
  26. // ->where(function ($query) use($start) {
  27. // $query->where('inte_review.created_at','>',date('Y-m-d H:i:s',$start))
  28. // ->orWhereNull('inte_review.created_at');
  29. // })
  30. // ->groupBy('user.id')
  31. // ->select(DB::raw("SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old"),'user.id','user.integral','user.nickname','user.up_name','user.phone','user.up_phone','war_zone.war_name')
  32. // ->get()->toArray();
  33. return $this->success_list($data);
  34. }
  35. public function excel_every(Request $request){
  36. $start=$request->start;
  37. $end=$request->end;
  38. if ($request->season==19){
  39. $data=DB::select("SELECT al.*,w.war_names as war_name FROM (
  40. SELECT
  41. u.nickname,
  42. u.phone,
  43. u.up_phone,
  44. u.up_name,
  45. u.level_name,
  46. IFNULL(DATA .hard, 0) AS hard,
  47. IFNULL(DATA .simple, 0) AS simple,
  48. IFNULL(DATA .old, 0) AS old,
  49. IFNULL(DATA .integral, 0) AS integral
  50. FROM
  51. user u
  52. LEFT JOIN (
  53. SELECT
  54. SUM(IFNULL(il.integral, 0)) AS integral,
  55. ins.*
  56. FROM
  57. inte_log il
  58. LEFT JOIN (
  59. SELECT
  60. sum(ifnull(a.type_one, 0)) AS hard,
  61. sum(ifnull(a.type_two, 0)) AS simple,
  62. sum(ifnull(a.type_three, 0)) AS old,
  63. a.uid AS auid
  64. FROM
  65. inte_review a
  66. WHERE
  67. a.time >= ?
  68. AND a.time <= ?
  69. GROUP BY
  70. a.uid
  71. ) AS ins ON il.uid = ins.auid
  72. WHERE
  73. il.created_at >= ?
  74. AND il.created_at <= ?
  75. GROUP BY
  76. il.uid
  77. ) AS DATA ON u.id = DATA .auid
  78. JOIN enroll ON enroll.uid = u.id
  79. WHERE
  80. enroll.`status` = 0 AND enroll.season=?)as al JOIN service w ON w.phone=al.up_phone
  81. ",[$start,$end-1,date('Y-m-d H:i:s',$start),date('Y-m-d H:i:s',$end),$request->season]);
  82. }else{
  83. $data=DB::select("SELECT al.*,w.war_names as war_name FROM (
  84. SELECT
  85. u.nickname,
  86. u.phone,
  87. u.up_phone,
  88. u.up_name,
  89. u.level_name,
  90. IFNULL(DATA .hard, 0) AS hard,
  91. IFNULL(DATA .simple, 0) AS simple,
  92. IFNULL(DATA .old, 0) AS old,
  93. IFNULL(DATA .integral, 0) AS integral
  94. FROM
  95. user u
  96. LEFT JOIN (
  97. SELECT
  98. SUM(IFNULL(il.integral, 0)) AS integral,
  99. ins.*
  100. FROM
  101. inte_log il
  102. LEFT JOIN (
  103. SELECT
  104. sum(ifnull(a.type_one, 0)) AS hard,
  105. sum(ifnull(a.type_two, 0)) AS simple,
  106. sum(ifnull(a.type_three, 0)) AS old,
  107. a.uid AS auid
  108. FROM
  109. inte_review a
  110. WHERE
  111. a.time >= ?
  112. AND a.time <= ?
  113. GROUP BY
  114. a.uid
  115. ) AS ins ON il.uid = ins.auid
  116. WHERE
  117. il.time >= ?
  118. AND il.time <= ?
  119. GROUP BY
  120. il.uid
  121. ) AS DATA ON u.id = DATA .auid
  122. JOIN enroll ON enroll.uid = u.id
  123. WHERE
  124. enroll.`status` = 0 AND enroll.season=?)as al JOIN service w ON w.phone=al.up_phone
  125. ",[$start,$end-1,$start,$end-1,$request->season]);
  126. }
  127. // foreach ($data as $k=>$v){
  128. // $num=$v->hard=null?0:$v->hard+$v->old=null?0:$v->old+$v->simple=null?0:$v->simple;
  129. //// $datas=$v;
  130. // if ($num>=3){
  131. // $datas[$k]['integral']=$num*20;
  132. // }else{
  133. // $datas[$k]['integral']=$num*10;
  134. // }
  135. // $datas[$k]['hard']=$v->hard==null?0:$v->hard;
  136. // $datas[$k]['simple']=$v->simple==null?0:$v->simple;
  137. // $datas[$k]['old']=$v->old==null?0:$v->old;
  138. // $datas[$k]['total']=$num;
  139. // $datas[$k]['nickname']=$v->nickname;
  140. // $datas[$k]['up_name']=$v->up_name;
  141. // $datas[$k]['phone']=$v->phone;
  142. // $datas[$k]['up_phone']=$v->phone;
  143. // $datas[$k]['war_name']=$v->war_name;
  144. // }
  145. return $this->success_list($data);
  146. }
  147. public function excel_grade(Request $request){
  148. $data=DB::table('inte_review')
  149. ->whereBetween('created_at',[date('Y-m-d H:i:s',$request->start),date('Y-m-d H:i:s',$request->end)])
  150. ->groupBy('uid')
  151. ->select(DB::raw("uid,SUM(type_one) as one,SUM(type_two) as two,SUM(type_three) as three"))
  152. ->get();
  153. $user=[];
  154. if ($data){
  155. foreach ($data as $k=>$v){
  156. $num=$v->one+$v->two+$v->three;
  157. $num=$num*10;
  158. if ($num>=30){
  159. $user[$k]['id']=$v->uid;
  160. $user[$k]['hard']=$v->one;
  161. $user[$k]['simple']=$v->two;
  162. $user[$k]['old']=$v->three;
  163. }
  164. }
  165. $uid=[];
  166. if ($user){
  167. foreach ($user as $k=>$v){
  168. $uid[$k]=$v['id'];
  169. }
  170. $crown=DB::table('user')
  171. ->join('service','service.phone','=','user.up_phone')
  172. ->join('war_zone','war_zone.uid','=','service.uid')
  173. ->whereIn('user.id',$uid)
  174. ->select('user.id','user.nickname','user.up_name','user.phone','user.up_phone','war_zone.war_name as war_name')->get()->toArray();
  175. // foreach ($crown as $k=>$v){
  176. // $sid[$k]=$v->sid;
  177. // }
  178. // $war_zone=DB::table('war_zone')->whereIn('uid',$sid)->select('war_name','uid')->get();
  179. }else{
  180. return $this->success_list([]);
  181. }
  182. $crown=json_decode(json_encode($crown), true);
  183. $excel=[];
  184. foreach ($crown as $k=>$v){
  185. foreach ($user as $key=>$value){
  186. if ($value['id']=$v['id']){
  187. unset($value['id']);
  188. $excel[$key]=array_merge($v,$value);
  189. }
  190. }
  191. }
  192. return $this->response()->array([
  193. 'code'=>200,
  194. 'data'=>[
  195. 'list'=>$excel
  196. ]
  197. ]);
  198. }
  199. return $this->success_list([]);
  200. }
  201. public function repeat(){
  202. $data=DB::table('enroll')
  203. ->select('uid', DB::raw('count(*) as count'))
  204. ->where('status',0)
  205. ->groupBy('uid')
  206. ->havingRaw('count(*) > 1')
  207. ->get();
  208. foreach ($data as $k=>$v){
  209. $s[$k]=DB::table('user')->join('service','service.phone','=','user.up_phone')
  210. ->join('war_zone','war_zone.uid','=','service.uid')
  211. ->where('user.id',$v->uid)
  212. ->select('user.nickname','user.name','user.phone','user.up_phone','user.up_name','war_zone.war_name')
  213. ->first();
  214. }
  215. foreach ($s as $k=>$v){
  216. $name=DB::table('user')->join('war_zone','war_zone.uid','=','user.id')
  217. ->where('war_zone.war_name','=',$v->war_name)->value('user.nickname');
  218. $ss[$k][]=$v;
  219. $ss[$k]['service']=$name;
  220. }
  221. return $this->success_list($ss);
  222. }
  223. public function excel_rank(Request $request){
  224. $season=DB::table('basic')->where('keys','=','season')->value('value');
  225. if ($request->type==1){
  226. if ($request->season==$season){
  227. $data=DB::table('user')
  228. ->join('enroll','enroll.uid','=','user.id')
  229. ->join('service','service.phone','=','user.up_phone')
  230. ->join('war_zone','war_zone.uid','=','service.uid')
  231. ->where('enroll.status',0)
  232. ->where('enroll.season',$request->season)
  233. ->orderByDesc('user.integral')
  234. ->select('user.nickname','user.id','user.phone','user.integral as score','user.up_name','user.level_name','service.uid as sid','war_zone.war_name','user.up_phone')
  235. ->get();
  236. return $this->success_list($data);
  237. }else{
  238. $data=DB::table('user')
  239. ->join('glory','glory.uid','=','user.id')
  240. ->join('service','service.phone','=','user.up_phone')
  241. ->join('war_zone','war_zone.uid','=','service.uid')
  242. ->where('glory.season',$request->season)
  243. ->orderByDesc('glory.integral')
  244. ->select('user.nickname','user.id','user.phone','glory.integral as score','user.up_name','user.level_name','service.uid as sid','war_zone.war_name','user.up_phone')
  245. ->get();
  246. return $this->success_list($data);
  247. }
  248. // return $this->success_list([]);
  249. }
  250. if ($request->type==2){
  251. if ($request->season==$season){
  252. $data=DB::table('user')
  253. ->join('service','service.phone','=','user.phone')
  254. ->join('war_zone','war_zone.uid','=','service.uid')
  255. ->where('user.level_name','=','代理公司')
  256. ->orderByDesc('user.integral')
  257. ->select('user.id','user.nickname','user.phone','user.integral as score','user.up_name','user.up_phone','service.uid as sid','war_zone.war_name')->get();
  258. return $this->success_list($data);
  259. }else{
  260. $data=DB::table('user')
  261. ->join('service','service.phone','=','user.phone')
  262. ->join('war_zone','war_zone.uid','=','service.uid')
  263. ->join('glory','glory.uid','=','user.id')
  264. ->where('glory.season','=',$request->season)
  265. ->where('user.level_name','=','代理公司')
  266. ->orderByDesc('glory.integral')
  267. ->select('user.id','user.nickname','user.phone','glory.integral as score','user.up_name','user.up_phone','service.uid as sid','war_zone.war_name')->get();
  268. return $this->success_list($data);
  269. }
  270. // return $this->success_list([]);
  271. }
  272. }
  273. public function one_week(Request $request){
  274. $now=Carbon::now()->timestamp;
  275. $time=DB::table('season')->where('season',$request->season)->first();
  276. if ($request->week==1){
  277. $day=($now-$time->round_start_time)/86400;
  278. if ($day>=7){
  279. $data=$this->sql($time->round_start_time);
  280. return $this->success_list($data);
  281. }
  282. return $this->error(300);
  283. }
  284. if ($request->week==2){
  285. $day=($now-$time->round_start_time)/86400;
  286. if ($day>=14){
  287. $times=$time->round_start_time+86400*7;
  288. $data=$this->sql($times);
  289. return $this->success_list($data);
  290. }
  291. return $this->error(300);
  292. }
  293. if ($request->week==3){
  294. $day=($now-$time->round_start_time)/86400;
  295. if ($day>=21){
  296. $times=$time->round_start_time+86400*14;
  297. $data=$this->sql($times);
  298. return $this->success_list($data);
  299. }
  300. return $this->error(300);
  301. }
  302. }
  303. public function sql($time){
  304. $data=DB::select("SELECT p.*,m.war_names as war_name FROM service m JOIN
  305. (SELECT k.nickname,k.phone,k.up_name,k.up_phone,k.level_name FROM `user` k JOIN
  306. (SELECT b.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as b WHERE b.total>2
  307. UNION ALL
  308. SELECT c.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as c WHERE c.total>2
  309. UNION ALL
  310. SELECT d.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as d WHERE d.total>2
  311. UNION ALL
  312. SELECT e.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as e WHERE e.total>2
  313. UNION ALL
  314. SELECT f.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as f WHERE f.total>2
  315. UNION ALL
  316. SELECT g.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as g WHERE g.total>2
  317. UNION ALL
  318. SELECT j.uid FROM (SELECT uid,SUM(type_one) as hard,SUM(type_two) as simple,SUM(type_three) as old,(SUM(type_one)+sum(type_two)+SUM(type_three))as total FROM inte_review WHERE time>=? AND time<? GROUP BY uid) as j WHERE j.total>2) L ON L.uid=k.id) as p ON m.phone=p.up_phone GROUP BY p.phone HAVING COUNT(p.phone)=7
  319. ",[$time,$time+86400,$time+86400,$time+86400*2,$time+86400*2,$time+86400*3,$time+86400*3,$time+86400*4,$time+86400*4,$time+86400*5,$time+86400*5,$time+86400*6,$time+86400*6,$time+86400*7]);
  320. return $data;
  321. }
  322. public function bonus(){
  323. $season=21;
  324. $data=DB::table('user')->where('level_name','<>','政委')->select('nickname','phone','up_name','level_name','up_phone','bonus')->orderByDesc('bonus')->get();
  325. $dt=[];
  326. foreach ($data as $k=>$v){
  327. $dt[$k]['昵称']=$v->nickname;
  328. $dt[$k]['手机号']=$v->phone;
  329. $dt[$k]['奖学金']=$v->bonus;
  330. $dt[$k]['等级']=$v->level_name;
  331. if ($v->level_name=='代理公司'){
  332. $dt[$k]['战区']=DB::table('service')->where('phone',$v->phone)->value('war_names');
  333. $dt[$k]['上级名称']=DB::table('user')->where('phone',$v->up_phone)->value('nickname');
  334. }else{
  335. $dt[$k]['战区']=DB::table('service')->where('phone',$v->up_phone)->value('war_names');
  336. $dt[$k]['上级名称']=$v->up_name;
  337. }
  338. $dt[$k]['上级手机号']=$v->up_phone;
  339. }
  340. return $this->success_list($dt);
  341. }
  342. }