From d124c6c96f6171ca7dc723420ea68f890e57790f Mon Sep 17 00:00:00 2001 From: marvzhang Date: Fri, 10 Jan 2020 14:37:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5api.crawlab.cn=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=BF=BD=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/.env.development | 1 + frontend/.env.production | 1 + frontend/.env.test | 3 ++- frontend/src/App.vue | 16 ++++++++++++++++ frontend/src/utils/encrypt.js | 13 +++++++++++++ frontend/src/utils/index.js | 4 +++- frontend/src/utils/stats.js | 17 +++++++++++++++++ .../views/layout/components/Sidebar/index.vue | 1 + 8 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 frontend/src/utils/encrypt.js diff --git a/frontend/.env.development b/frontend/.env.development index 779d28e4..580de54d 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -1,2 +1,3 @@ NODE_ENV='development' VUE_APP_BASE_URL=http://localhost:8000 +VUE_APP_CRAWLAB_BASE_URL=http://api.crawlab.cn diff --git a/frontend/.env.production b/frontend/.env.production index 09f11100..86742de1 100644 --- a/frontend/.env.production +++ b/frontend/.env.production @@ -1,2 +1,3 @@ NODE_ENV='production' VUE_APP_BASE_URL='http://localhost:8000' +VUE_APP_CRAWLAB_BASE_URL=http://api.crawlab.cn diff --git a/frontend/.env.test b/frontend/.env.test index acff44de..cc3d7823 100644 --- a/frontend/.env.test +++ b/frontend/.env.test @@ -1,2 +1,3 @@ NODE_ENV='test' -VUE_APP_BASE_URL='http://114.67.75.98:8000/api' +VUE_APP_BASE_URL='http://localhost:8000' +VUE_APP_CRAWLAB_BASE_URL=http://api.crawlab.cn diff --git a/frontend/src/App.vue b/frontend/src/App.vue index a7ba8069..9bcfaca6 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -25,6 +25,12 @@ export default { ...mapState('setting', ['setting']), useStats () { return localStorage.getItem('useStats') + }, + uid () { + return localStorage.getItem('uid') + }, + sid () { + return sessionStorage.getItem('sid') } }, methods: {}, @@ -58,6 +64,16 @@ export default { '' }) } + + // set uid if first visit + if (this.uid === undefined || this.uid === null) { + localStorage.setItem('uid', this.$utils.encrypt.UUID()) + } + + // set session id if starting a session + if (this.sid === undefined || this.sid === null) { + sessionStorage.setItem('sid', this.$utils.encrypt.UUID()) + } } } diff --git a/frontend/src/utils/encrypt.js b/frontend/src/utils/encrypt.js new file mode 100644 index 00000000..87c8c7fb --- /dev/null +++ b/frontend/src/utils/encrypt.js @@ -0,0 +1,13 @@ +export default { + UUID: () => { + let s = [] + let hexDigits = '0123456789abcdef' + for (let i = 0; i < 36; i++) { + s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1) + } + s[14] = '4' // bits 12-15 of the time_hi_and_version field to 0010 + s[8] = s[13] = s[18] = s[23] = '-' + + return s.join('') + } +} diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index d5a118af..0578bb07 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -1,5 +1,7 @@ import stats from './stats' +import encrypt from './encrypt' export default { - stats + stats, + encrypt } diff --git a/frontend/src/utils/stats.js b/frontend/src/utils/stats.js index f2fa0186..0a6dabf2 100644 --- a/frontend/src/utils/stats.js +++ b/frontend/src/utils/stats.js @@ -1,12 +1,29 @@ +import axios from 'axios' + +const sendEvCrawlab = async (eventCategory, eventAction, eventLabel) => { + await axios.get(process.env.VUE_APP_CRAWLAB_BASE_URL + '/track', { + params: { + uid: localStorage.getItem('uid'), + sid: sessionStorage.getItem('sid'), + ec: eventCategory, + ea: eventAction, + el: eventLabel, + v: sessionStorage.getItem('v') + } + }) +} + export default { sendPv (page) { if (localStorage.getItem('useStats') !== '0') { window._hmt.push(['_trackPageview', page]) + sendEvCrawlab('访问页面', page, '') } }, sendEv (category, eventName, optLabel, optValue) { if (localStorage.getItem('useStats') !== '0') { window._hmt.push(['_trackEvent', category, eventName, optLabel, optValue]) + sendEvCrawlab(category, eventName, optLabel) } } } diff --git a/frontend/src/views/layout/components/Sidebar/index.vue b/frontend/src/views/layout/components/Sidebar/index.vue index 35b599b9..8b371a44 100644 --- a/frontend/src/views/layout/components/Sidebar/index.vue +++ b/frontend/src/views/layout/components/Sidebar/index.vue @@ -57,6 +57,7 @@ export default { async created () { const res = await this.$request.get('/version') this.version = res.data.data + sessionStorage.setItem('v', this.version) } }