import Dialog from '../../../../dist/dialog/dialog'; import polyvLive from '../../../../utils/polyvlive.js'; var CryptoJS = require('../../../../utils/CryptoJS.js'); var yz_pay = require('../../../../mycomponent/yz_pay/yz_pay'); var app = getApp(); Page({ behaviors: [yz_pay], /** * 页面的初始数据 */ data: { is_try_time: null, is_questionnaire_time: null, // 问卷调查 questionnaire_is_open: false, language: '', goods_id: '', is_show: true, is_vshow: false, isVideo: true, isLook: true, is_update: false, is_buy: false, showPopup: false, rewardMoneyBtn: false, actionSheetShow: false, rewardBtnShow: false, // 打赏金额 rewardMoney: '', goodTit: '', goodPrice: '', chapterNum: '', teacherImg: '', teacherName: '', goodsContent: '', chapterList: [], article_content: '', courseShare: {}, courseData: {}, codeUrl: '', vedioSrc: '', coverImg: '', active: '', // 章节id chapter_id: '', // 课程id courseId: '', pushGoodList: [], // pushGoodList: [{ // "id": 93, // "goods_id": 206, // "lecturer_id": 3, // "title": "3333", // "thumb": "https://dev5.yunzshop.com/attachment/images/2/2018/08/L8Ia553RrZH83rEiLocYIY3L9o5885.jpg", // "price": "100.00", // "has_one_lecturer": { // "id": 3, // "real_name": "\u6d4b\u8bd5", // "mobile": "13800138000" // }, // "course_chapter_num": 1 // }], actionSheetItems: [], isLoding: false, activeNames: ['1'], //章节列表 chapterdigList: [], // 价格权限 vip_level_status: {}, islive: false, video_err: false, is_playLive: false, live: false, videoErr: true, ios_virtual_pay: false, // 标签页显示的索引 courseTabsActive: 1, posterShow: false }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { console.log(options); this.setData({ goods_id: options.goods_id, questionnaire_is_open: false }); // if (options.chapter_id) { // this.setData({ // goods_id: options.goods_id // }) // } this._getData(); try { var value = wx.getStorageSync('ios_virtual_pay'); if (value) { this.setData({ ios_virtual_pay: value }); } } catch (e) { console.log(e); } try { let name = wx.getStorageSync('yz_basic_info'); this.setData({ shopName: name.home.mailInfo.name }); } catch (err) { console.log(e); } }, changeLoading() { this.setData({ isLoding: true }); }, videoErr() { wx.showToast({ title: '视频加载出错了!', icon: 'none', duration: 2000 }); this.setData({ videoErr: false }); }, setPosterShow() { this.setData({ posterShow: !this.data.posterShow }); }, getQrCode() { var that = this; app._getNetWork({ url: app.getNetAddresss('member.member.getArticleQr'), success: function (res) { if (res.data.result == 1 && !app._isTextEmpty(res.data.data)) { let _data = res.data.data; that.setData({ codeUrl: _data }); } else { console.error(res); } }, fail: function (res) { console.error(res); } }); }, secret(string, code, operation) { code = CryptoJS.MD5(code).toString(); var iv = CryptoJS.enc.Utf8.parse(code.substring(0, 16)); var key = CryptoJS.enc.Utf8.parse(code.substring(16)); if (operation) { return CryptoJS.AES.decrypt(string, key, { iv: iv, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8); } return CryptoJS.AES.encrypt(string, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString(); }, // 点击直播请求 addzhibo() { var that = this; app._getNetWork({ url: app.getNetAddresss('plugin.video-demand.api.video-course-goods.get-live-info'), data: { goods_id: that.data.goods_id }, success: function (res) { console.log(res); if (res.data.result == 1) { console.log(res.data.data); if (that.data.islive == true) { wx.showToast({ title: '正在直播', icon: 'none', duration: 1000 }); return; } let info = JSON.parse(that.secret(res.data.data, 'zoQUA@257ggflNmMppKzcU7QgYyp!tU&h54VNN3u!PAU$8FxBW', true)); console.log(info); that.is_onlive(info.userId, info.channelId); that.setData({ islive: true }); } else { wx.showToast({ title: res.data.msg, icon: 'none', duration: 1000 }); that.setData({ is_update: true, is_buy: true }); } }, fail: function (res) { console.error(res); } }); }, // 唤起直播 is_onlive(liveUid, liveVid) { wx.showLoading({ title: '加载直播中', icon: 'none' }); console.log(); const liveVideoContext = wx.createLivePlayerContext('polyvLiveVideo'); this.setData({ islive: true, }); polyvLive.getVideo({ uid: liveUid, vid: liveVid, videoContext: liveVideoContext, success: (videoInfo) => { // set video src and poster console.log(videoInfo); this.setPlayerSrc(videoInfo); }, error: (res) => { console.log(res.error); }, onStartLive: () => { console.log('start live'); wx.hideLoading(); // set latest video src this.setNewPlayerSrc(); }, onApiStatus: (status) => { console.log(status); if (status == 'end') { this.setData({ is_playLive: false, islive: false }); wx.hideLoading(); wx.showToast({ title: '当前无直播', icon: 'none', duration: 1000 }); polyvLive.destroy(); } else if (status == 'live') { this.setData({ is_playLive: true }); } } }); }, // 直播赋值 setPlayerSrc(videoInfo) { this.setData({ video: { src: videoInfo.flvSrc, // 如果播放组件为video,只能用videoInfo.src(m3u8地址),如果为live-player则用videoInfo.flvSrc poster: videoInfo.poster }, is_bisrc: videoInfo.src }); console.log(videoInfo.src); }, setNewPlayerSrc() { polyvLive.getNewVideo((videoInfo) => { this.setPlayerSrc(videoInfo); }); }, /** * 用户点击右上角分享 */ onShareTimeline() { var value = wx.getStorageSync('yz_uid'); var path = ''; if (value) { path = value; } return { title: app._isTextEmpty(this.data.courseShare.share_title) ? this.data.goodTit : this.data.courseShare.share_title, query: `share_tag=2&goods_id=${this.data.goods_id}&mid=${path}`, imageUrl: (app._isTextEmpty(this.data.courseShare.share_thumb) && this.data.courseData.has_one_goods) ? this.data.courseData.has_one_goods.thumb : this.data.courseShare.share_thumb }; }, onShareAppMessage: function (res) { var value = wx.getStorageSync('yz_uid'); var path = ''; if (value) { path = value; } let _title = app._isTextEmpty(this.data.courseShare.share_title) ? this.data.goodTit : this.data.courseShare.share_title; let _link = '/packageA/detail_v2/detail_v2?id=' + this.data.goods_id + '&mid=' + path; let _imgUrl = (app._isTextEmpty(this.data.courseShare.share_thumb) && this.data.courseData.has_one_goods) ? this.data.courseData.has_one_goods.thumb : this.data.courseShare.share_thumb; let _desc = this.data.courseShare.share_desc; return { title: _title, desc: _desc, imageUrl: _imgUrl, path: _link, success: function (shareTickets) { console.info(shareTickets + '成功'); // 转发成功 }, fail: function (res) { console.log(res + '失败'); // 转发失败 }, complete: function (res) { // 不管成功失败都会执行 } }; }, _getData() { var that = this; // 初次获取数据 app._getNetWork({ url: app.getNetAddresss('plugin.video-demand.api.video-course-goods.get-course-goods-detail'), data: { goods_id: that.data.goods_id }, success: function (res) { if (res.data.result === 1) { let _data = res.data.data; if (app._isTextEmpty(_data.has_many_dig_chapter) || _data.has_many_dig_chapter.length == 0) { Dialog.alert({ title: '提示', message: '课程已下架!', context: that }).then(() => { // on close wx.navigateBack({ delta: 1 }); }); return; } else { that.setData({ chapterdigList: _data.has_many_dig_chapter }); } _data.has_one_goods.content = _data.has_one_goods.content.replace(/ 0 && that.data.chapter_id ) { for ( let i = 0; i < has_many_dig_chapter[j].has_many_chapter.length; i++ ) { if (has_many_dig_chapter[j].has_many_chapter[i].id === Number(that.data.chapter_id)) { playCourse = has_many_dig_chapter[j].has_many_chapter[i]; playActive = i; } } } else { playCourse = has_many_dig_chapter[j].has_many_chapter[0]; } } that.setData({ courseData: _data, rewardBtnShow: _data.is_reward, goodTit: _data.has_one_goods.title, goodPrice: _data.has_one_goods.price, vip_level_status: _data.has_one_goods.vip_level_status, chapterNum: _data.course_chapter_num, teacherImg: _data.has_one_lecturer && _data.has_one_lecturer.has_one_member ? _data.has_one_lecturer.has_one_member.avatar : '', teacherName: _data.has_one_lecturer && _data.has_one_lecturer.real_name, goodsContent: _data.has_one_goods.content, chapter_id: playCourse.id, isLook: playCourse.is_audition, courseId: _data.id, pushGoodList: _data.pushGoods, courseShare: _data.has_one_goods.has_one_share, live: _data.live, live_title: _data.live_title, questionnaire_time: _data.questionnaire_time, plugin_point_name: _data.plugin_point_name ? _data.plugin_point_name : '积分' }); let sec = (_data.questionnaire_time * 1000); if (_data.questionnaire_is_open) { this.data.is_questionnaire_time = setTimeout(() => { if (!that.data.is_questionnaire_time) { return; } that.setData({ questionnaire_is_open: _data.questionnaire_is_open }); }, sec); } switch (_data.watch) { case 0: // Dialog.alert({ // title: '提示', // message: '请升级会员或者购买课程', // context: that // }).then(() => { // // on close // }) that.setData({ is_update: false, is_buy: false }); that.videoInit(playActive, playCourse); break; case 1: // 判断是否免费章节 if (playCourse.is_audition == 1) { that.setData({ is_update: false, is_buy: false, is_show: false, is_vshow: true }); that.videoInit(playActive, playCourse); break; } else if (playCourse.is_audition == 0) { Dialog.alert({ title: '提示', message: '请升级会员或者购买课程', context: that }).then(() => { // on close }); that.setData({ is_update: true, is_buy: true }); break; } else { break; } case 2: that.setData({ is_update: false, is_buy: false }); that.videoInit(playActive, playCourse); break; case 3: that.setData({ is_update: false, is_buy: false }); that.videoInit(playActive, playCourse); break; default: break; } } else { wx.showToast({ title: '视频加载出错', icon: 'none', duration: 1500 }); console.error(res); } }, fail: function (res) { console.error(res); } }); }, videoInit(index, item) { this.setData({ is_show: false, is_vshow: true, active: item.id }); this.viewPermission( item.id, index, item.course_id, item.is_audition ); // this.isMp4(this.data.vedioSrc) }, viewPermissionBtn(e) { let dataset = e.currentTarget.dataset; let id = dataset.item.id; let index = dataset.index; let course_id = dataset.item.course_id; let audition = dataset.item.is_audition; console.log(id, index, course_id, audition); console.log(dataset); this.viewPermission(id, index, course_id, audition); }, // 根据观看权限 viewPermission(id, index, course_id, audition) { // id, index, address, course_id, audition let that = this; this.setData({ is_show: true, is_vshow: false, islive: false }); this.setData({ chapter_id: id, active: id }); let param = { goods_id: this.data.goods_id, chapter_id: id }; let url = app.getNetAddresss('plugin.video-demand.api.video-course-goods.get-video-address'); app._getNetWork({ url: url, data: param, success: function (res) { if (res.data.result == 1) { let _data = res.data.data; that.viewType(_data.watch, index, _data.video_address, course_id, id, audition, _data.video_cover_address, _data.is_try, _data.try_time); } else { console.error(res); } }, fail: function (res) { console.error(res); } }); }, viewType(type, index, address, course_id, id, audition, coverSrc, is_try, try_time) { if (is_try == 1 && type == 1 && audition == 1) { this.setData({ is_update: false, is_buy: false, isLook: true, is_vshow: true, is_show: false }); this.videoPlay(index, address, course_id, id, coverSrc); return; } else if ((type != 2 && type != 3) && is_try == 1 && try_time > 0) { this.setData({ is_update: false, is_buy: false, isLook: true, }); this.videoPlay(index, address, course_id, id, coverSrc); if (!this.data.is_try_time) { // 防止重复设置定时器 this.data.is_try_time = setTimeout(() => { this.setData({ islive: false, is_show: true, is_vshow: false }); if (this.data.is_try_time) { // 防止返回还执行弹窗 wx.showModal({ title: '提示', content: '请升级会员或者购买课程', }); } this.setData({ is_update: true, is_buy: true, isLook: false, is_vshow: false, is_show: true }); }, try_time * 1000); } return; } switch (type) { case 0: wx.showModal({ title: '提示', content: '请升级会员或者购买课程', }); this.setData({ is_update: true, is_buy: true, isLook: false, is_vshow: false, is_show: true }); break; case 1: if (audition == 1) { this.setData({ is_update: false, is_buy: false, isLook: true, is_vshow: true, is_show: false }); this.videoPlay(index, address, course_id, id, coverSrc); break; } else if (audition == 0) { Dialog.alert({ title: '提示', message: '请升级会员或者购买课程', context: that }).then(() => { // on close }); this.setData({ is_update: true, is_buy: true, isLook: false }); break; } else { break; } case 2: this.setData({ is_update: false, is_buy: false, isLook: true }); this.videoPlay(index, address, course_id, id, coverSrc); break; case 3: this.setData({ is_update: false, is_buy: false, isLook: true }); this.videoPlay(index, address, course_id, id, coverSrc); break; default: break; } }, // 观看视频 videoPlay(index, src, course_id, id, coverSrc) { console.log(index, src, course_id, id, coverSrc); this.setData({ is_show: false, is_vshow: true, active: id, vedioSrc: src, coverImg: coverSrc }); // 判断当前路径 this.isMp4(this.data.vedioSrc); app._getNetWork({ url: app.getNetAddresss('plugin.video-demand.api.video-demand-member.set-watch-history'), data: { course_id: course_id, chapter_id: id }, success: function (res) { if (res.data.result == 1) { // let _data = res.data.data // console.log(_data) } else { // console.error(res) } }, fail: function (res) { console.error(res); } }); }, // 判断是否MP4 isMp4(src) { if (src.endsWith('.mp4')) { this.setData({ isVideo: true, is_show: false }); } else { this.setData({ isVideo: false, is_show: false }); } }, study() { this.setData({ is_show: false, is_vshow: true }); }, // 升级会员 update() { if (this.data.ios_virtual_pay) { wx.showModal({ title: '提示', content: '十分抱歉,由于相关规定,你暂时无法在这里充值!', confirmText: '知道了', showCancel: false, success(res) { if (res.confirm) { console.log(res); } } }); return false; } wx.navigateTo({ url: '/packageA/member/course/CourseMemberUpdate/CourseMemberUpdate?goods_id=' + this.data.goods_id }); }, // 立即购买 buy() { if (this.data.ios_virtual_pay) { wx.showModal({ title: '提示', content: '十分抱歉,由于相关规定,你暂时无法在这里充值!', confirmText: '知道了', showCancel: false, success(res) { if (res.confirm) { console.log(res); } } }); return false; } if (this.data.vip_level_status && this.data.vip_level_status.status == 1) { wx.showToast({ title: this.data.vip_level_status.tips, icon: 'none', duration: 1500 }); return false; } if (this.data.loadBtn) { return; } wx.navigateTo({ url: '/packageD/buy/myOrder_v2/myOrder_v2?tag=-2&total=1&optionsId=&goodsId=' + this.data.goods_id }); }, // 跳转至我的课程 toMyCourse() { wx.navigateTo({ url: '/packageA/member/course/CourseMy/CourseMy' }); }, // 推荐商品跳转 pushGoodGoto(val) { let item = val.currentTarget.dataset.item; wx.navigateTo({ url: '/packageA/detail_v2/detail_v2?id=' + item.id }); }, // 选择打赏金额 chooseMoney(e) { let money = e.currentTarget.dataset.money; this.setData({ rewardMoney: money }); }, // 确定打赏 confirmReward() { if (app._isTextEmpty(this.data.rewardMoney)) { wx.showToast({ title: '请输入或选择打赏金额', icon: 'none', duration: 1500 }); return; } if (this.data.rewardMoney <= 0) { wx.showToast({ title: '打赏金额必须大于0', icon: 'none', duration: 1500 }); return; } this.getPayData(); }, // 获取支付类型参数 getPayData() { var that = this; // let actionSheetItems = []; app._getNetWork({ url: app.getNetAddresss('plugin.video-demand.api.lecturer-reward.pay-type'), success: function (res) { if (res.data.result === 1) { let btnData = res.data.data.buttons; that.setData({ showPopup: false, btnData: btnData, rewardPayshow: true }); } else { console.error(res); } }, fail: function (res) { console.error(res); } }); }, rewardPayshowClose() { this.setData({ rewardPayshow: false }); }, rewardPayCancelBtn() { this.setData({ rewardPayshow: false }); }, // 支付 payPost(e) { this.setData({ rewardPayshow: false }); let type, name, btn = null; if (e.currentTarget) { btn = e.currentTarget.dataset.info; type = e.currentTarget.dataset.info.value; name = e.currentTarget.dataset.info.name; } else { btn = e; type = e.value; name = e.name; } let dataJson = { pay_method: type, amount: this.data.rewardMoney, pay_name: name, trick_id: this.data.stickid, client_type: '2', goods_id: this.data.goods_id }; app._getNetWork({ url: app.getNetAddresss('plugin.video-demand.api.lecturer-reward.run-reward-pay'), data: dataJson, success: (res) => { if (res.data.result === 1) { this.handleOtherPay(btn, type, res.data.data); this.onClose(); } else { Dialog.alert({ title: '提示', message: res.data.msg }).then(() => { // on close }); console.error(res); } }, fail: (res) => { console.error(res); } }); }, moneyShow() { this.setData({ showPopup: true }); }, openInputReward() { this.setData({ showPopup: false, rewardMoneyBtn: true }); }, onClose() { this.setData({ showPopup: false, rewardMoneyBtn: false, actionSheetShow: false, questionnaire_is_open: false }); }, goSurvey() { wx.navigateTo({ url: '/packageE/questionnaire/questions/questions?goods_id=' + this.data.goods_id + '&tag=video', }); }, openActionSheet() { this.setData({ showPopup: false, actionSheetShow: true }); }, previewImage: function (e) { var current = e.currentTarget.dataset.src; // 这里获取到的是一张本地的图片 wx.previewImage({ current: current, // 需要预览的图片链接列表 urls: [current] // 当前显示图片的链接 }); }, onChange(event) { this.setData({ activeNames: event.detail }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { let language = wx.getStorageSync('langIndex'); this.setData({ 'language': language.en }); wx.setNavigationBarTitle({ title: '课程详情' }); }, /** * 生命周期函数--监听页面显示 */ onShow: function () { wx.showShareMenu({ withShareTicket: false, menus: ['shareAppMessage', 'shareTimeline'] }); this._getData(); }, onHide() { this.data.is_try_time = null; this.data.is_questionnaire_time = null; clearTimeout(this.data.is_try_time); clearTimeout(this.data.is_questionnaire_time); console.log('onHide监听小程序隐藏', this.data.is_try_time); }, onUnload() { this.data.is_try_time = null; this.data.is_questionnaire_time = null; clearTimeout(this.data.is_try_time); clearTimeout(this.data.is_questionnaire_time); console.log('onUnload监听小程序隐藏', this.data.is_try_time); }, });