绿满眶商城微信小程序-uniapp
xiangpei
7 天以前 8cdb055657aff3167f38b31e41ccfe4b684ba457
视频分享(TODO:点击链接进入处理)、静默登录
3个文件已修改
1个文件已添加
139 ■■■■■ 已修改文件
App.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/connect.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/share.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabbar/index/home.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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需要和自定义的相同 */
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
    });
}
api/share.js
New file
@@ -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
  });
}
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>