From 883630c60e9a941d6cf721cfb4b9160ab406a7dd Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 30 九月 2025 10:26:44 +0800
Subject: [PATCH] 商品行为分析

---
 pages/kitchen/KitchenVideo.vue |  222 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 199 insertions(+), 23 deletions(-)

diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue
index fd8de35..a1367b0 100644
--- a/pages/kitchen/KitchenVideo.vue
+++ b/pages/kitchen/KitchenVideo.vue
@@ -283,6 +283,9 @@
 import {
   changeCollect
 } from "@/api/collect.js";
+import { saveShare, saveShareClickRecord } from "@/api/share.js";
+import storage from "@/utils/storage.js";
+import { getSessionId, userAction,userShare } from "@/api/userAction.js";
 export default {
   computed: {
     hasPlayTime() {
@@ -367,6 +370,7 @@
       },
       loading: false, // 鏄惁姝e湪鍔犺浇
       videoQuery: {
+		source: 'system',
         pageNumber: 1,
         pageSize: 6,
         videoFrom: 'recommend',
@@ -383,10 +387,35 @@
 	  similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
 	  similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
 	  similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
-	  marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
+	  marginBottom: 0 ,// 搴曢儴瀹夊叏鍖哄煙
+	  pageSessionNo:"",
+	  actionParam:{
+		sessionId:'',
+		actionType:"PAGE",
+		joinType:"SELF",
+		pageCode:"KITCHEN_VIDEO",
+		pageParams:"{}",
+		pageStatus:"JOIN",
+		pageType:"LIST"
+		},
+		shareParam:{
+			pageCode:"KITCHEN_VIDEO",
+			shareOption:"{}",
+			pageType:"DETAIL"
+		},
+		shareId:'',
+		
     }
   },
   onShow() {
+	  getSessionId().then(res=>{
+	  		this.pageSessionNo = res.data.data
+	  		if(this.pageSessionNo){
+	  		let param = Object.assign({}, this.actionParam);
+	  			param.sessionId = this.pageSessionNo
+	  			userAction(param)
+	  		}
+	  })	
     // this.showDrawer('showLeft')
     this.loadVideos()
     // 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
@@ -395,24 +424,86 @@
       this.totalHidenTime += duration
     }
   },
