123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import { includeList } from './router.config.js' // 配置信息
- import ajaxService from '@/services/ajax.service.js'
- import UserService from '@/services/user.service'
- const UserApi = new UserService(ajaxService)
- // 校验是否为配置的路径
- const isInclude = (url) => {
- if (!url) return false
- return includeList.some(item => url.indexOf(item.url) > -1)
- }
- // 校验返回页面类型
- const isIncludeType = (url) => {
- if (!url) return false
- return includeList.find(item => url === item.url)
- }
- // 参数
- const defaultParams = {
- accessClient: 1, // 来源 0 网站 1 小程序
- pagePath: '', //页面路径
- accessDuration: 0, //浏览时长初始值为 0
- pageType: '', //页面类型
- pageLabel: '', //页面标签
- userId: 0, //用户Id
- productId: 0, //商品Id
- behaviorType: 1 // 统计类型
- }
- // 页面进入
- const enter = async (current) => {
- await userBehavior(current)
- current.meta.enterTime = Date.now()
- }
- // 页面离开
- const leave = (prev) => {
- prev.meta.leaveTime = Date.now()
- }
- // 页面切换
- const routting = async (current, prev) => {
- // await userBehavior(current, prev)
-
- }
- /* 用户停留时间 */
- async function userBehavior(current) {
- try {
- // if (process.env.NODE_ENV !== 'production') { return }
- if (!current) return
- if (!isInclude(current.path)) return
- console.log('\n')
- console.log('------------------------')
- console.log('当前页面:', current.path)
- // console.log('离开页面:', prev.path)
- // 接口参数设置
- setTimeout(()=>{
- setingSysParams(current)
- },1000)
- // 清除设置缓存
- clearsSysParams(current)
- console.log('\n')
- console.log('------------------------')
- console.log('\n')
- } catch (e) {
- console.log(e)
- console.log('---用户行为轨迹记录异常---')
- }
- }
- // 接口参数设置
- const setingSysParams = async (current) => {
- const sysParams = Object.assign({}, defaultParams)
- const userSync = uni.getStorageSync('userInfo')
- const pageData = isIncludeType(current.path)
- // 筛除掉协销不做统计
- if (userSync.userIdentity === 1) return
- // 筛除掉以下页面路径的重复统计
- if (current.path === '/pages/goods/product' || current.path === '/pages/search/search' ||
- current.path === '/pages/supplier/user/my-shop' || current.path === '/pages/search/search-supplier'
- ) {
- return
- }
- // 参数设置
- sysParams.userId = userSync.userId ? userSync.userId : 0
- sysParams.pagePath = current.fullPath
- sysParams.pageType = pageData ? pageData.pageType : ''
- sysParams.behaviorType = uni.getStorageSync('behaviorType') ? uni.getStorageSync('behaviorType') : 1
- // 根据path获取不同的参数
- if (current.path === '/pages/supplier/user/my-shop') {
- sysParams.shopId = current.query.shopId ? current.query.shopId : 0
- }
- if (current.path === '/pages/goods/product' || current.path === '/pages/second/product/product-details') {
- sysParams.productId = current.query.id ? current.query.id : 0
- sysParams.pageLabel = uni.getStorageSync('productLabel')
- } else {
- sysParams.pageLabel = uni.getStorageSync('pageLabel') ? uni.getStorageSync('pageLabel') : pageData.pageLabel
- }
- console.log('记录路径:', sysParams.pagePath, '标签:', sysParams.pageLabel)
- // 统计接口调用
- await UserApi.userRecordStatistics(sysParams)
- console.log('---用户行为轨迹记录成功---')
- }
- // 清除设置缓存
- const clearsSysParams = async (current) => {
- if (current.path === '/pages/goods/product' || current.path === '/pages/second/product/product-details') {
- uni.removeStorageSync('productLabel')
- } else {
- uni.removeStorageSync('pageLabel')
- }
- uni.removeStorageSync('behaviorType')
- }
- export default { enter, leave, routting }
|