date('Y-m-d', $week_arr['s']), // 上周周一日期 'e' => date('Y-m-d', $week_arr['e']) // 上周周日日期 ]; $data = self::visit($date); // 移除数据 self::where('start_time', '>=', strtotime($date['s'])) ->where('end_time', '<', strtotime($date['e'])+ 86400)->delete(); // 写入数据 return AnalysisWeeklyVisit::insert($data); } /** * 获取单周数据概览及访问趋势数据 * * @param $date * @return array */ public static function visit($date) { $summary = self::getSummary($date); // 每周数据概览 从数据库查询统计 $visitTrend = self::getVisitTrend($date);// 每周访问趋势 $data = array_merge($summary, $visitTrend); $data['create_time'] = time(); $data['update_time'] = time(); $data['start_time'] = strtotime($date['s']); // 开始时间 00:00:00 $data['end_time'] = strtotime($date['e']) + 86400 - 1; // 结束时间 23:59:59 return $data; } /** * 获取用户访问小程序数据周趋势 * * @param $date * @return array|mixed */ private static function getVisitTrend($date) { $startDate = date('Ymd', strtotime($date['s'])); $endDate = date('Ymd', strtotime($date['e'])); $params['begin_date'] = $startDate; $params['end_date'] = $endDate; $data = MpWxService::doAnalysisAction('getweanalysisappidweeklyvisittrend', $params); $data = $data['list'][0] ?? []; return $data; } /** * 获取用户访问小程序数据概况 * * @param $date * @return array|mixed */ private static function getSummary($date) { $visit_total = AnalysisDailyVisit::where('start_time', '>=', strtotime($date['s'])) ->where('end_time', '<', strtotime($date['e'])+ 86400) ->order('ref_date', 'desc') ->value('visit_total'); $data = AnalysisDailyVisit::where('start_time', '>=', strtotime($date['s'])) ->where('end_time', '<', strtotime($date['e'])+ 86400) ->order('ref_date', 'desc') ->field('sum(share_pv) as share_pv, sum(share_uv) as share_uv') ->find(); $data->visit_total = $visit_total; return $data->toArray(); } }