SubordinateController.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Support\Facades\DB;
  6. use App\Models\AccountsInfo;
  7. use App\Models\Subordinate;
  8. use App\Models\SystemLog;
  9. use Illuminate\Support\Carbon;
  10. class SubordinateController extends Controller
  11. {
  12. //代理列表
  13. public function subordinateList(Request $request)
  14. {
  15. $nickname = $request->post('nickname');
  16. $game_id = $request->post('game_id');
  17. $start_time = $request->post('start_time');
  18. $end_time = $request->post('end_time');
  19. $list_where = [];
  20. !empty($start_time) ? $list_where[] = ['s.CreateAt','>=',$start_time] : '';
  21. !empty($end_time) ? $list_where[] = ['s.CreateAt','<=',date('Y-m-d',strtotime("$end_time+1day"))] : '';
  22. !empty($nickname) ? $list_where[] = ['ai.NickName','like','%'.$nickname.'%'] : '';
  23. !empty($game_id) ? $list_where[] = ['ai.GameID','=',(int)$game_id] : '';
  24. $subordinate_list_obj = DB::table('QPPlatformDB.dbo.Subordinate as s')
  25. ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai','s.UserID','=','ai.UserID')
  26. ->leftJoin('QPAccountsDB.dbo.AccountsInfo as aii','s.SpreaderID','=','aii.UserID')
  27. ->select('s.UserID','ai.GameID','aii.GameID as SpGameId','s.SpreaderID','ai.NickName','s.Commission',DB::RAW('CONVERT(varchar(100), s.CreateAt, 20) as CreateAt'),'s.Level')
  28. ->groupBy('s.UserID','ai.GameID','aii.GameID','s.SpreaderID','ai.NickName','s.Commission','s.CreateAt','s.Level')
  29. ->where($list_where)
  30. ->orderBy('s.Level','asc')
  31. ->paginate(10);
  32. return view('admin.subordinate.list',['list'=>$subordinate_list_obj,'nickname'=>$nickname,'game_id'=>$game_id,'start_time'=>$start_time,'end_time'=>$end_time]);
  33. }
  34. //点位设置
  35. public function setCommissionView(Request $request,$user_id)
  36. {
  37. $data = Subordinate::find($user_id);
  38. return view('admin.subordinate.set_commission_view',['data'=>$data]);
  39. }
  40. //点位设置
  41. public function setCommission(Request $request,$user_id)
  42. {
  43. $params['commission'] = $request->input('num');
  44. $params['user_id'] = $user_id;
  45. $params['spreader_id'] = $request->input('spreader_id');
  46. $result = Subordinate::setCommission($params);
  47. if($result['status'] == true){
  48. return $this->json(200, "处理成功");
  49. }else{
  50. return $this->json(500, $result['msg']);
  51. }
  52. }
  53. //添加代理页面
  54. public function addSubView(Request $request)
  55. {
  56. // $data = Subordinate::select('Commission','Level')->where('UserID',$user_id)->first();
  57. return view('admin.subordinate.add');
  58. }
  59. //添加代理
  60. public function addSub(Request $request)
  61. {
  62. $game_id = $request->input('game_id');
  63. $params['Commission'] = $request->input('commission');
  64. $params['UserID'] = AccountsInfo::where('GameID',$game_id)->value('UserID');
  65. $params['SpreaderID'] = 0;
  66. $params['CreateAt'] = Carbon::now();
  67. $params['Level'] = 1;
  68. if(Subordinate::find($params['UserID'])){
  69. return $this->json(500, '该用户已是分销商');
  70. }
  71. $result = Subordinate::insert($params);
  72. if($result){
  73. return $this->json(200, "处理成功");
  74. }else{
  75. return $this->json(500, $result['msg']);
  76. }
  77. }
  78. //直属玩家列表
  79. public function playersList(Request $request,$user_id)
  80. {
  81. $subs = DB::table('QPPlatformDB.dbo.Subordinate')
  82. ->where('SpreaderID',$user_id)
  83. ->pluck('UserID');
  84. $list = AccountsInfo::where('SpreaderID',$user_id)
  85. ->whereNotIn('UserID',$subs)
  86. ->get();
  87. return view('admin.subordinate.players',['list'=>$list]);
  88. }
  89. //直属代理列表
  90. public function subsList(Request $request,$user_id)
  91. {
  92. $subordinate_list1 = DB::table('QPPlatformDB.dbo.Subordinate as s')
  93. ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai','s.UserID','=','ai.UserID')
  94. ->leftJoin('QPRecordDB.dbo.GoldRebateLog as ry','s.UserID','=','ry.UserID')
  95. ->select('s.UserID','ai.GameID','s.Auth','s.SpreaderID','ai.NickName','s.Commission',DB::Raw('IsNull(SUM(ry.Tribute),0) as Tribute,IsNull(SUM(ry.Achievement),0) as Achievement'))
  96. ->groupBy('s.UserID','ai.GameID','s.SpreaderID','ai.NickName','s.Commission','s.Auth')
  97. ->where('ai.SpreaderID',$user_id)
  98. ->get();
  99. $add = 0;
  100. $subordinate_list = json_decode(json_encode($subordinate_list1),true);
  101. $user_ids = array_column($subordinate_list,'UserID');
  102. $subordinate_num = DB::table('QPPlatformDB.dbo.Subordinate')
  103. ->selectRaw('COUNT(UserID) as subordinate_num,SpreaderID')
  104. ->whereIn('SpreaderID',$user_ids)
  105. ->groupBy('SpreaderID')
  106. ->get();//直属代理人数
  107. $players_num = DB::table('QPAccountsDB.dbo.AccountsInfo')
  108. ->selectRaw('COUNT(UserID) as players_num,SpreaderID')
  109. ->whereIn('SpreaderID',$user_ids)
  110. ->groupBy('SpreaderID')
  111. ->get();//直属下级人数
  112. foreach ($subordinate_list1 as $key => &$value) {
  113. $users = AccountsInfo::getUsers($value->UserID);//团队人员
  114. $value->spread_num = AccountsInfo::getSpreadlNum($users);//团队总人数
  115. $value->subordinate_num = 0;
  116. $value->players_num = 0;
  117. $value->Revenue = 0;
  118. foreach ($subordinate_num as $k => $v) {
  119. if($value->UserID == $v->SpreaderID){
  120. $value->subordinate_num = $v->subordinate_num;
  121. }
  122. }
  123. foreach ($players_num as $k => $v) {
  124. if($value->UserID == $v->SpreaderID){
  125. $value->players_num = $v->players_num;
  126. }
  127. }
  128. // $value->Tribute = $value->Tribute/100;
  129. $value->Achievement = $value->Achievement/100;
  130. $value->players_num = $value->players_num-$value->subordinate_num;//直属玩家人数
  131. }
  132. unset($value);
  133. return view('admin.subordinate.subs',['list'=>$subordinate_list1]);
  134. }
  135. }