retention2.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /*
  3. * 留存2
  4. */
  5. include_once dirname(__FILE__) . '/../main.php';
  6. $paras = query_paras();
  7. $startTime = $paras['date1'];
  8. $endTime = $paras['date2'];
  9. $type = $paras['type'];
  10. $endDate = strtotime("$endTime");
  11. $array = array();
  12. $labels = array();
  13. $tabName = "tab_rolename";
  14. for ($i = 0; $i <= 999; $i++) {
  15. $iday = strtotime("$startTime +$i day");
  16. $day = date("Y-m-d", $iday);
  17. if ($iday > $endDate) {
  18. break;
  19. }
  20. $labels[] = $day;
  21. $new = daoInst()->select('*')->from($tabName)
  22. ->where('ts')->ge($day . " 00:00:00")
  23. ->andWhere('ts')->le($day . " 23:59:59")
  24. ->count();
  25. if ($type == 0) {
  26. $array[] = $new;
  27. } else {
  28. $iday2 = strtotime("$day +$type day");
  29. $day2 = date("Y-m-d", $iday2);
  30. $total = daoInst()->select('*')->from($tabName)
  31. ->where('ts')->ge($day . " 00:00:00")
  32. ->andWhere('ts')->le($day . " 23:59:59")
  33. ->andWhere('lastlogin')->ge($day2 . " 00:00:00")
  34. ->count();
  35. $array[] = (int) ($total / $new * 100);
  36. }
  37. }
  38. $result = new stdClass();
  39. $result->data = $array;
  40. $result->labels = $labels;
  41. echo json_encode($result);