|
@@ -1,4 +1,5 @@
|
|
|
import { createStore } from 'vuex'
|
|
|
+import { reportVisitPage } from '@/api.js'
|
|
|
|
|
|
const loginStatusEnum = {
|
|
|
notLogin: 'not-login',
|
|
@@ -13,7 +14,9 @@ export default createStore({
|
|
|
token: '',
|
|
|
userInfo: {
|
|
|
userName: '',
|
|
|
+ userId: null,
|
|
|
},
|
|
|
+ pageVisitRecord: {},
|
|
|
},
|
|
|
getters: {
|
|
|
loginStatusEnum() {
|
|
@@ -48,8 +51,51 @@ export default createStore({
|
|
|
state.userInfo = {}
|
|
|
localStorage.removeItem('userInfo')
|
|
|
},
|
|
|
+ getPageVisitRecordFromStorage(state) {
|
|
|
+ let pageVisitRecordStr = localStorage.getItem('pageVisitRecord')
|
|
|
+ if (pageVisitRecordStr) {
|
|
|
+ state.pageVisitRecord = JSON.parse(pageVisitRecordStr)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setPageVisitRecord(state, value) {
|
|
|
+ state.pageVisitRecord = value
|
|
|
+ }
|
|
|
},
|
|
|
actions: {
|
|
|
+ recordPageVisitIfNeeded({ state, commit }, { pageId }) {
|
|
|
+ let needUpdateStorage = false
|
|
|
+
|
|
|
+ let userId = undefined
|
|
|
+ if (state.loginStatus !== loginStatusEnum.wxLogin) {
|
|
|
+ userId = 'visitor'
|
|
|
+ } else {
|
|
|
+ userId = state.userInfo.userId
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!state.pageVisitRecord[userId]) {
|
|
|
+ state.pageVisitRecord[userId] = {}
|
|
|
+ needUpdateStorage = true
|
|
|
+ }
|
|
|
+
|
|
|
+ let lastVisitTime = undefined
|
|
|
+ lastVisitTime = state.pageVisitRecord[userId][pageId]
|
|
|
+ if (lastVisitTime === undefined) {
|
|
|
+ state.pageVisitRecord[userId][pageId] = 0
|
|
|
+ needUpdateStorage = true
|
|
|
+ }
|
|
|
+
|
|
|
+ let lastVisitTimeObj = new Date(lastVisitTime)
|
|
|
+ let thisVisitTimeObj = new Date()
|
|
|
+ if (!(lastVisitTimeObj.getFullYear() === thisVisitTimeObj.getFullYear() && lastVisitTimeObj.getMonth() === thisVisitTimeObj.getMonth() && lastVisitTimeObj.getDay() === thisVisitTimeObj.getDay())) {
|
|
|
+ state.pageVisitRecord[userId][pageId] = thisVisitTimeObj.getTime()
|
|
|
+ needUpdateStorage = true
|
|
|
+ reportVisitPage(pageId)
|
|
|
+ }
|
|
|
+
|
|
|
+ if (needUpdateStorage) {
|
|
|
+ localStorage.setItem('pageVisitRecord', JSON.stringify(state.pageVisitRecord))
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
modules: {
|
|
|
}
|