Explorar el Código

活动增加音频播放埋点

jwyu hace 2 años
padre
commit
08560cabd1
Se han modificado 3 ficheros con 103 adiciones y 10 borrados
  1. 18 0
      api/activity.js
  2. 44 7
      pages-activity/detail.vue
  3. 41 3
      pages/activity/activity.vue

+ 18 - 0
api/activity.js

@@ -61,3 +61,21 @@ export const apiActivityCancelRegister = (params) => {
 export const apiActivityAudios=params=>{
     return httpGet('/activity/getActivityVoices',params)
 }
+
+/**
+ * 新增活动音频播放记录
+ * @param primary_id 音频ID
+ * @param extend_id 活动ID
+ * @param source 来源:1-小程序;2-小程序PC端;3-公众号;4-Web PC端
+ * @param from_page 来源页面:eg:活动详情
+ */
+export const apiActivityAudioPlayRecordAdd=params=>{
+    return httpPost('/activity/voice_log/add',{...params,source:1})
+}
+
+/**
+ * 新增活动音频播放记录
+ */
+export const apiActivityAudioPlayRecordUpate=params=>{
+    return httpPost('/activity/voice_log/update',params)
+}

+ 44 - 7
pages-activity/detail.vue

@@ -183,7 +183,9 @@ import {
     apiActivityAddRemind,
     apiActivityCancelRemind,
     apiActivityRegister,
-    apiActivityCancelRegister
+    apiActivityCancelRegister,
+    apiActivityAudioPlayRecordAdd,
+    apiActivityAudioPlayRecordUpate
 } from "@/api/activity";
 import {apiGetSceneToParams} from '@/api/common'
 import {baseApiUrl} from '@/utils/config.js'
@@ -233,6 +235,7 @@ export default {
             activeAudioTime:0,//选择的音频数据时长
             audioCurrentTime:0,//音频正常播放的时间
             audioPlayStatus:false,//音频是否正在播放
+            recordId:0,//新增音频播放记录成功的id
 
             pupData: {
                 show: false,
@@ -266,6 +269,7 @@ export default {
                 audioCurrentTime:this.audioCurrentTime,//音频播放实时时间
                 audioTime:this.activeAudioTime,//当前音频时间
                 audioCurrentUrl:this.activeAudioUrl,//当前音频地址
+                recordId:this.recordId
             }
             uni.setStorageSync('audioMsg', JSON.stringify(obj))
         }
@@ -317,14 +321,42 @@ export default {
                 //     this.globalBgMusic.play()
                 // }
             }else{
+                let obj=uni.getStorageSync('audioMsg')
+                if(JSON.parse(obj).audioCurrentUrl){
+                    this.handleAudioPlayRecordUpdate(this.globalBgMusic.currentTime)
+                }
                 this.handlePlayAudio(item)
             }
         },
 
+        //新增音频播放统计
+        async handleAudioPlayRecordAdd(primary_id,extend_id){
+            const res=await apiActivityAudioPlayRecordAdd({
+                primary_id:Number(primary_id),
+                extend_id:Number(extend_id),
+                from_page:'活动详情'
+            })
+            if(res.code===200){
+                console.log('新增音频播放记录成功');
+                this.recordId=res.data.id
+            }
+        },
+
+        //更新音频播放记录
+        async handleAudioPlayRecordUpdate(time){
+            console.log(time);
+            const res=await apiActivityAudioPlayRecordUpate({
+                id:Number(this.recordId),
+                stop_seconds:time?parseInt(time):Number(this.audioCurrentTime)
+            })
+            if(res.code===200){
+                console.log('更新音频播放记录成功');
+            }
+        },
+
         // 播放音频
         handlePlayAudio(e){
-            console.log(e);
-            
+            this.handleAudioPlayRecordAdd(e.activity_voice_id,e.activityId)
             this.globalBgMusic.title=e.voiceName
             this.globalBgMusic.src=e.voiceUrl
 
@@ -350,13 +382,15 @@ export default {
             })
             this.globalBgMusic.onStop(()=>{
                 console.log('onStop');
-               this.audioPlayStatus=false
-               this.activeAudioUrl=''
-               this.activeAudioTime=0
-               this.audioCurrentTime=0
+                this.handleAudioPlayRecordUpdate()
+                this.audioPlayStatus=false
+                this.activeAudioUrl=''
+                this.activeAudioTime=0
+                this.audioCurrentTime=0
             })
             this.globalBgMusic.onEnded(()=>{
                 console.log('onEnded');
+                this.handleAudioPlayRecordUpdate()
                 this.audioPlayStatus=false
                 this.handleAudioBtn('next','auto')
             })
@@ -391,6 +425,7 @@ export default {
 
             if(type==='before'){
                 if(!this.isFirstAudio){
+                    this.handleAudioPlayRecordUpdate()
                     this.audioList.forEach((_item,index)=>{
                         if(_item.voiceUrl==this.activeAudioUrl){
                             this.handlePlayAudio(this.audioList[index-1])
@@ -401,6 +436,7 @@ export default {
 
             if(type==='next'){
                 if(!this.isLastAudio){
+                    this.handleAudioPlayRecordUpdate()
                     this.audioList.forEach((_item,index)=>{
                         if(_item.voiceUrl==this.activeAudioUrl){
                             this.handlePlayAudio(this.audioList[index+1])
@@ -441,6 +477,7 @@ export default {
                         this.audioPlayStatus=JSON.parse(obj).play
                         this.handleAudioFun()
                     }
+                    this.recordId=JSON.parse(obj).recordId
                 }
             }
         },

+ 41 - 3
pages/activity/activity.vue

@@ -205,7 +205,9 @@ import {
     apiActivityCancelRemind, 
     apiActivityRegister,
     apiActivityCancelRegister,
-    apiActivityAudios
+    apiActivityAudios,
+    apiActivityAudioPlayRecordAdd,
+    apiActivityAudioPlayRecordUpate
 } from '@/api/activity'
 import {apiApplyPermission,apiUserInfo} from '@/api/user'
 import sharePoster from '../../components/sharePoster/sharePoster.vue'
@@ -309,6 +311,7 @@ export default {
                 audioCurrentTime:0,//音频播放实时时间
                 audioTime:0,//当前音频时间
                 audioCurrentUrl:'',//当前音频地址
+                recordId:0,//新增音频播放记录成功的id
             },
 
             showPoster:true
@@ -377,6 +380,31 @@ export default {
             const endTime=moment(end).format('HH:mm');
             return `${day} ${startTime}-${endTime} ${week}`
         },
+
+        //新增音频播放统计
+        async handleAudioPlayRecordAdd(primary_id,extend_id){
+            const res=await apiActivityAudioPlayRecordAdd({
+                primary_id:Number(primary_id),
+                extend_id:Number(extend_id),
+                from_page:'活动列表'
+            })
+            if(res.code===200){
+                console.log('新增音频播放记录成功');
+                this.currentAudioMsg.recordId=res.data.id
+            }
+        },
+
+        //更新音频播放记录
+        async handleAudioPlayRecordUpdate(){
+            const res=await apiActivityAudioPlayRecordUpate({
+                id:Number(this.currentAudioMsg.recordId),
+                stop_seconds:Number(this.currentAudioMsg.audioCurrentTime)
+            })
+            if(res.code===200){
+                console.log('更新音频播放记录成功');
+            }
+        },
+
         // 初始化音频状态
         initAudio(){
             console.log('音频src',this.globalBgMusic.src);
@@ -396,6 +424,7 @@ export default {
                     audioCurrentTime:0,//音频播放实时时间
                     audioTime:0,//当前音频时间
                     audioCurrentUrl:'',//当前音频地址
+                    recordId:0
                 }
             }
         },
@@ -408,6 +437,10 @@ export default {
             if(this.currentAudioMsg.activityId!=item.activityId){
                 const res=await apiActivityAudios({activity_id: Number(item.activityId)})
                 if(res.code===200){
+                    // 如果当前有其他的在播放则要掉一次更新
+                    if(this.currentAudioMsg.activityId){
+                        this.handleAudioPlayRecordUpdate()
+                    }
                     if(res.data){
                         this.currentAudioMsg.activityId=item.activityId
                         this.currentAudioMsg.list=res.data
@@ -459,6 +492,7 @@ export default {
 
         // 播放音频
         handlePlayAudio(item){
+            this.handleAudioPlayRecordAdd(item.activity_voice_id,item.activityId)
             this.globalBgMusic.src=item.voiceUrl
             this.globalBgMusic.title=item.voiceName
 
@@ -480,14 +514,16 @@ export default {
                 this.currentAudioMsg.play=false
             })
             this.globalBgMusic.onStop(()=>{
-                this.currentAudioMsg.play=false
+                console.log('stop',this.currentAudioMsg);
+                this.handleAudioPlayRecordUpdate()
                 this.currentAudioMsg.play=false
                 this.currentAudioMsg.audioCurrentTime=0
                 this.currentAudioMsg.audioTime=0
                 this.currentAudioMsg.audioCurrentUrl=0
             })
             this.globalBgMusic.onEnded(()=>{
-                console.log('onEnded');
+                console.log('onEnded',this.currentAudioMsg);
+                this.handleAudioPlayRecordUpdate()
                 this.currentAudioMsg.play=false
                 this.handleAudioBtn('next','auto')
             })
@@ -518,6 +554,7 @@ export default {
             }
             if(type==='before'){
                 if(!this.isFirstAudio){
+                    this.handleAudioPlayRecordUpdate()
                     this.currentAudioMsg.list.forEach((_item,index)=>{
                         if(_item.voiceUrl==this.currentAudioMsg.audioCurrentUrl){
                             this.handlePlayAudio(this.currentAudioMsg.list[index-1])
@@ -528,6 +565,7 @@ export default {
 
             if(type==='next'){
                 if(!this.isLastAudio){
+                    this.handleAudioPlayRecordUpdate()
                     this.currentAudioMsg.list.forEach((_item,index)=>{
                         if(_item.voiceUrl==this.currentAudioMsg.audioCurrentUrl){
                             this.handlePlayAudio(this.currentAudioMsg.list[index+1])