Lose.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * 流失统计相关
  4. */
  5. defined('IN_WEB') or die('Include Error!');
  6. class Lose
  7. {
  8. function __construct()
  9. {
  10. }
  11. /**
  12. * 返回昨日流失玩家数据
  13. * @param $param
  14. * @return string
  15. */
  16. public function index($param)
  17. {
  18. $data = array();
  19. $stime = oo::functions()->uint($param['stime']);
  20. $etime = oo::functions()->uint($param['etime']);
  21. $dayList = $this->getDays($stime, $etime);
  22. $loseList = [];
  23. foreach ($dayList as $day) {
  24. $day = date('Ymd', strtotime($day));
  25. $key = okeys::losestatistics($day);
  26. $loseList[$day] = oo::commonOprRedis('statistics')->get($key);
  27. }
  28. $data['dayList'] = $dayList;
  29. $data['loseList'] = $loseList;
  30. return json_encode($data);
  31. }
  32. /**
  33. * 返回7日流失玩家数据
  34. * @param $param
  35. * @return string
  36. */
  37. public function sevenDaysLose($param)
  38. {
  39. $data = array();
  40. $stime = oo::functions()->uint($param['stime']);
  41. $etime = oo::functions()->uint($param['etime']);
  42. $dayList = $this->getDays($stime, $etime);
  43. $loseList = [];
  44. foreach ($dayList as $day) {
  45. $day = date('Ymd', strtotime($day));
  46. $key = okeys::losestatisticsseven($day);
  47. $loseList[$day] = oo::commonOprRedis('statistics')->get($key);
  48. }
  49. $data['dayList'] = $dayList;
  50. $data['loseList'] = $loseList;
  51. return json_encode($data);
  52. }
  53. /**
  54. * 计算天数差
  55. */
  56. private function getDays($day1, $day2)
  57. {
  58. $second1 = $day1;
  59. $second2 = $day2;
  60. if ($second1 < $second2) {
  61. $tmp = $second2;
  62. $second2 = $second1;
  63. $second1 = $tmp;
  64. }
  65. $days = ($second1 - $second2) / 86400;
  66. $dayList = array();
  67. for ($i=0; $i <= $days ; $i++) {
  68. $dayList[] = date('Y-m-d', $second2 + 86400*$i);
  69. }
  70. return $dayList;
  71. }
  72. }