From 8cdb055657aff3167f38b31e41ccfe4b684ba457 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 16 六月 2025 20:26:41 +0800
Subject: [PATCH] 视频分享(TODO:点击链接进入处理)、静默登录

---
 api/share.js                |   36 ++++++++++++
 api/connect.js              |   13 ++++
 App.vue                     |    6 +-
 pages/tabbar/index/home.vue |   84 +++++++++++++++++++++++++++
 4 files changed, 134 insertions(+), 5 deletions(-)

diff --git a/App.vue b/App.vue
index a2d5c1e..0bddd6a 100644
--- a/App.vue
+++ b/App.vue
@@ -255,9 +255,9 @@
 	@font-face {
 	  font-family: 'iconfont';  /* Project id 4921691 */
 	  src: 
-	       url('//at.alicdn.com/t/c/font_4921691_nm6or3sic2.woff2?t=1748867592712') format('woff2'),
-	       url('//at.alicdn.com/t/c/font_4921691_nm6or3sic2.woff?t=1748867592712') format('woff'),
-	       url('//at.alicdn.com/t/c/font_4921691_nm6or3sic2.ttf?t=1748867592712') format('truetype');
+	       url('//at.alicdn.com/t/c/font_4921691_3vdxatwdwe9.woff2?t=1750062394172') format('woff2'),
+	       url('//at.alicdn.com/t/c/font_4921691_3vdxatwdwe9.woff?t=1750062394172') format('woff'),
+	       url('//at.alicdn.com/t/c/font_4921691_3vdxatwdwe9.ttf?t=1750062394172') format('truetype');
 	}
 	.iconfont {
 		  /* font-family闇�瑕佸拰鑷畾涔夌殑鐩稿悓 */
diff --git a/api/connect.js b/api/connect.js
index 6fe5e98..1dbdb5a 100644
--- a/api/connect.js
+++ b/api/connect.js
@@ -59,3 +59,16 @@
 		params
 	});
 }
+
+
+/**
+ * 灏忕▼搴忛潤榛樼櫥褰�
+ * @param params
+ */
+export function silentLogin(params) {
+	return http.request({
+		url: 'passport/connect/miniProgram/silent-login',
+		method: Method.GET,
+		params
+	});
+}
diff --git a/api/share.js b/api/share.js
new file mode 100644
index 0000000..3e3dd77
--- /dev/null
+++ b/api/share.js
@@ -0,0 +1,36 @@
+/**
+ * 鍒嗕韩鐩稿叧API
+ */
+
+import { http, Method } from "@/utils/request.js";
+
+
+
+
+/**
+ * 淇濆瓨鍒嗕韩
+ * 
+ * @param data
+ */
+ export function saveShare(data) {
+  return http.request({
+    url: "/lmk/share",
+    method: Method.POST,
+    needToken: true,
+    data: data
+  });
+}
+
+/**
+ * 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+ * 
+ * @param data
+ */
+ export function saveShareClickRecord(data) {
+  return http.request({
+    url: "/lmk/share/click/record",
+    method: Method.POST,
+    needToken: true,
+    data: data
+  });
+}
diff --git a/pages/tabbar/index/home.vue b/pages/tabbar/index/home.vue
index 57c31bb..d0904d5 100644
--- a/pages/tabbar/index/home.vue
+++ b/pages/tabbar/index/home.vue
@@ -134,6 +134,12 @@
             <text class="iconfont">&#xe7f7;</text>
             <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
           </view>
+		  <view class="action-item">
+			  <button open-type="share" class="custom-share-btn" :data-obj="item">
+			        <text class="iconfont">&#xe602;</text>
+			      </button>
+		     
+		  </view>
         </view>
 		
       </swiper-item>
@@ -226,6 +232,10 @@
 <script>
 import { getRecommendVideos, savePlayRecord, subscribe, getVideoComments, addVideoComment, thubmsUpComment, cancelThubmsUpComment } from "@/api/video.js";
 import { changeCollect } from "@/api/collect.js";
+import { saveShare } from "@/api/share.js";
+import { silentLogin } from "@/api/connect.js";
+import { getUserInfo } from "@/api/members";
+import storage from "@/utils/storage.js";
 export default {
   computed: {
 	    hasPlayTime() {
@@ -301,7 +311,14 @@
     }
   },
   onShow() {
-	  this.loadVideos()
+	  // const token = storage.getAccessToken();
+	  // if (! token) {
+		 //  this.wxSilentLogin(() => {
+			//   this.loadVideos();
+		 //  })
+	  // } else { 
+	  // 	  this.loadVideos();
+	  // }
 	  // 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
 	  if(this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
 		  const duration = Date.now() - this.startHidenTime
@@ -312,13 +329,65 @@
   	this.startHidenTime = Date.now()
   },
   onLoad() {
-	  this.loadVideos();
+	  const token = storage.getAccessToken();
+	  if (! token) {
+		  this.wxSilentLogin(() => {
+			  this.loadVideos();
+		  })
+	  } else { 
+		this.loadVideos();
+	  }
   },
   onReady() {
     // 鍒濆鍖栬棰戜笂涓嬫枃
     this.initVideoContexts();
   },
+  onShareAppMessage(e) {
+	const userInfo = storage.getUserInfo();
+	if(!userInfo) {
+		console.log("鏈櫥褰曚笉鑳藉垎浜�");
+		return
+	}
+	const videoInfo = e.target.dataset.obj;
+	// 淇濆瓨鍒嗕韩璁板綍
+	const data = {
+		shareType: 'video',
+		refId: videoInfo.id,
+		shareUser: userInfo.id
+	}
+	saveShare(data)
+  	return {
+  		title: videoInfo.title,
+  		path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
+  		imageUrl: videoInfo.coverUrl
+  	}
+  },
   methods: {
+	  // 闈欓粯鐧诲綍
+	  wxSilentLogin(callback) {
+		  //鑾峰彇code
+		  uni.login({
+		    success: (codeRes) => {
+		      if(codeRes.errMsg === "login:ok") {
+				// 闈欓粯鐧诲綍
+				silentLogin({code: codeRes.code}).then(res => {
+					storage.setAccessToken(res.data.data.accessToken);
+					storage.setRefreshToken(res.data.data.refreshToken);
+					//鑾峰彇鐢ㄦ埛淇℃伅
+					getUserInfo().then((user) => {
+					  storage.setUserInfo(user.data.result);
+					  storage.setHasLogin(true);
+					  callback()
+					});
+				})
+		      } else {
+		        uni.showToast({
+		          title: "绯荤粺寮傚父锛岃鑱旂郴绠$悊鍛橈紒"
+		        })
+		      }
+		    },
+		  });
+	  },
 	  // 鐐瑰嚮鍟嗗搧璺宠浆
 	  jumpToPay(videoId) {
 		uni.navigateTo({
@@ -1218,4 +1287,15 @@
 	  width: 100%;
 	  height: 100%;
 	}
+	.custom-share-btn {
+	  font-size: unset;
+	  background: none;
+	  padding: 0;
+	  margin: 0;
+	  line-height: normal;
+	  border: none;
+	}
+	.custom-share-btn::after {
+	  border: none;
+	}
 </style>
\ No newline at end of file

--
Gitblit v1.8.0