dever 6 years ago
parent
commit
4f9aedcda1
1 changed files with 137 additions and 17 deletions
  1. 137 17
      applet/src/Total.php

+ 137 - 17
applet/src/Total.php

@@ -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;
+    }
 }