nieyuge 2 anni fa
parent
commit
f5c8d07dc0

+ 5 - 1
src/iframe/nft-card.js

@@ -1,7 +1,11 @@
 import { createApp } from 'vue'
 import App from '@/view/iframe/nft/card.vue'
+import CoutomSentry from "@/uilts/sentry.js"
+import AutoLog from '@/log-center/autoLog';
 
 const app = createApp(App);
-import CoutomSentry from "@/uilts/sentry.js"
+
 CoutomSentry.initVue(app)
+
+app.use(AutoLog);
 app.mount('#app');

+ 13 - 1
src/log-center/logEnum.js

@@ -2,6 +2,13 @@ export const logType = {
     'denet': '150',//denet-event-log
 }
 
+export const redPacketType = {
+    nftSale: 2,
+    nftGroupSale: 3,
+    treasure: 4,
+    postEditor: 5,
+}
+
 export const businessType = {
     buttonView: "buttonView",
     buttonClick: "buttonClick",
@@ -56,6 +63,8 @@ export const objectType = {
     create_nfts_button: 'create-nfts-button',
     confirm_transfer_button: 'confirm-transfer-button',
     redeem_button: 'redeem-button',
+    buy_button: 'buy-button',
+    buy_nft_button: 'buy-nft-button',
 }
 
 export const pageSource = {
@@ -73,6 +82,7 @@ export const pageSource = {
     denetMorePage: "denet-more-page",
     denetSelector: "denet-selector",
     nftShopPage: "nft-shop-page",
+    nftPreviewPage: "nft-preview-page",
     denetNftTransferPage: "denet-nft-transfer-page",
     // 待开红包页
     pending_page: 'pending-page',
@@ -89,7 +99,9 @@ export const pageSource = {
     // 成功领取到钱包
     received_success_page: 'received-success-page',
     received_empty_rewards_page: 'received-empty-rewards-page',
-
+    pe_loading_page: 'pe-loading-page',
+    nft_sales_window: 'nft-sales-window',
+    nft_post_page: 'nft-post-page',
 }
 
 export const extParams = {

+ 7 - 0
src/log-center/logger.js

@@ -9,6 +9,13 @@ let mid = '';
  * @extParams 最终上报到阿里云以json字符串存储的参数,如果extparams传入的不是obj会转换成obj
  */
 export async function reportLog(eventData = {}, extParams = {}) {
+    // 过滤空值
+    let dataKey = Object.keys(eventData);
+    dataKey.forEach(key => {
+        if (!eventData[key]) {
+            delete eventData[key]
+        }
+    })
     // 2.reportLog 异常 存储到本地,再上报
     try {
         if (!userInfo) {

+ 16 - 1
src/view/iframe/buy-nft/buy/home.vue

@@ -156,6 +156,16 @@ const clickClose = () => {
 const clickJump = (item) => {
     pay_info.home.sale_plan = item
     router.push({ path: '/pay' });
+    // report
+    Report.reportLog({
+        pageSource: Report.pageSource.nftShopPage,
+        businessType: Report.businessType.buttonClick,
+        objectType: Report.objectType.buy_button,
+        nftProjectId: projectId.value,
+        postEditorPostId: postId.value,
+    }, {
+        'buy-number': item.itemCount
+    })
 }
 
 const setDialogStyle = () => {
@@ -193,6 +203,7 @@ const redeemPost = () => {
                 businessType: Report.businessType.buttonClick,
                 objectType: Report.objectType.redeem_button,
                 nftProjectId: projectId.value,
+                postEditorPostId: postId.value,
             }, {
                 result: 'success'
             })
@@ -234,6 +245,7 @@ const redeemPost = () => {
                 businessType: Report.businessType.buttonClick,
                 objectType: Report.objectType.redeem_button,
                 nftProjectId: projectId.value,
+                postEditorPostId: postId.value,
             }, {
                 result: 'fail'
             })
@@ -258,6 +270,7 @@ const showRedeemLayer = () => {
         businessType: Report.businessType.buttonClick,
         objectType: Report.objectType.redeem_button,
         nftProjectId: projectId.value,
+        postEditorPostId: postId.value,
     })
 }
 
@@ -318,7 +331,8 @@ onMounted(() => {
     Report.reportLog({
         pageSource: Report.pageSource.nftShopPage,
         businessType: Report.businessType.pageView,
-        nftProjectId: nft_project_Id
+        nftProjectId: nft_project_Id,
+        postEditorPostId: postId.value,
     })
 })
 </script>
@@ -490,6 +504,7 @@ onMounted(() => {
                 border-radius: 100px;
                 color: #1D9BF0;
                 min-width: 110px;
+                min-height: 50px;
                 display: flex;
                 justify-content: center;
                 align-items: center;

+ 37 - 0
src/view/iframe/buy-nft/buy/pay.vue

@@ -85,6 +85,7 @@
     </div>
 </template>
 <script setup >
+import Report from "@/log-center/log"
 import router from "@/router/buy-nft.js";
 import { ref, onMounted, inject, reactive } from 'vue'
 import topUp2 from "@/view/iframe/publish/components/top-up2.vue";
@@ -98,6 +99,7 @@ import "element-plus/es/components/message/style/css";
 import { sendChromeTabMessage } from '@/uilts/chromeExtension.js';
 
 let pay_info = inject('pay_info');
+let postId = inject('post_Id');
 let state = reactive({
     loading: {
         show: false
@@ -138,6 +140,16 @@ const clickPlay = () => {
             pay_info.buy_items = res.data.buyItems
             sendChromeTabMessage({ actionType: "FINISH_GROUP_BANNNER" }, () => { })
             router.push({ path: '/open_box' });
+            Report.reportLog({
+                pageSource: Report.pageSource.nftShopPage,
+                businessType: Report.businessType.buttonClick,
+                objectType: Report.objectType.buy_button,
+                nftProjectId: pay_info.home.nftProjectId,
+                postEditorPostId: postId.value,
+            }, {
+                'buy-number': pay_info.home?.sale_plan?.itemCount,
+                result: 'success'
+            })
         } else {
             let msg = ''
             switch (res.code.toString()) {
@@ -166,10 +178,28 @@ const clickPlay = () => {
                 offset: -16,
                 appendTo: document.body
             })
+            Report.reportLog({
+                pageSource: Report.pageSource.nftShopPage,
+                businessType: Report.businessType.buttonClick,
+                objectType: Report.objectType.buy_button,
+                nftProjectId: pay_info.home.nftProjectId,
+                postEditorPostId: postId.value,
+            }, {
+                'buy-number': pay_info.home?.sale_plan?.itemCount,
+                result: 'fail'
+            })
         }
     }).catch(() => {
         state.loading.show = false
     })
+    // report
+    Report.reportLog({
+        pageSource: Report.pageSource.nftPreviewPage,
+        businessType: Report.businessType.buttonClick,
+        objectType: Report.objectType.confirmButton,
+        nftProjectId: pay_info.home.nftProjectId,
+        postEditorPostId: postId.value,
+    })
 }
 // 余额是否同步中
 let asyncIng = ref(false);
@@ -213,6 +243,13 @@ onMounted(() => {
     currentCurrencyInfo.currencyCode = pay_info.home.sale_plan.currencyCode
     getLocalCurrencyInfoByCode();
     setDialogStyle()
+    // report
+    Report.reportLog({
+        pageSource: Report.pageSource.nftPreviewPage,
+        businessType: Report.businessType.pageView,
+        nftProjectId: pay_info.home.nftProjectId,
+        postEditorPostId: postId.value,
+    })
 })
 
 

+ 17 - 2
src/view/iframe/nft/card.vue

@@ -11,7 +11,13 @@
                     <img :src=" require('@/assets/img/icon-ntf-share.png') " />
                 </div>
             </div>
-            <div class="content">
+            <div
+                class="content"
+                v-show-log="{
+                    pageSource: isShare ? Report.pageSource.nft_post_page : Report.pageSource.nft_sales_window,
+                    nftProjectId: nftProjectId,
+                    redPacketType: Report.redPacketType.nftSale,
+                }">
                 <img :src="saleData.windowImagePath" />
             </div>
             <div
@@ -23,7 +29,13 @@
             <div
                 v-else
                 class="buy"
-                @click="buy">
+                @click="buy"
+                v-click-log="{
+                    pageSource: isShare ? Report.pageSource.nft_post_page : Report.pageSource.nft_sales_window,
+                    objectType: Report.objectType.buy_nft_button,
+                    nftProjectId: nftProjectId,
+                    redPacketType: Report.redPacketType.nftSale,
+                }">
                 <img class="guide" v-if="isShowGuide" :src=" require('@/assets/img/icon-arrow.png') " />
                 <button>Buy NFT</button>
             </div>
@@ -32,6 +44,7 @@
 </template>
 
 <script setup>
+import Report from "@/log-center/log"
 import { onBeforeMount, ref, onMounted, onBeforeUnmount } from 'vue'
 import { getTwitterSaleNftProjectInfo, getNftProjectInfo } from '@/http/nft'
 import { pageUrl } from "@/http/configAPI.js"
@@ -40,6 +53,7 @@ const saleData = ref({});
 const isShare = ref(false);
 const isLoading = ref(true);
 const isShowGuide = ref(false);
+const nftProjectId = ref('');
 
 const getSaleInfo = () => {
     chrome.tabs.getCurrent((tab) => {
@@ -152,6 +166,7 @@ onBeforeMount(() => {
     let projectId = searchParmas.get('projectId') || '';
     if (projectId) {
         isShare.value = true;
+        nftProjectId.value = projectId;
         getSaleData(projectId)
     } else {
         getSaleInfo()

+ 7 - 0
src/view/iframe/tool-box/card.vue

@@ -76,6 +76,7 @@ import { guid, getQueryString } from "@/uilts/help";
 import { onMounted, reactive, ref, onBeforeUnmount } from "vue";
 import { ElMessage } from 'element-plus'
 import { reSetBindTwtterId } from '@/http/help.js'
+import Report from "@/log-center/log"
 import "element-plus/es/components/message/style/css";
 let dom_iframe = ref(null)
 let state = reactive({
@@ -148,6 +149,12 @@ onMounted(() => {
         } else {
             state.status = '加载'
             getDetail()
+            // report
+            Report.reportLog({
+                redPacketType: Report.redPacketType.postEditor,
+                businessType: Report.businessType.pageView,
+                pageSource: Report.pageSource.pe_loading_page,
+            });
         }
     })