|
@@ -12,29 +12,149 @@ use Main\Lib\Core;
|
|
|
|
|
|
class Total
|
|
|
{
|
|
|
- # 获取基本统计信息:概况趋势和访问趋势
|
|
|
- public function base()
|
|
|
- {
|
|
|
- $day = Dever::input('day', date('Ymd', time()-86400));
|
|
|
+ public function getBase()
|
|
|
+ {
|
|
|
+ $day = Dever::input('day', date('Y-m-d', time()-86400));
|
|
|
+ $project = Dever::input('project');
|
|
|
+ $where = array();
|
|
|
+ $where['day'] = $day;
|
|
|
+ $where['project_id'] = $project;
|
|
|
|
|
|
- $wechat = new Wechat();
|
|
|
+ $info = Dever::db('applet/total_base')->getData($where);
|
|
|
|
|
|
- $param['begin_date'] = $param['end_date'] = $day;
|
|
|
+ return $info;
|
|
|
+ }
|
|
|
|
|
|
- $result = array();
|
|
|
+ # 获取基本统计信息:概况趋势和访问趋势
|
|
|
+ private function base($project)
|
|
|
+ {
|
|
|
+ $day = Dever::input('day', date('Y-m-d', time()-86400));
|
|
|
|
|
|
- $data = $wechat->curl('total_base', $param, false);
|
|
|
+ $wechat = new Wechat($project, 'applet');
|
|
|
|
|
|
- if (isset($data['list'][0])) {
|
|
|
- $result = $data['list'][0];
|
|
|
- }
|
|
|
+ $param['begin_date'] = $param['end_date'] = str_replace('-', '', $day);
|
|
|
|
|
|
- $data = $wechat->curl('total_visit', $param, false);
|
|
|
+ $result = array();
|
|
|
|
|
|
- if (isset($data['list'][0])) {
|
|
|
- $result += $data['list'][0];
|
|
|
- }
|
|
|
+ $data = $wechat->curl('total_base', $param, false);
|
|
|
|
|
|
- return $result;
|
|
|
- }
|
|
|
+ if (isset($data['list'][0])) {
|
|
|
+ $result = $data['list'][0];
|
|
|
+
|
|
|
+ $data = $wechat->curl('total_visit', $param, false);
|
|
|
+
|
|
|
+ if (isset($data['list'][0])) {
|
|
|
+ $result += $data['list'][0];
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->update_base($project['id'], $day, $result);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ # 计划任务
|
|
|
+ public function cron()
|
|
|
+ {
|
|
|
+ $project = $this->getProject();
|
|
|
+ if ($project) {
|
|
|
+ foreach ($project as $k => $v) {
|
|
|
+ if ($v) {
|
|
|
+ $base = $this->base($v);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function update_base($project, $day, $data)
|
|
|
+ {
|
|
|
+ $update = array();
|
|
|
+ $update['day'] = $day;
|
|
|
+ $update['daynum'] = Dever::maketime($day);
|
|
|
+ $update['project_id'] = $project;
|
|
|
+ $update['session_cnt'] = isset($data['session_cnt'] ? $data['session_cnt'] : 0;
|
|
|
+ $update['visit_pv'] = isset($data['visit_pv']) ? $data['visit_pv'] : 0;
|
|
|
+ $update['visit_uv'] = isset($data['visit_uv']) ? $data['visit_uv'] : 0;
|
|
|
+ $update['visit_uv_new'] = isset($data['visit_uv_new']) ? $data['visit_uv_new'] : 0;
|
|
|
+ $update['stay_time_uv'] = isset($data['stay_time_uv']) ? $data['stay_time_uv'] : 0;
|
|
|
+ $update['stay_time_session'] = isset($data['stay_time_session']) ? $data['stay_time_session'] : 0;
|
|
|
+ $update['visit_depth'] = isset($data['visit_depth']) ? $data['visit_depth'] : 0;
|
|
|
+ $update['visit_total'] = isset($data['visit_total']) ? $data['visit_total'] : 0;
|
|
|
+ $update['share_pv'] = isset($data['share_pv']) ? $data['share_pv'] : 0;
|
|
|
+ $update['share_uv'] = isset($data['share_uv']) ? $data['share_uv'] : 0;
|
|
|
+ $update['rand'] = Dever::id();
|
|
|
+
|
|
|
+ $where = array();
|
|
|
+ $where['rand'] = Dever::id();
|
|
|
+ $where['day'] = $update['day'];
|
|
|
+ $where['project_id'] = $update['project_id'];
|
|
|
+
|
|
|
+ $info = Dever::db('applet/total_base')->one($where);
|
|
|
+ if (!$info) {
|
|
|
+ $id = Dever::db('applet/total_base')->insert($update);
|
|
|
+ } else {
|
|
|
+ $id = $info['id'];
|
|
|
+ $update['where_id'] = $id;
|
|
|
+ Dever::db('applet/total_base')->update($update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function getProject()
|
|
|
+ {
|
|
|
+ $where['type'] = Dever::config('wechat', 'applet')->type;
|
|
|
+ $project = Dever::db('main/project')->state($where);
|
|
|
+ return $project;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function out()
|
|
|
+ {
|
|
|
+ $applet = $this->getProject();
|
|
|
+
|
|
|
+ $day = Dever::input('day');
|
|
|
+ if (!$day) {
|
|
|
+ $day = date('Y-m-d', time()-3600*24);
|
|
|
+ }
|
|
|
+ $data = Dever::db('applet/total_base')->state(array('day' => $day));
|
|
|
+
|
|
|
+ $i = 0;
|
|
|
+ foreach ($data as $k => $v) {
|
|
|
+ $data[$k]['applet'] = $applet[$data[$k]['project_id']]['name'];
|
|
|
+
|
|
|
+ if ($data[$k]['applet']) {
|
|
|
+ $body[$i] = array
|
|
|
+ (
|
|
|
+ $data[$k]['applet'],
|
|
|
+ $data[$k]['session_cnt'],
|
|
|
+ $data[$k]['visit_pv'],
|
|
|
+ $data[$k]['visit_uv'],
|
|
|
+ $data[$k]['visit_uv_new'],
|
|
|
+ $data[$k]['visit_total'],
|
|
|
+ $data[$k]['share_pv'],
|
|
|
+ $data[$k]['share_uv'],
|
|
|
+ $data[$k]['stay_time_uv'],
|
|
|
+ $data[$k]['stay_time_session'],
|
|
|
+ $data[$k]['visit_depth'],
|
|
|
+ );
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $header = array
|
|
|
+ (
|
|
|
+ '小程序名称', '打开次数', '访问次数', '访问人数', '新用户数', '总用户数', '转发次数', '转发人数', '人均停留时长', '次均停留时长', '平均访问深度'
|
|
|
+ );
|
|
|
+
|
|
|
+ $file = $day . '_小程序每日概览';
|
|
|
+ if (Dever::input('test')) {
|
|
|
+ print_r($header);
|
|
|
+ print_r($body);die;
|
|
|
+ }
|
|
|
+
|
|
|
+ Dever::excelExport($body, $header, $file, $sheet = 0, $sheetName = $day);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|