RoomServiceLogic.php 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Http\logic\admin;
  3. use App\Http\helper\NumConfig;
  4. use App\Http\logic\api\BaseApiLogic;
  5. use Illuminate\Support\Facades\DB;
  6. class RoomServiceLogic extends BaseApiLogic
  7. {
  8. public function service_data($start_time, $end_time, $excel)
  9. {
  10. $where = [];
  11. !empty($start_time) && $where[] = ['LastWriteDate', '>=', $start_time];
  12. !empty($end_time) && $where[] = ['LastWriteDate', '<=', $end_time];
  13. if ($excel) {
  14. $field = ['ServerName', 'LastWriteDate', 'CntrlSysWinCnt', 'CntrlSysWinFailCnt', 'CntrlSysLostCnt', 'CntrlSysLostFailCnt', 'CntrlSysLostPlyrWrngCnt', 'RsltSysWinCnt', 'RsltSysWinAverageScore', 'RsltSysLostCnt', 'RsltSysLostAverageScore'];
  15. $list = DB::connection('read')->table('QPPlatformDB.dbo.GameRoomInfo as gi')
  16. ->leftJoin('QPRecordDB.dbo.RecordStatistics as rs', 'gi.ServerID', 'rs.ServerID')
  17. ->select($field)
  18. ->where($where)
  19. ->orderByDesc('LastWriteDate')
  20. ->orderByDesc('ServerName')
  21. ->limit(1000)
  22. ->get();
  23. foreach ($list as $key=>&$val) {
  24. $val->RsltSysLostAverageScore = number_float($val->RsltSysLostAverageScore / NumConfig::NUM_VALUE);
  25. $val->RsltSysWinAverageScore = number_float($val->RsltSysWinAverageScore / NumConfig::NUM_VALUE);
  26. $val->winsuccess = $val->CntrlSysWinCnt - $val->CntrlSysWinFailCnt;
  27. $val->failsuccess = $val->CntrlSysLostCnt - $val->CntrlSysLostFailCnt - $val->CntrlSysLostPlyrWrngCnt;
  28. $val->winResult = $val->CntrlSysWinCnt.'/'.$val->winsuccess .'/'. $val->CntrlSysWinFailCnt;
  29. $val->failResult = $val->CntrlSysLostCnt .'/'. $val->failsuccess .'/'. $val->CntrlSysLostFailCnt. '/'. $val->CntrlSysLostPlyrWrngCnt;
  30. unset($list[$key]->CntrlSysWinCnt);
  31. unset($list[$key]->CntrlSysWinFailCnt);
  32. unset($list[$key]->CntrlSysLostCnt);
  33. unset($list[$key]->CntrlSysLostFailCnt);
  34. unset($list[$key]->CntrlSysLostPlyrWrngCnt);
  35. unset($list[$key]->winsuccess);
  36. unset($list[$key]->failsuccess);
  37. }
  38. $title = ['游戏房间', '游戏时间', '系统赢玩家的总局数', '系统赢玩家平均值', '系统输玩家总局数', '系统输玩家平均值', '群控赢触发次数/实际成功局数/失效局数', '群控输触发次数/实际成功局数/失效局数/对象失效局数'];
  39. $list = json_decode(json_encode($list), true);
  40. downloadExcel($list, $title, '房间服务端数据统计' . date('YmdHis'));
  41. } else {
  42. $list = DB::connection('read')->table('QPPlatformDB.dbo.GameRoomInfo as gi')
  43. ->leftJoin('QPRecordDB.dbo.RecordStatistics as rs', 'gi.ServerID', 'rs.ServerID')
  44. ->select('rs.*', 'ServerName')
  45. ->where($where)
  46. ->orderByDesc('LastWriteDate')
  47. ->orderByDesc('ServerName')
  48. ->paginate();
  49. foreach ($list as &$val) {
  50. $val->RsltSysLostAverageScore = number_float($val->RsltSysLostAverageScore / NumConfig::NUM_VALUE);
  51. $val->RsltSysWinAverageScore = number_float($val->RsltSysWinAverageScore / NumConfig::NUM_VALUE);
  52. $val->winsuccess = $val->CntrlSysWinCnt - $val->CntrlSysWinFailCnt;
  53. $val->failsuccess = $val->CntrlSysLostCnt - $val->CntrlSysLostFailCnt - $val->CntrlSysLostPlyrWrngCnt;
  54. }
  55. return compact('list', 'start_time', 'end_time');
  56. }
  57. }
  58. public function show($StatisticsID)
  59. {
  60. $RsltSysAverageRound = DB::table('QPRecordDB.dbo.RecordStatistics')->where('StatisticsID', $StatisticsID)->value('RsltSysAverageRound');
  61. $RsltSysAverageRound = number_float($RsltSysAverageRound);
  62. $list = DB::connection('read')->table('QPRecordDB.dbo.RecordGameRound')
  63. ->where('StatisticsID', $StatisticsID)
  64. ->paginate(10);
  65. return compact('RsltSysAverageRound', 'list');
  66. }
  67. }