Ver Fonte

积分测试

Xiao_123 há 11 meses atrás
pai
commit
50f550034a

+ 15 - 0
src/api/integral.js

@@ -0,0 +1,15 @@
+import request from '@/config/axios'
+
+// 获取规则配置跟踪列表
+export const getRewardEventTrackList = async () => {
+  return await request.get({
+    url: '/admin-api/menduner/reward/event-track/list'
+  })
+}
+
+// 点击
+export const rewardEventTrackClick = async (url) => {
+  return await request.post({
+    url: `/admin-api/menduner/reward/event-track/click?url=${url}`
+  })
+}

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
src/components/Position/item.vue


+ 2 - 1
src/config/axios/index.js

@@ -27,7 +27,8 @@ export default {
   },
   post: async (option) => {
     const res = await request({ method: 'POST', ...option })
-    return res.data
+    const result = res ? res.data : {}
+    return result
   },
   postOriginal: async (option) => {
     const res = await request({ method: 'POST', ...option })

+ 22 - 1
src/config/axios/service.js

@@ -6,6 +6,7 @@ import { config } from '@/config/axios/config'
 import { getCurrentLocaleLang } from '@/utils/lang'
 import { enterpriseRefreshToken, userRefreshToken } from '@/api/common'
 import { getToken, getRefreshToken, removeToken, setToken, setRefreshToken } from '@/utils/auth'
+import { rewardEventTrackClick } from '@/api/integral'
 import errorCode from './errorCode'
 
 import { useI18n } from '@/hooks/web/useI18n'
@@ -32,6 +33,11 @@ let requestList = []
 let isRefreshToken = false
 // 请求白名单,无须token的接口
 const whiteList = ['/login', '/refresh-token']
+const RETURNED_API = '/admin-api/menduner/reward/event-track/click'
+
+// 规则配置跟踪列表
+const eventRules = localStorage.getItem('eventList')
+const eventList = (eventRules ? JSON.parse(eventRules) : []).filter(_e => _e.type === '0')
 
 // 创建axios实例
 const service = axios.create({
@@ -89,6 +95,11 @@ service.interceptors.request.use(
 // response 拦截器
 service.interceptors.response.use(
   async (response) => {
+    if (response.config.url.includes(RETURNED_API)) {
+      const { match, title, point } = response.data.data
+      if (match) Snackbar.success(`恭喜您${title}获得${point}积分`)
+      return
+    }
     const { t } = useI18n()
     let { data } = response
     const config = response.config
@@ -172,9 +183,19 @@ service.interceptors.response.use(
         Snackbar.error(msg)
       }
       return Promise.reject(msg)
-    } else {
+    }
+    
+    // 请求成功后触发获取积分
+    if (!eventList.length) {
       return data
     }
+    const _list = eventList.filter(_e => {
+      return response.config.url.includes(_e.url)
+    })
+    if (_list.length) {
+      rewardEventTrackClick(_list.pop().url)
+    }
+    return data
   },
   (error) => {
     const { t } = useI18n()

+ 5 - 0
src/store/user.js

@@ -5,6 +5,7 @@ import { getUserInfo } from '@/api/personal/user'
 import Snackbar from '@/plugins/snackbar'
 import { timesTampChange } from '@/utils/date'
 import { getBaseInfoDictOfName } from '@/utils/getText'
+import { getRewardEventTrackList } from '@/api/integral'
 
 
 export const useUserStore = defineStore('user',
@@ -60,6 +61,10 @@ export const useUserStore = defineStore('user',
           const data = await api({ id: this.accountInfo.userId })
           this.userInfo = data
           localStorage.setItem('userInfo', JSON.stringify(data))
+
+          // 获取规则配置跟踪列表
+          const eventList = await getRewardEventTrackList()
+          localStorage.setItem('eventList', JSON.stringify(eventList) ?? [])
         } catch (error) {
           Snackbar.error(error.msg)
         }

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff