瀏覽代碼

postEdit report

nieyuge 2 年之前
父節點
當前提交
0268313c52

+ 3 - 0
src/iframe/tool-box-buy-nft.js

@@ -1,5 +1,8 @@
 import { createApp } from 'vue'
 import App from '@/view/iframe/tool-box/buy-nft.vue'
+import AutoLog from '@/log-center/autoLog';
 
 const app = createApp(App);
+
+app.use(AutoLog);
 app.mount('#app');

+ 12 - 0
src/log-center/logEnum.js

@@ -65,6 +65,13 @@ export const objectType = {
     redeem_button: 'redeem-button',
     buy_button: 'buy-button',
     buy_nft_button: 'buy-nft-button',
+    custom_link_button: 'custom-link-button',
+    history_button: 'history-button',
+    app_button: 'app-button',
+    enter_url_button: 'enter-url-button',
+    top_right_button: 'top-right-button',
+    fullscreen_button: 'fullscreen-button',
+    encrypte_nft_button: 'encrypte-nft-button',
 }
 
 export const pageSource = {
@@ -100,8 +107,13 @@ export const pageSource = {
     received_success_page: 'received-success-page',
     received_empty_rewards_page: 'received-empty-rewards-page',
     pe_loading_page: 'pe-loading-page',
+    pe_display_page: 'pe-display-page',
     nft_sales_window: 'nft-sales-window',
     nft_post_page: 'nft-post-page',
+    main_page_dashboard: 'main-page-dashboard',
+    post_editor_guide_page_left: 'post-editor-guide-page-left',
+    post_editor_guide_page_right: 'post-editor-guide-page-right',
+    buy_posteditor_nft_dialog: 'buy-posteditor-nft-dialog',
 }
 
 export const extParams = {

+ 1 - 1
src/log-center/logger.js

@@ -12,7 +12,7 @@ export async function reportLog(eventData = {}, extParams = {}) {
     // 过滤空值
     let dataKey = Object.keys(eventData);
     dataKey.forEach(key => {
-        if (!eventData[key]) {
+        if (eventData[key] === '') {
             delete eventData[key]
         }
     })

+ 17 - 4
src/view/iframe/publish/components/select-publish-content.vue

@@ -1,6 +1,11 @@
 <template>
     <div class="overlay" v-if="visible">
-        <div class="content">
+        <div
+            class="content"
+            v-show-log="{
+                businessType: Report.businessType.pageView,
+                pageSource: Report.pageSource.main_page_dashboard,
+            }">
             <!-- 头部 -->
             <div class="head">
                 <div class="left">
@@ -19,7 +24,12 @@
                 <div v-for="(item, index) in list"
                     :key="index"
                     class="item"
-                    @click="clickItem(item, index)">
+                    @click="clickItem(item, index)"
+                    v-click-log="{
+                        businessType: Report.businessType.buttonClick,
+                        pageSource: Report.pageSource.main_page_dashboard,
+                        objectType: item.btnType
+                    }">
                     <img :src="item.icon" alt="">
                     {{item.txt}}
                 </div>
@@ -29,17 +39,20 @@
 </template>
 
 <script setup>
+import Report from "@/log-center/log"
 import { ref, watch, reactive, defineProps, onMounted } from "vue";
 let list = reactive([
     {
         icon: require('@/assets/svg/img-select-giveaway.svg'),
         type: 'REDPACKET',
-        txt: 'Giveaway'
+        txt: 'Giveaway',
+        btnType: 'giveaway-button',
     },
     {
         icon: require('@/assets/svg/img-select-tool-box.svg'),
         type: 'TOOL_BOX',
-        txt: 'Tool Box'
+        txt: 'Tool Box',
+        btnType: 'toolbox-button',
     }
 ])
 

+ 43 - 3
src/view/iframe/publish/tool-box/child/editor.vue

@@ -52,6 +52,7 @@
 <script setup>
 import { ref, defineProps, defineEmits, onMounted } from "vue";
 import axios from 'axios';
+import Report from "@/log-center/log"
 import { message } from "ant-design-vue";
 import { convertUrl, getAllPostEditorAppData, checkInputUrlInBlacklist } from "@/http/toolBoxApi";
 import { setChromeStorage, getChromeStorage } from "@/uilts/chromeExtension"
@@ -80,6 +81,14 @@ const searchHandler = async (_params) => {
   let siteTitle = '', favicon = '';
   let timer = null;
 
+  // report
+  Report.reportLog({
+    pageSource: Report.pageSource.publisherDialog,
+    businessType: Report.businessType.buttonClick,
+    objectType: Report.objectType.custom_link_button,
+  }, {
+    type: 3
+  });
 
   if (!siteUrl.value) {
     return;
@@ -184,14 +193,23 @@ const getTitleByHtmlStr = (str = '') => {
 
 const clickHistoryAppHandler =  debounce(function(params) {
   if (params.appId) {
-    clickAppHandler(params);
+    clickAppHandler(params, false);
   } else {
     siteUrl.value = params.defaultUrl;
     searchHandler(params);
   }
+
+  Report.reportLog({
+    pageSource: Report.pageSource.publisherDialog,
+    businessType: Report.businessType.buttonClick,
+    objectType: Report.objectType.history_button,
+  }, {
+    appId: params && params.appId || '',
+    type: 3
+  });
 }, 800);
 
-const clickAppHandler =  debounce(function(params) {
+const clickAppHandler =  debounce(function(params, isReport = true) {
   let { createType, defaultUrl, appId, linkImagePath } = params;
   switch (createType) {
     case 1:
@@ -201,6 +219,17 @@ const clickAppHandler =  debounce(function(params) {
       openWindow(params);
       break;
   }
+
+  if (isReport) {
+    Report.reportLog({
+      pageSource: Report.pageSource.publisherDialog,
+      businessType: Report.businessType.buttonClick,
+      objectType: Report.objectType.app_button,
+    }, {
+      appId: appId || '',
+      type: 3
+    });
+  }
 }, 800);
 
 const openWindow = (params) => {
@@ -246,7 +275,18 @@ const createGuideWindow = (params, isUpdate = false) => {
     openWindowList.push(window2);
 
     setChromeStorage({ guideAppWindowList: JSON.stringify({list: openWindowList})});
-  })  
+
+    // report
+    Report.reportLog({
+      pageSource: Report.pageSource.post_editor_guide_page_left,
+      businessType: Report.businessType.pageView,
+    });
+
+    Report.reportLog({
+      pageSource: Report.pageSource.post_editor_guide_page_right,
+      businessType: Report.businessType.pageView,
+    });
+  })
 }
 
 const getAppList = () => {

+ 8 - 0
src/view/iframe/publish/tool-box/child/guide.vue

@@ -27,6 +27,7 @@
 <script setup>
 import { ref, reactive, onMounted } from "vue";
 import { checkURL } from "@/uilts/help"
+import Report from "@/log-center/log"
 import { setChromeStorage, getChromeStorage } from "@/uilts/chromeExtension"
 import { message } from "ant-design-vue";
 
@@ -42,6 +43,13 @@ let pageData = reactive({
 const confirm = async () => {
     siteUrl.value = siteUrl.value.trim();
 
+    // report
+    Report.reportLog({
+      pageSource: Report.pageSource.post_editor_guide_page_right,
+      businessType: Report.businessType.buttonClick,
+      objectType: Report.objectType.enter_url_button,
+    });
+
     if (!checkURL(siteUrl.value)) {
         message.info('Incorrect URL entered');
         return;

+ 14 - 2
src/view/iframe/tool-box/buy-nft.vue

@@ -1,5 +1,9 @@
 <template>
-    <div class="nft-layer">
+    <div
+        class="nft-layer"
+        v-show-log="{
+            pageSource: Report.pageSource.buy_posteditor_nft_dialog,
+        }">
         <div class="title">
             <img @click="close" :src=" require('@/assets/svg/icon-close.svg') " />
             <span class="text">Unlock by Ruomeng NFT</span>
@@ -11,7 +15,14 @@
             <div class="tips">
                 <span>only Ruomeng NFT holder can view the content</span>
             </div>
-            <div class="btn" v-if="btnStatus" @click="buy">
+            <div
+                class="btn"
+                v-if="btnStatus"
+                @click="buy"
+                v-click-log="{
+                    pageSource: Report.pageSource.buy_posteditor_nft_dialog,
+                    objectType: Report.objectType.buy_button,
+                }">
                 <span>Buy NFT to Participate</span>
             </div>
             <div class="btn disabled" v-else>
@@ -22,6 +33,7 @@
 </template>
 
 <script setup>
+import Report from "@/log-center/log"
 import { ref, onBeforeMount } from 'vue';
 import { ElMessage } from 'element-plus';
 import { getQueryString } from '@/uilts/help';

+ 103 - 6
src/view/iframe/tool-box/card.vue

@@ -96,6 +96,7 @@ let state = reactive({
 
 let dom = {}
 let nftAuthINfo = ref(null)
+let loadTime = (new Date).getTime()
 
 let props = defineProps({
     pre_view: {
@@ -153,12 +154,6 @@ onMounted(() => {
         } else {
             state.status = '加载'
             getDetail()
-            // report
-            Report.reportLog({
-                redPacketType: Report.redPacketType.postEditor,
-                businessType: Report.businessType.pageView,
-                pageSource: Report.pageSource.pe_loading_page,
-            });
         }
     })
 
@@ -221,7 +216,17 @@ const getDetail = () => {
                         getNftInfoStatus()
                     }
                 })
+            } else {
+                reportSucc(false)
             }
+            // report
+            Report.reportLog({
+                redPacketType: Report.redPacketType.postEditor,
+                businessType: Report.businessType.pageView,
+                pageSource: Report.pageSource.pe_loading_page,
+                postId: state.postId || '',
+                postEditorUrl: state.detail.convertUrl
+            });
         } else {
             state.status = '网页错误'
         }
@@ -241,12 +246,48 @@ const getNftInfoStatus = () => {
             getChromeStorage('post_id_list', (list) => {
                 if (list && list.indexOf(state.postId) !== -1 && nftAuthINfo.value?.certStatus === 1) {
                     state.showMask = false;
+                    // report
+                    reportSucc()
+                } else {
+                    // report
+                    reportFail()
                 }
             })
         }
     })
 }
 
+const reportSucc = (isEncrypted = true) => {
+    let params = {}
+    if (isEncrypted) {
+        params['nft-encrypted-status'] = 1;
+    }
+    // report
+    Report.reportLog({
+        redPacketType: Report.redPacketType.postEditor,
+        businessType: Report.businessType.pageView,
+        pageSource: Report.pageSource.pe_display_page,
+        postId: state.postId || '',
+        postEditorUrl: state.detail.convertUrl,
+        ...params,
+    }, {
+        'loading-time': (new Date).getTime() - loadTime,
+    });
+}
+
+const reportFail = () => {
+    Report.reportLog({
+        redPacketType: Report.redPacketType.postEditor,
+        businessType: Report.businessType.pageView,
+        pageSource: Report.pageSource.pe_display_page,
+        postId: state.postId || '',
+        postEditorUrl: state.detail.convertUrl,
+        'nft-encrypted-status': 0,
+    }, {
+        'loading-time': (new Date).getTime() - loadTime,
+    });
+}
+
 const confirmStatus = () => {
     getChromeStorage('userInfo', (_userInfo) => {
         if (!_userInfo) {
@@ -269,6 +310,25 @@ const confirmStatus = () => {
             }
         }
     })
+
+    // report
+    let params = {}
+    if (nftAuthINfo.value?.certStatus === 1) {
+        if (state.showMask) {
+            params['nft-encrypted-status'] = 0
+        } else {
+            params['nft-encrypted-status'] = 1
+        }
+    }
+    Report.reportLog({
+        redPacketType: Report.redPacketType.postEditor,
+        businessType: Report.businessType.buttonClick,
+        pageSource: Report.pageSource.pe_display_page,
+        objectType: Report.objectType.encrypte_nft_button,
+        postId: state.postId || '',
+        postEditorUrl: state.detail.convertUrl,
+        ...params,
+    });
 }
 
 const succBack = () => {
@@ -318,6 +378,25 @@ const clickFixed = () => {
             })
         }
     })
+
+    // report
+    let params = {}
+    if (nftAuthINfo.value?.certStatus === 1) {
+        if (state.showMask) {
+            params['nft-encrypted-status'] = 0
+        } else {
+            params['nft-encrypted-status'] = 1
+        }
+    }
+    Report.reportLog({
+        redPacketType: Report.redPacketType.postEditor,
+        businessType: Report.businessType.buttonClick,
+        pageSource: Report.pageSource.pe_display_page,
+        objectType: Report.objectType.top_right_button,
+        postId: state.postId || '',
+        postEditorUrl: state.detail.convertUrl,
+        ...params,
+    });
 }
 
 // 固定
@@ -386,6 +465,24 @@ const clickFull = () => {
             state.show_alert = true
         }
     })
+    // report
+    let params = {}
+    if (nftAuthINfo.value?.certStatus === 1) {
+        if (state.showMask) {
+            params['nft-encrypted-status'] = 0
+        } else {
+            params['nft-encrypted-status'] = 1
+        }
+    }
+    Report.reportLog({
+        redPacketType: Report.redPacketType.postEditor,
+        businessType: Report.businessType.buttonClick,
+        pageSource: Report.pageSource.pe_display_page,
+        objectType: Report.objectType.fullscreen_button,
+        postId: state.postId || '',
+        postEditorUrl: state.detail.convertUrl,
+        ...params,
+    });
 }
 
 const msgListener = (req, sender, sendResponse) => {