Explorar o código

需求池870 ETA试用客户,最近一次登录时长统计规则变更

hbchen hai 1 ano
pai
achega
9c1da05985
Modificáronse 1 ficheiros con 21 adicións e 2 borrados
  1. 21 2
      src/utils/TimeOnPage.js

+ 21 - 2
src/utils/TimeOnPage.js

@@ -9,12 +9,16 @@ let stayTime = 0
 //登录活跃时间间隔 30分钟
 const LOGIN_TIMEOUT = 30*60
 
+//不活跃时间计时器
 let loginTimer=null
+//活跃时间记录计时器 5分钟记录一次
+let intervalTimer=null
 let loginStayTime=0
 
 export const openLoginTimer=()=>{
   // 登录时间
   localStorage.setItem("loginTime",new Date())
+
   loginTimer = setInterval(()=>{
     loginStayTime++
     // console.log(loginStayTime);
@@ -23,6 +27,19 @@ export const openLoginTimer=()=>{
       recordActiveLoginFun()
     }
   },1000)
+
+  clearInterval(intervalTimer)
+  intervalTimer = setInterval(()=>{
+    // let inactiveTime = time || new Date()
+    let ActiveTime=0
+    if(localStorage.getItem('loginTime')){
+      ActiveTime = (new Date()-new Date(localStorage.getItem('loginTime')))/1000
+      console.log("5分钟间隔记录时长",ActiveTime+'s');
+      recordActiveLogin({ActiveTime:Math.round(ActiveTime)}).then(res=>{
+        if(res.Ret!==200) return
+      })
+    }
+  },1000*300)
 }
 
 export const recordActiveLoginFun=(time)=>{
@@ -35,7 +52,8 @@ export const recordActiveLoginFun=(time)=>{
       if(res.Ret!==200) return
     }).finally(()=>{
       // 清除工作
-      loginTimer=null
+      clearInterval(loginTimer)
+      clearInterval(intervalTimer)
       loginStayTime=0
       localStorage.removeItem('loginTime')
     })
@@ -174,7 +192,8 @@ export const doPageEventListener=function(){
     console.log('unload')
     recordActiveLoginFun()
     // 猜测在unload这里 浏览器不会等待异步返回 清除工作在这进行
-    loginTimer=null
+    clearInterval(loginTimer)
+    clearInterval(intervalTimer)
     loginStayTime=0
     localStorage.removeItem('loginTime')
   })