+  onUnload() {
+    let param = Object.assign({}, this.actionParam);
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
   onHide() {
     this.startHidenTime = Date.now()
+    let param = Object.assign({}, this.actionParam);
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
   },
-  onLoad() {
-	  this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
-	  // 鑾峰彇鐘舵�佹爮楂樺害
-	  const systemInfo = uni.getSystemInfoSync();
-	  console.log('systemInfo------------------------>',systemInfo.windowHeight)
-	  const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
-	  console.log('menuButtonInfo--------------------------->',menuButtonInfo)
-	  const {top,height} = menuButtonInfo
-	  this.buttonHeight = systemInfo.statusBarHeight+height;
-	  this.menueButton = top;
-	  console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
-	  this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
-	  console.log('-------------leftHeight------------------------>',this.leftHeight)
-	this.getKitchenTypeList();
-	this.loadVideos();
+  onLoad(option) {
+	  if(option.shareId){
+	  		console.log('瑙﹀彂onLoad')
+	  	this.actionParam.shareId = option.shareId;
+	  	this.actionParam.joinType = 'SHARE'
+	  	uni.setStorage({
+	  		key: 'shareId',
+	  		data: option.shareId,
+	  		success: function () {
+	  			console.log('缂撳瓨shareId鎴愬姛');
+	  		}
+	  	});
+	  }
+		this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom;
+		// 鑾峰彇鐘舵�佹爮楂樺害
+	    const systemInfo = uni.getSystemInfoSync();
+	    console.log('systemInfo------------------------>',systemInfo.windowHeight)
+	    const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
+	    console.log('menuButtonInfo--------------------------->',menuButtonInfo)
+	    const {top,height} = menuButtonInfo
+	    this.buttonHeight = systemInfo.statusBarHeight+height;
+	    this.menueButton = top;
+	    console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
+	    this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
+	    console.log('-------------leftHeight------------------------>',this.leftHeight)
+		let queryParam = this.videoQuery;
+		if(option.q){
+			const decodedUrl = decodeURIComponent(decodeURIComponent(option.q));
+			console.log('鍘熷URL:', decodedUrl);
+			
+			// 瑙f瀽URL涓殑鏌ヨ鍙傛暟
+			const params = this.parseUrlParams(decodedUrl);
+			const shareType = params.shareType; 
+			const videoId = params.videoId;  
+			const source = params.source;
+			queryParam.videoId = videoId
+			queryParam.shareType = shareType
+			queryParam.source = source
+			console.log('瑙f瀽鍙傛暟:', { shareType, videoId,source });
+			this.actionParam.pageParams = JSON.stringify(params)
+			this.actionParam.joinType = 'SHARE'
+		}
+		const token = storage.getAccessToken();
+		if(!token){
+			this.wxSilentLogin(() => {
+				// 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
+				if (option.userId && option.videoId) {
+					this.actionParam.pageParams = JSON.stringify(option)
+					this.actionParam.joinType = 'SCAN'
+					queryParam.videoId = option.videoId
+					// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+					saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
+				}
+					this.getKitchenTypeList();
+					this.loadVideos(queryParam);
+					
+			})
+		}else{
+			if (option.userId && option.videoId) {
+				queryParam.videoId = option.videoId
+				// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+				saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
+		}
+		this.getKitchenTypeList();
+		this.loadVideos(queryParam);
+	}
+	
   }, 
    onShareAppMessage(e) {
 	const userInfo = storage.getUserInfo();
@@ -428,13 +519,63 @@
 		shareUser: userInfo.id
 	}
 	saveShare(data)
-  	return {
-  		title: videoInfo.title,
-  		path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
-  		imageUrl: videoInfo.coverUrl
-  	}
+  	// return {
+  	// 	title: videoInfo.title,
+  	// 	path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
+  	// 	imageUrl: videoInfo.coverUrl
+  	// }
+	
+	return new Promise((resolve) => {
+				this.shareId = '';
+				let shareObj ={
+					videoId:videoInfo.id,
+					userId:userInfo.id
+				}
+				this.shareParam.shareOption = JSON.stringify(shareObj)
+				userShare(this.shareParam).then(res => {
+				  this.shareId = res.data.data;
+				  // 褰撹幏鍙栧埌shareId鍚庯紝鍐峳esolve鍒嗕韩閰嶇疆
+				  resolve({
+					title: videoInfo.title,
+					path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}&shareId=${this.shareId}`,
+					imageUrl: videoInfo.coverUrl,
+					success(e) {
+					  console.log("鍒嗕韩鎴愬姛", e);
+					},
+					fail(e) {
+					  console.log('鍒嗕韩澶辫触', e);
+					}
+				  });
+				}).catch(err => {
+				  // 澶勭悊閿欒鎯呭喌锛屼緥濡備娇鐢ㄩ粯璁ゅ弬鏁�
+				  console.error('鑾峰彇鍒嗕韩ID澶辫触', err);
+				  resolve({
+						title: videoInfo.title,
+						path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
+						imageUrl: videoInfo.coverUrl
+				  });
+				});
+	});
   },
   methods: {
+	  // 瑙f瀽URL鍙傛暟
+	  parseUrlParams(url) {
+	    const params = {};
+	    // 澶勭悊鍙兘瀛樺湪鐨刪ash锛堝鏋滄湁鐨勮瘽锛�
+	    const cleanUrl = url.split('#')[0];
+	    const queryStr = cleanUrl.split('?')[1] || '';
+	    
+	    queryStr.split('&').forEach(pair => {
+	      const [key, value] = pair.split('=');
+	      if (key) {
+	        // 濡傛灉鍊煎瓨鍦紝鍒欒В鐮侊紝鍚﹀垯璁句负绌哄瓧绗︿覆
+	        params[key] = value ? decodeURIComponent(value) : '';
+	      }
+	    });
+	    
+	    return params;
+	  },
+	  
 	// 鏌ヨ褰撳墠瑙嗛鐨勫叧鑱旇棰戯紙鎸備簡鍚屼竴鍟嗗搧鐨勶級
 	async getGoodsSimilarly() {
 			  if (this.similarlyLoading || this.similarlyNomore) return Promise.resolve();;
@@ -744,14 +885,48 @@
       })
     },
     // 鍔犺浇瑙嗛鏁版嵁
-    async loadVideos() {
+    async loadVideos(param) {
       console.log(this.loading, this.videoNoMore,this.videoQuery)
       if (this.videoQuery.pageNumber == 1) {
 
       } else if (this.loading || this.videoNoMore) return;
       this.loading = true;
-
+		if(param){
+			console.log("浜岀淮鐮佹壂鐮佹暟鎹墽琛屽湪姝ゅ1")
+			console.log(this.videoQuery)
+			getkitchenVideoList(this.videoQuery).then(res => {
+				console.log(res)
+			  // 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
+			  const data = res.data.data.map(item => {
+			  	return {
+			  		...item,
+			  		updateKey: item.id
+			  	}
+			  })
+			  if (this.videoQuery.pageNumber === 1) {
+			    this.videoList = data;
+			  } else {
+			    this.videoList = [
+			      ...this.videoList,
+			      ...data.filter(
+			          (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
+			      ),
+			    ];
+			  }
+			  this.loading = false;
+			  if (data.length < this.videoQuery.pageSize) {
+			    this.videoNoMore = true;
+			    return;
+			  }
+			  this.videoQuery.pageNumber++;
+			
+			})
+		}else{
+			
+		console.log("浜岀淮鐮佹壂鐮佹暟鎹墽琛屽湪姝ゅ2")
+		console.log(this.videoQuery)
       getkitchenVideoList(this.videoQuery).then(res => {
+		  console.log(res)
         // 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
         const data = res.data.data.map(item => {
         	return {
@@ -777,6 +952,7 @@
         this.videoQuery.pageNumber++;
 
       })
+	  }
     },
 
     // 婊戝姩鍒囨崲瑙嗛

--
Gitblit v1.8.0