134 行
3.4 KiB
Plaintext
134 行
3.4 KiB
Plaintext
import { dbGet } from "./db"
|
|
import { PAGE_PVER_TIME, APP_PVER_TIME } from '../config.uts';
|
|
import { ResidenceTimeReturn } from '../../interface.uts'
|
|
import { dbSet, dbRemove } from "./db";
|
|
|
|
// 首次访问时间
|
|
const FIRST_VISIT_TIME_KEY = '__first__visit__time'
|
|
// 最后访问时间
|
|
const LAST_VISIT_TIME_KEY = '__last__visit__time'
|
|
// 访问总数
|
|
const TOTAL_VISIT_COUNT = '__total__visit__count'
|
|
const FIRST_TIME = '__first_time'
|
|
|
|
// 页面停留时间记录key
|
|
const PAGE_RESIDENCE_TIME = '__page__residence__time'
|
|
let First_Page_Residence_Time = 0
|
|
let Last_Page_Residence_Time = 0
|
|
|
|
/**
|
|
* 获取当前时间
|
|
*/
|
|
export const get_time = () : number => {
|
|
return Math.floor(new Date().getTime() / 1000)
|
|
}
|
|
|
|
|
|
/**
|
|
* 设置页面首次访问时间,用户获取页面/应用停留时常
|
|
*/
|
|
export const set_first_time = () : number => {
|
|
// 获取当前时间 ,以下代码获取到是毫秒级时间戳 ,实际上用到是秒级时间戳,所以需要除以1000
|
|
// const time = new Date().getTime()
|
|
let time = get_time()
|
|
dbSet(FIRST_TIME, time)
|
|
return time
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 获取首次访问时间
|
|
*/
|
|
export const get_first_visit_time = () : number => {
|
|
const timeStorge = dbGet<number>(FIRST_VISIT_TIME_KEY)
|
|
let time : number
|
|
if (timeStorge != null && timeStorge != 0) {
|
|
time = timeStorge as number
|
|
} else {
|
|
time = get_time()
|
|
dbSet(FIRST_VISIT_TIME_KEY, time)
|
|
// 首次访问需要 将最后访问时间置 0
|
|
dbRemove(LAST_VISIT_TIME_KEY)
|
|
}
|
|
return time
|
|
}
|
|
|
|
/**
|
|
* 最后访问时间
|
|
*/
|
|
export const get_last_visit_time = () : number => {
|
|
const timeStorge = dbGet<number>(LAST_VISIT_TIME_KEY)
|
|
let time = 0
|
|
if (timeStorge != null && timeStorge != 0) {
|
|
time = timeStorge as number
|
|
}
|
|
|
|
dbSet(LAST_VISIT_TIME_KEY, get_time())
|
|
return time
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取总访问次数
|
|
*/
|
|
export const get_total_visit_count = () : number => {
|
|
const timeStorge = dbGet<number>(TOTAL_VISIT_COUNT)
|
|
let count = 1
|
|
if (timeStorge != null) {
|
|
count = timeStorge as number
|
|
count++
|
|
}
|
|
dbSet(TOTAL_VISIT_COUNT, count)
|
|
return count
|
|
}
|
|
|
|
/**
|
|
* 获取页面 \ 应用停留时间
|
|
*/
|
|
export const get_residence_time = (type : string) : ResidenceTimeReturn => {
|
|
let residenceTime = 0
|
|
const last_time = get_time()
|
|
const first_time = (dbGet(FIRST_TIME) ?? last_time) as number
|
|
if (first_time != 0) {
|
|
residenceTime = last_time - first_time
|
|
}
|
|
// 将毫秒级时间戳转换为秒级时间戳,因为直接获取的是秒级时间戳,所以不需要转换
|
|
// residenceTime = parseInt(residenceTime / 1000)
|
|
residenceTime = residenceTime < 1 ? 1 : residenceTime
|
|
let timeData : ResidenceTimeReturn = {
|
|
residenceTime: residenceTime,
|
|
overtime: false,
|
|
}
|
|
if (type === 'app') {
|
|
let overtime = residenceTime > APP_PVER_TIME ? true : false
|
|
timeData.overtime = overtime
|
|
return timeData
|
|
}
|
|
if (type === 'page') {
|
|
let overtime = residenceTime > PAGE_PVER_TIME ? true : false
|
|
timeData.overtime = overtime
|
|
return timeData
|
|
}
|
|
return timeData
|
|
}
|
|
|
|
/**
|
|
* 设置页面停留时间
|
|
*/
|
|
export const set_page_residence_time = () : number => {
|
|
First_Page_Residence_Time = get_time()
|
|
dbSet(PAGE_RESIDENCE_TIME, First_Page_Residence_Time)
|
|
return First_Page_Residence_Time
|
|
}
|
|
|
|
/**
|
|
* 获取页面停留时间
|
|
*/
|
|
export const get_page_residence_time = () : number => {
|
|
Last_Page_Residence_Time = get_time()
|
|
First_Page_Residence_Time = dbGet<number>(PAGE_RESIDENCE_TIME) ?? 0
|
|
const diff : number = Last_Page_Residence_Time - First_Page_Residence_Time
|
|
return diff
|
|
}
|