AnalysisDailyVisit.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\store\model\analysis;
  4. use app\common\model\analysis\AnalysisDailyVisit as AnalysisDailyVisitModel;
  5. use app\common\service\MpWxService;
  6. /**
  7. * 每日访问趋势模型
  8. * Class AnalysisDailyVisit
  9. * @package app\common\model\analysis
  10. */
  11. class AnalysisDailyVisit extends AnalysisDailyVisitModel
  12. {
  13. /**
  14. * 批量写入每日行为数据
  15. * 发布上线时,只需执行一次
  16. */
  17. public static function addInitVisit()
  18. {
  19. $begin_date = '20211001'; // 生成初始数据开始时间,建议时间为:小程序上线时间
  20. $end_date = date('Ymd', strtotime('-1 days')); // 生成初始数据结束时间,建议时间为:昨天
  21. $date_arr = period_date(strtotime($begin_date), strtotime($end_date), 'Ymd');
  22. $res = [];
  23. foreach ($date_arr as $date) {
  24. $res[] = self::visit($date);
  25. }
  26. // 写入数据
  27. return AnalysisDailyVisit::insertAll($res);
  28. }
  29. /**
  30. * 写入每日行为数据
  31. * 定时任务每日执行一次,生成昨日数据
  32. */
  33. public static function addVisit()
  34. {
  35. $date = date('Ymd', strtotime('-1 days'));
  36. $data = self::visit($date);
  37. // dd($data);
  38. // 移除数据
  39. self::where('start_time', '>=', strtotime($date))
  40. ->where('end_time', '<', strtotime($date)+ 86400)->delete();
  41. // 写入数据
  42. return AnalysisDailyVisit::insert($data);
  43. }
  44. /**
  45. * 获取单日数据概览及访问趋势数据
  46. *
  47. * @param $date
  48. * @return array
  49. */
  50. public static function visit($date)
  51. {
  52. $summary = self::getSummary($date); // 每日数据概览
  53. $visitTrend = self::getVisitTrend($date);// 每日访问趋势
  54. $data = array_merge($summary, $visitTrend);
  55. $data['create_time'] = time();
  56. $data['update_time'] = time();
  57. $data['start_time'] = strtotime($data['ref_date']); // 开始时间 00:00:00
  58. $data['end_time'] = strtotime($data['ref_date']) + 86400 - 1; // 结束时间 23:59:59
  59. return $data;
  60. }
  61. /**
  62. * 获取用户访问小程序数据日趋势
  63. * 限定查询1天数据
  64. *
  65. * @param $date
  66. * @return array|mixed
  67. */
  68. private static function getVisitTrend($date)
  69. {
  70. $params['begin_date'] = $date;
  71. $params['end_date'] = $date;
  72. $data = MpWxService::doAnalysisAction('getweanalysisappiddailyvisittrend', $params);
  73. $data = $data['list'][0] ?? [];
  74. return $data;
  75. }
  76. /**
  77. * 获取用户访问小程序数据概况
  78. * 限定查询1天数据
  79. *
  80. * @param $date
  81. * @return array|mixed
  82. */
  83. private static function getSummary($date)
  84. {
  85. $params['begin_date'] = $date;
  86. $params['end_date'] = $date;
  87. $data = MpWxService::doAnalysisAction('getweanalysisappiddailysummarytrend', $params);
  88. $data = $data['list'][0] ?? [];
  89. return $data;
  90. }
  91. }