SignInController.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\helper\NumConfig;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. // 签到
  7. class SignInController
  8. {
  9. public function index(Request $request)
  10. {
  11. $start_time = $request->start_time ?: date('Y-m-d').' 00:00:00';
  12. $end_time = $request->end_time ?: date('Y-m-d').' 23:59:59';
  13. $GameID = $request->GameID ?: '';
  14. $NickName = $request->NickName ?: '';
  15. $Channel = $request->Channel ?: '';
  16. $where[] = ['Reason', 44];
  17. !empty($start_time) && $where[] = ['UpdateTime', '>=', date('Y-m-d H:i:s', strtotime($start_time))];
  18. !empty($end_time) && $where[] = ['UpdateTime', '<=', date('Y-m-d H:i:s', strtotime($end_time))];
  19. !empty($GameID) && $where[] = ['GameID', $GameID];
  20. !empty($NickName) && $where[] = ['NickName', 'like', $NickName . '%'];
  21. !empty($Channel) && $where[] = ['Channel', $Channel];
  22. $ChannelList = DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->pluck('Channel', 'ID');
  23. ////////////////////////
  24. // 查询范围需要在同一个月份,暂时不支持跨月份查询
  25. $from_mm = intval(date('Ym',strtotime($start_time)));
  26. $to_mm = intval(date('Ym',strtotime($end_time)));
  27. if( $from_mm != $to_mm ){
  28. throw new Exception('暂不支持跨月查询,开始时间和结束时间请选择相同月份');
  29. }
  30. //确定有效表范围,从202104月开始到当前月
  31. if($from_mm < 202104 || $from_mm > intval(date('Ym'))){
  32. $from_mm = date('Ym');
  33. }
  34. $table = 'QPTreasureDB.dbo.YN_RecordScoreInfo_'.$from_mm;
  35. //////////////////////
  36. $list = DB::connection('write')->table($table.' as ri')
  37. ->join('QPAccountsDB.dbo.AccountsInfo as ai', 'ri.UserID', 'ai.UserID')
  38. ->where($where)
  39. ->selectRaw('ri.*,ai.GameID,ai.NickName,Channel')
  40. ->orderByDesc('UpdateTime')
  41. ->paginate(50);
  42. foreach ($list as $value) {
  43. $value->ChangeScore = number_float($value->ChangeScore / NumConfig::NUM_VALUE);
  44. }
  45. $data = compact('list', 'ChannelList', 'start_time', 'end_time', 'GameID', 'NickName', 'Channel');
  46. return view('admin.sign_in.index', $data);
  47. }
  48. }