RankController.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. class RankController extends Controller
  6. {
  7. public function user_rank(Request $request){
  8. $season=DB::table('basic')->where('keys','=','season')->value('value');
  9. if ($request->type==1){
  10. if ($request->season==$season){
  11. $data=DB::table('user')
  12. ->join('enroll','enroll.uid','=','user.id')
  13. ->join('service','service.phone','=','user.up_phone')
  14. ->join('war_zone','war_zone.uid','=','service.uid')
  15. ->where('enroll.status',0)
  16. ->where('enroll.season',$request->season)
  17. ->orderByDesc('user.integral')
  18. ->select('user.nickname','user.id','user.phone','user.integral as score','user.up_name','user.avatar','user.level_name','service.uid as sid','war_zone.war_name','user.up_phone')
  19. ->paginate(15);
  20. if($data->items()){
  21. return $this->success_list($data->items(),'ok',$data->total());
  22. }
  23. }else{
  24. $data=DB::table('user')
  25. ->join('glory','glory.uid','=','user.id')
  26. ->join('service','service.phone','=','user.up_phone')
  27. ->join('war_zone','war_zone.uid','=','service.uid')
  28. ->where('glory.season',$request->season)
  29. ->orderByDesc('glory.integral')
  30. ->select('user.nickname','user.id','user.phone','glory.integral as score','user.avatar','user.up_name','user.level_name','service.uid as sid','war_zone.war_name','user.up_phone')
  31. ->paginate(15);
  32. if($data->items()){
  33. return $this->success_list($data->items(),'ok',$data->total());
  34. }
  35. }
  36. return $this->success_list([]);
  37. }
  38. if ($request->type==2){
  39. if ($request->season==$season){
  40. $data=DB::table('user')
  41. ->join('service','service.phone','=','user.phone')
  42. ->join('war_zone','war_zone.uid','=','service.uid')
  43. ->where('user.level_name','=','代理公司')
  44. ->orderByDesc('user.integral')
  45. ->select('user.id','user.nickname','user.phone','user.integral as score','user.avatar','user.up_name','user.up_phone','service.uid as sid','war_zone.war_name')->paginate(15);
  46. if($data->items()){
  47. return $this->success_list($data->items(),'ok',$data->total());
  48. }
  49. }else{
  50. $data=DB::table('user')
  51. ->join('service','service.phone','=','user.phone')
  52. ->join('war_zone','war_zone.uid','=','service.uid')
  53. ->join('glory','glory.uid','=','user.id')
  54. ->where('glory.season','=',$request->season)
  55. ->where('user.level_name','=','代理公司')
  56. ->orderByDesc('glory.integral')
  57. ->select('user.id','user.nickname','user.phone','glory.integral as score','user.up_name','user.avatar','user.up_phone','service.uid as sid','war_zone.war_name')->paginate(15);
  58. if($data->items()){
  59. return $this->success_list($data->items(),'ok',$data->total());
  60. }
  61. }
  62. return $this->success_list([]);
  63. }
  64. else{
  65. $phone=DB::table('user')->where('level_name','政委')->select('phone','id')->get();
  66. foreach ($phone as $k=>$v){
  67. $inte=DB::table('user')->where('up_phone',$v->phone)->sum('integral');
  68. DB::table('user')->where('id',$v->id)->update(['integral'=>$inte]);
  69. }
  70. $datas=DB::select("SELECT FLOOR(f.total) as total,f.war_names FROM (SELECT SUM(s.integral/10) as total,s.war_names FROM (SELECT t.* ,w.war_names FROM service w JOIN (SELECT a.phone,a.up_phone,p.integral FROM `user` a JOIN (SELECT SUM(integral) as integral,uid FROM inte_log WHERE type=1 AND season=? GROUP BY uid) as p ON a.id=p.uid) as t ON w.phone =t.up_phone) as s GROUP BY s.war_names) as f ",[$request->season]);
  71. foreach ($datas as $k=>$v){
  72. $s[$v->war_names]=$v->total;
  73. }
  74. if ($request->season==$season){
  75. $data = DB::table('user')->join('war_zone', 'war_zone.uid', '=', 'user.id')
  76. ->select('user.*', 'war_zone.war_name','war_zone.war_avatar','user.nickname','user.phone','user.total')->orderByDesc('user.integral')->get();
  77. foreach ($data as $k => $v) {
  78. $float = $v->rank_end - $v->rank;
  79. $da[$k]['id'] = $v->id;
  80. $da[$k]['total'] = $v->total;
  81. $da[$k]['war_name'] = $v->war_name;
  82. $da[$k]['score'] = $v->integral;
  83. $da[$k]['avatar'] = $v->war_avatar;
  84. $da[$k]['nickname'] = $v->nickname;
  85. $da[$k]['phone'] = $v->phone;
  86. $da[$k]['level_name'] = "政委";
  87. $da[$k]['up_name']=$s[$v->war_name];
  88. $da[$k]['float'] = $float > 0 ? $float : 0;
  89. }
  90. return $this->response()->array([
  91. 'code' => 200,
  92. 'data' => [
  93. 'list' => $da
  94. ]
  95. ]);
  96. }else{
  97. $data = DB::table('user')->join('war_zone', 'war_zone.uid', '=', 'user.id')
  98. ->join('glory','glory.uid','=','user.id')
  99. ->where('glory.season','=',$request->season)
  100. ->select('user.id','user.total','glory.integral as integral','user.nickname','user.phone', 'war_zone.war_name','war_zone.war_avatar','user.nickname','user.phone','user.total')->orderByDesc('glory.integral')->get();
  101. foreach ($data as $k => $v) {
  102. // $float = $v->rank_end - $v->rank;
  103. $da[$k]['id'] = $v->id;
  104. $da[$k]['total'] = $v->total;
  105. $da[$k]['war_name'] = $v->war_name;
  106. $da[$k]['score'] = $v->integral;
  107. $da[$k]['avatar'] = $v->war_avatar;
  108. $da[$k]['nickname'] = $v->nickname;
  109. $da[$k]['phone'] = $v->phone;
  110. $da[$k]['level_name'] = "政委";
  111. $da[$k]['up_name']=$s[$v->war_name];
  112. // $da[$k]['float'] = $float > 0 ? $float : 0;
  113. }
  114. return $this->response()->array([
  115. 'code' => 200,
  116. 'data' => [
  117. 'list' => $da
  118. ]
  119. ]);
  120. }
  121. }
  122. }
  123. public function rank_search(Request $request){
  124. $string=$request->phone;
  125. if (is_numeric($string)){
  126. $s='user.phone';
  127. }else{
  128. $s='user.nickname';
  129. }
  130. if ($request->type==1){
  131. $data=DB::table('user')
  132. ->join('service','service.phone','=','user.up_phone')
  133. ->join('war_zone','war_zone.uid','=','service.uid')
  134. ->where($s,'like','%'.$string.'%')
  135. ->select('user.nickname','user.id','user.phone','user.integral as score','user.up_name','user.level_name','user.avatar','service.uid as sid','war_zone.war_name','user.rank','user.up_phone')
  136. ->paginate(15);
  137. }if ($request->type==2){
  138. $data=DB::table('user')
  139. ->join('service','service.phone','=','user.phone')
  140. ->join('war_zone','war_zone.uid','=','service.uid')
  141. ->where($s,'like','%'.$string.'%')
  142. ->select('user.nickname','user.id','user.phone','user.integral as score','user.avatar','user.up_name','user.level_name','service.uid as sid','war_zone.war_name','user.rank','user.up_phone')
  143. ->paginate(15);
  144. }
  145. if ($data->items()){
  146. return $this->success_list($data->items(),'ok',$data->total());
  147. }
  148. return $this->success([]);
  149. }
  150. }