/public/module/pay/pay_hour.php

https://github.com/karlom/gameadmin · PHP · 166 lines · 143 code · 16 blank · 7 comment · 16 complexity · 89cb905ba77845749debfe9e44920458 MD5 · raw file

  1. <?php
  2. /*
  3. * Author:linruirong
  4. * modify:linlisheng@feiyou.com
  5. * 2012-3-14
  6. */
  7. include_once '../../../protected/config/config.php';
  8. include_once SYSDIR_ADMIN_INCLUDE . '/global.php';
  9. global $lang;
  10. //时间
  11. $startDay = strtotime($_POST['startDay']);
  12. $endDay = strtotime($_POST['endDay']);
  13. $startDay = $startDay ? $startDay : strtotime(date('Y-m-d',strtotime('-6day')));
  14. $endDay = $endDay ? $endDay : strtotime(date('Y-m-d'));
  15. $viewType = intval($_POST['viewType']) ? intval($_POST['viewType']) : 1 ; //默认显示综合统计图
  16. $showType = intval($_POST['showType']) ? intval($_POST['showType']) : 1 ;
  17. $dateStart = date('Y-m-d',$startDay);
  18. $dateEnd = date('Y-m-d',$endDay);
  19. $dateStart = (strtotime($dateStart) >= strtotime(ONLINEDATE)) ? $dateStart : ONLINEDATE;
  20. $diffDay = abs(strtotime($dateStart) - strtotime($dateEnd))/(3600*24) + 1 ;
  21. $startStamp = strtotime($dateStart);
  22. $endStamp = strtotime($dateEnd.' 23:59:59');
  23. $arrShowType = array(9=>$lang->page->showType1,1=>$lang->page->showType2,2=>$lang->page->showType3,3=>$lang->page->showType4,4=>$lang->page->showType5,);
  24. $arrViewType = array(1=>$lang->page->viewType1,2=>$lang->page->viewType2);
  25. //======== 查结果 =====
  26. if (1==$viewType) { //查多天,只计算综合结果
  27. $sqlSumHour = " SELECT SUM(`pay_money`) AS totalMoney, COUNT(DISTINCT(account_name)) AS totalPerson,
  28. COUNT(`account_name`) AS totalPersonTime,`hour`
  29. FROM ".T_LOG_PAY."
  30. WHERE `mtime` BETWEEN {$startStamp} AND {$endStamp}
  31. GROUP BY `hour`
  32. ORDER BY `hour` ASC ";
  33. $resultSumHour = GFetchRowSet($sqlSumHour);
  34. $showType = intval($_POST['showType']) ? intval($_POST['showType']) :1 ;
  35. $maxSumMoney = 0;
  36. $maxSumPerson = 0;
  37. $maxSumPersonTime = 0;
  38. $maxSumArpu = 0;
  39. $allSumTotalMoney = 0;
  40. $paySumHours = array();
  41. if (is_array($resultSumHour) && !empty($resultSumHour)) {
  42. for ($hour=0; $hour <= 23 ; $hour++){
  43. $existSum = false;
  44. foreach ($resultSumHour as $key => $row) {
  45. if ($row['hour'] == $hour) {
  46. $maxSumMoney = $row['totalMoney'] > $maxSumMoney ? $row['totalMoney'] : $maxSumMoney;
  47. $maxSumPerson = $row['totalPerson'] > $maxSumPerson ? $row['totalPerson'] : $maxSumPerson;
  48. $maxSumPersonTime = $row['totalPersonTime'] > $maxSumPersonTime ? $row['totalPersonTime'] : $maxSumPersonTime;
  49. $allSumTotalMoney += $row['totalMoney'];
  50. $paySumHours[$hour]['totalMoney'] = round($row['totalMoney'],1);
  51. $paySumHours[$hour]['totalPerson'] = $row['totalPerson'];
  52. $paySumHours[$hour]['totalPersonTime'] = $row['totalPersonTime'];
  53. $existSum = true;
  54. unset($resultSumHour[$key]);
  55. break;
  56. }
  57. }
  58. if (!$existSum) {
  59. $paySumHours[$hour]['totalMoney'] = 0;
  60. $paySumHours[$hour]['totalPerson'] = 0;
  61. $paySumHours[$hour]['totalPersonTime'] = 0;
  62. }
  63. $paySumHours[$hour]['arpu'] = $paySumHours[$hour]['totalPerson'] > 0 ? round($paySumHours[$hour]['totalMoney']/$paySumHours[$hour]['totalPerson'],1) : 0 ;
  64. $paySumHours[$hour]['tip'] = "金额:{$paySumHours[$hour]['totalMoney']},人数:{$paySumHours[$hour]['totalPerson']},人次:{$paySumHours[$hour]['totalPersonTime']},ARPU值:{$paySumHours[$hour]['arpu']}";
  65. $maxSumArpu = $paySumHours[$hour]['arpu'] > $maxSumArpu ? $paySumHours[$hour]['arpu'] : $maxSumArpu;
  66. }
  67. }
  68. $avgSumMoney = round($allSumTotalMoney/$diffDay/24, 2);
  69. }else {
  70. $select = " SUM(`pay_money`) AS totalMoney , COUNT(DISTINCT(account_name)) AS totalPerson,
  71. COUNT(`account_name`) AS totalPersonTime,
  72. CONCAT(`year`,'-',`month`,'-',`day` ) AS `date`,
  73. `year`,`month`,`day`,`hour` ";
  74. $sql = " SELECT {$select}
  75. FROM ".T_LOG_PAY."
  76. WHERE `mtime` BETWEEN {$startStamp} AND {$endStamp}
  77. GROUP BY `year`,`month`,`day`,`hour`
  78. ORDER BY `mtime` ";
  79. $result = GFetchRowSet($sql);
  80. $maxMoney = 0;
  81. $maxPerson = 0;
  82. $maxPersonTime = 0;
  83. $maxArpu = 0;
  84. $allTotalMoney = 0;
  85. $showType = isset($_POST['showType']) ? intval($_POST['showType']) : 1 ; //默认显示“金额”视图
  86. $payHours = array();
  87. if (is_array($result) && !empty($result)) {
  88. $timeStamp = $endStamp > $startStamp ? $endStamp : $startStamp ;
  89. for ($day=0; $day < $diffDay; $day++){
  90. $date = date('Y-n-j',strtotime('-'.$day.'day',$timeStamp));
  91. for ($hour=0; $hour <= 23 ; $hour++){
  92. $exist = false;
  93. foreach ($result as $key => $row) {
  94. if ($row['date'] == $date && $row['hour'] == $hour) {
  95. $maxMoney = $row['totalMoney'] > $maxMoney ? $row['totalMoney'] : $maxMoney;
  96. $maxPerson = $row['totalPerson'] > $maxPerson ? $row['totalPerson'] : $maxPerson;
  97. $maxPersonTime = $row['totalPersonTime'] > $maxPersonTime ? $row['totalPersonTime'] : $maxPersonTime;
  98. $allTotalMoney += $row['totalMoney'];
  99. $payHours[$date][$hour]['totalMoney'] = round($row['totalMoney'],1);
  100. $payHours[$date][$hour]['totalPerson'] = $row['totalPerson'];
  101. $payHours[$date][$hour]['totalPersonTime'] = $row['totalPersonTime'];
  102. $exist = true;
  103. unset($result[$key]);
  104. break;
  105. }
  106. }
  107. if (!$exist) {
  108. $payHours[$date][$hour]['totalMoney'] = 0;
  109. $payHours[$date][$hour]['totalPerson'] = 0;
  110. $payHours[$date][$hour]['totalPersonTime'] = 0;
  111. }
  112. $payHours[$date][$hour]['arpu'] = $payHours[$date][$hour]['totalPerson'] > 0 ? round($payHours[$date][$hour]['totalMoney']/$payHours[$date][$hour]['totalPerson'],1) : 0 ;
  113. $payHours[$date][$hour]['tip'] = "金额:{$payHours[$date][$hour]['totalMoney']},人数:{$payHours[$date][$hour]['totalPerson']},人次:{$payHours[$date][$hour]['totalPersonTime']},ARPU值:{$payHours[$date][$hour]['arpu']}";
  114. $maxArpu = $payHours[$date][$hour]['arpu'] > $maxArpu ? $payHours[$date][$hour]['arpu'] : $maxArpu;
  115. }
  116. }
  117. }
  118. $avgMoney = round($allTotalMoney/$diffDay/24, 2);
  119. }
  120. $data = array(
  121. 'payHours' => $payHours,
  122. 'maxMoney' => round($maxMoney,1),
  123. 'avgMoney' => $avgMoney,
  124. 'allTotalMoney' => round($allTotalMoney,1),
  125. 'maxPerson' => $maxPerson,
  126. 'maxPersonTime' => $maxPersonTime,
  127. 'maxArpu' => $maxArpu,
  128. 'maxSumMoney' => round($maxSumMoney,1),
  129. 'maxSumPerson' => $maxSumPerson,
  130. 'maxSumPersonTime'=>$maxSumPersonTime,
  131. 'maxSumArpu' => $maxSumArpu,
  132. 'allSumTotalMoney'=>round($allSumTotalMoney,1),
  133. 'paySumHours' => $paySumHours,
  134. 'avgSumMoney' => $avgSumMoney,
  135. 'startDay' => $dateStart,
  136. 'endDay' => $dateEnd,
  137. 'showType'=>$showType,
  138. 'arrShowType'=>$arrShowType,
  139. 'viewType'=>$viewType,
  140. 'arrViewType'=>$arrViewType,
  141. 'dateToday'=>date('Y-m-d'),
  142. 'datePrev'=>date('Y-m-d',strtotime('-1day',$startDay)),
  143. 'dateNext'=>date('Y-m-d',strtotime('+1day',$startDay)),
  144. 'onlineDay'=> ONLINEDATE,
  145. 'minDate' => ONLINEDATE,
  146. 'maxDate' => Datatime :: getTodayString() ,
  147. 'lang'=>$lang,
  148. );
  149. $smarty->assign($data);
  150. $smarty->display("module/pay/pay_hour.tpl");