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"></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"></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