소스 검색

课后训练和课件播放增加会员效验

skyblued 2 년 전
부모
커밋
ea83a5434f
3개의 변경된 파일59개의 추가작업 그리고 3개의 파일을 삭제
  1. 4 0
      src/views/coursewarePlay/index.tsx
  2. 6 3
      src/views/exercise-after-class/index.tsx
  3. 49 0
      src/views/hook/useFee.ts

+ 4 - 0
src/views/coursewarePlay/index.tsx

@@ -51,6 +51,7 @@ import 'swiper/less'
 import 'swiper/less/effect-fade'
 import 'swiper/less/effect-flip'
 import 'swiper/less/effect-creative'
+import { handleCheckVip } from '../hook/useFee'
 
 export default defineComponent({
   name: 'CoursewarePlay',
@@ -300,6 +301,9 @@ export default defineComponent({
 
     const swiperDom = ref()
     onMounted(() => {
+      const hasVip = handleCheckVip()
+      console.error("🚀 ~ hasVip", hasVip)
+      if (!hasVip) return;
       getDetail()
       getCourseSchedule()
       window.addEventListener('message', iframeHandle)

+ 6 - 3
src/views/exercise-after-class/index.tsx

@@ -1,4 +1,4 @@
-import { Icon, showConfirmDialog, Slider, Swipe, SwipeItem } from 'vant'
+import { Icon, showConfirmDialog, showDialog, Slider, Swipe, SwipeItem } from 'vant'
 import {
   defineComponent,
   onMounted,
@@ -26,6 +26,7 @@ import { browser, getSecondRPM } from '@/helpers/utils'
 import qs from 'query-string'
 import { Vue3Lottie } from 'vue3-lottie'
 import playLoadData from '../coursewarePlay/datas/data.json'
+import { handleCheckVip } from '../hook/useFee'
 
 const materialType = {
   视频: 'VIDEO',
@@ -33,6 +34,7 @@ const materialType = {
   曲目: 'SONG'
 }
 
+
 export default defineComponent({
   name: 'exercise-after-class',
   setup() {
@@ -144,6 +146,7 @@ export default defineComponent({
     onMounted(async () => {
       const trainings = await getTrainingRecord()
       setRecord(trainings)
+      handleCheckVip()
     })
     // 返回
     const goback = () => {
@@ -210,8 +213,8 @@ export default defineComponent({
     // 判断练习是否完成
     const handleExerciseCompleted = () => {
       if (
-        data?.videoData.trainingTimes != 0 &&
-        data?.videoData.trainingTimes + '' === data.videoData?.trainingContent?.practiceTimes
+        data?.videoData?.trainingTimes != 0 &&
+        data?.videoData?.trainingTimes + '' === data.videoData?.trainingContent?.practiceTimes
       ) {
         // handleStopVideo()
         const itemIndex = data.trainings.findIndex(

+ 49 - 0
src/views/hook/useFee.ts

@@ -0,0 +1,49 @@
+import { postMessage } from '@/helpers/native-message'
+import { browser } from '@/helpers/utils'
+import { state } from '@/state'
+import { showDialog } from 'vant'
+
+const gotoMemberCenter = () => {
+  postMessage({ api: 'back' })
+  const browserInfo = browser()
+  if (browserInfo.isApp) {
+    const url = window.location.origin + location.pathname + `#/memberCenter`
+    postMessage({
+      api: 'openWebView',
+      content: {
+        url: url,
+        orientation: 1
+      }
+    })
+    return
+  }
+  location.href = location.origin + location.pathname + `#/memberCenter`
+}
+
+/**验证是否是会员 */
+export const handleCheckVip = () => {
+  // 学生端验证
+  if (state.platformType == 'STUDENT') {
+    //学生有待激活会员
+    if (!state.user.data.membershipDays && state.user.data.purchaseMemberRecord) {
+      showDialog({
+        title: '温馨提示',
+        message: '您的团练宝暂未激活,请激活后使用'
+      }).then(() => {
+        gotoMemberCenter()
+      })
+      return false
+    }
+    //学生没有会员
+    if (!state.user.data.vipMember) {
+      showDialog({
+        title: '温馨提示',
+        message: '您暂未开通团练宝,请开通后使用'
+      }).then(() => {
+        gotoMemberCenter()
+      })
+      return false
+    }
+  }
+  return true
+}