Ver código fonte

[add] report log

A\An 3 anos atrás
pai
commit
16bf0e57b2
4 arquivos alterados com 104 adições e 0 exclusões
  1. 9 0
      log-center/log.js
  2. 17 0
      log-center/logEnum.js
  3. 45 0
      log-center/logger.js
  4. 33 0
      pages/index.vue

+ 9 - 0
log-center/log.js

@@ -0,0 +1,9 @@
+import * as logger from './logger'
+import * as logEnum from './logEnum'
+
+
+
+export default {
+  ...logger,
+  ...logEnum
+}

+ 17 - 0
log-center/logEnum.js

@@ -0,0 +1,17 @@
+export const logType = {
+    'denet': '150',//denet-event-log
+}
+
+export const businessType = {
+    buttonView: "buttonView",
+    buttonClick: "buttonClick",
+    pageView: "pageView",
+}
+
+export const objectType = {
+    installButton: "install-button"
+}
+
+export const pageSource = {
+    newUserLandingPage: "new-user-landing-page"
+}

+ 45 - 0
log-center/logger.js

@@ -0,0 +1,45 @@
+import axios from 'axios';
+import { logType } from './logEnum.js';
+
+const logApi = {
+	prod: 'https://log.weiqumeta.com',
+	pre: 'https://prelog.weiqumeta.com',
+	test: 'https://testlog.weiqumeta.com'
+}
+
+const logAPIUrl = logApi[process.env.NUXT_ENV.MODE] + '/log-center'
+
+/**
+ * @eventData 以键值对存储,会在最终上报里解开的参数
+ * @extParams 最终上报到阿里云以json字符串存储的参数,如果extparams传入的不是obj会转换成obj
+ */
+export function reportLog(params) {
+    paramsPretreatmentAndRequest(logType.denet, params)
+}
+
+function paramsPretreatmentAndRequest(logType, params) {
+    let {eventData = {}, extParams = {}} = params.params ||  {
+        params: {
+        }
+    }
+    extParams = wrapObject(extParams)
+    params.params.logType = logType;
+    params.params.eventData = JSON.stringify(eventData)
+    params.params.extParams  = JSON.stringify(extParams)
+    
+    axios.post(`${logAPIUrl}/statistics/uploadLogFromFrontend`, params)
+}
+
+function wrapObject(extParams) {
+    if (typeDecide(extParams, 'Object')) {
+        return extParams
+    }
+    return { 'defaultExt': extParams }
+}
+
+/**
+ * 检测对象类型
+ */
+function typeDecide(o, type) {
+    return Object.prototype.toString.call(o) === `[object ${type}]`;
+}

+ 33 - 0
pages/index.vue

@@ -189,6 +189,8 @@
 import axios from 'axios';
 import Cookies from 'js-cookie'
 import { isBrowser } from '../utils/help.js'
+import Report from "../log-center/log"
+
 var moment = require('moment');
 var ClipboardJS = require('clipboard')
 
@@ -280,6 +282,19 @@ export default {
 		installExtension() {
 			let { extensionsInstallChannel, extensionsInstallUrl } = this.config;
 			let url = extensionsInstallUrl;
+			Report.reportLog({
+				baseInfo: {
+					appVersionCode: this.appVersionCode,
+					mid: this.mid,
+					pageSource: Report.pageSource.newUserLandingPage
+				},
+				params: {
+					eventData: {
+						businessType: Report.businessType.buttonClick,
+						objectType: Report.objectType.installButton
+					}
+				}
+			})
 			switch (extensionsInstallChannel) {
 				case "officeDownload":
 					location.href = url;
@@ -477,6 +492,12 @@ export default {
 		if (data.code == 0) {
 			if (data.data && data.data.postBizData && typeof data.data.postBizData == 'string') {
 				data.data.postBizData = JSON.parse(data.data.postBizData)
+			} 
+			if(data.data.postBizData === null) {
+				data.data.postBizData = {
+					postUserInfo: {
+					}
+				}
 			}
 			return {
 				detail: data.data,
@@ -486,6 +507,18 @@ export default {
 
 
 	mounted() {
+		Report.reportLog({
+			baseInfo: {
+				appVersionCode: this.appVersionCode,
+				mid: this.mid,
+				pageSource: Report.pageSource.newUserLandingPage
+			},
+			params: {
+				eventData: {
+					businessType: Report.businessType.pageView,
+				}
+			}
+		})
 		this.getConfig()
 		if (!this.detail.postId) {
 			return