2023.09.01

This commit is contained in:
@fawn-nine
2023-09-01 18:04:41 +08:00
parent ef6c52c0d4
commit 7b9044f4df
13 changed files with 1135 additions and 260 deletions

View File

@@ -2,10 +2,13 @@ import store from '@/store/index.js'
import $http from '@/config/requestConfig.js';
const bgm = uni.getBackgroundAudioManager();
// const bgm = uni.createInnerAudioContext();
bgm.musicList = [] // 播放目录
bgm.src = ''
bgm.htimes = 0 // 历史播放秒数
bgm.cTime = 0
bgm.title = ''
bgm.interval=null // 存储定时器
bgm.loop = true;
bgm.coverImgUrl = ''
bgm.oldIndex = 0 // 前面一首的播放索引
@@ -42,24 +45,35 @@ var music = {
}
// 没有就添加添加url到播放器播放新的
if(bgm.src == ''){
console.log(bgm.playIndex,'播放的索引',store.state.userInfo.playIndex)
console.log(bgm.playIndex,'播放的索引',store.state.userInfo.playIndex,'播放的时长',store.state.userInfo.playTimes)
store.commit('setUserInfo',{'playTitle': bgm.musicList[bgm.playIndex].chapterName})
store.commit('setUserInfo',{'fengImg': bgm.musicList[bgm.playIndex].images})
store.commit('setUserInfo',{'playingInfo': bgm.musicList[bgm.playIndex]})
console.log(store.state.userInfo,'chapterName',bgm.playIndex)
this.getChartUrl()
store.state.userInfo.playTimes ? bgm.htimes = store.state.userInfo.playTimes : ''
this.getChartUrl()
// 获取历史秒数
}else{
// 如果有正在播放的url暂停改为播放
// bgm.play()
}
}
bgm.onPause(()=>{
console.log('暂停背景音乐');
this.saveTimes()
clearInterval(bgm.interval)
store.commit('setUserInfo',{'playFlag': false})
})
bgm.onPlay(() => {
store.commit('setUserInfo',{'playFlag': true})
console.log('开始播放音乐#######');
uni.hideLoading()
bgm.interval = setInterval(()=>{
console.log('存一次')
this.saveIndex()
},180000)
})
bgm.onError((res) => {
console.log(res)
@@ -91,7 +105,10 @@ var music = {
// 可以播放时
// console.log('可以播放时')
uni.hideLoading()
this.saveIndex()
// this.saveIndex()
console.log('历史播放进度,秒数', bgm.htimes)
bgm.seek(bgm.htimes)
bgm.htimes = 0 // 重置播放秒数
// store.commit('setUserInfo',{'duration':bgm.duration})
// store.commit('setUserInfo',{'playTitle': bgm.title})
// store.commit('setUserInfo',{'fengImg': bgm.coverImgUrl})
@@ -108,20 +125,68 @@ var music = {
// 添加播放列表
setList(list,op,playindex){
bgm.musicList = list
bgm.oldIndex = bgm.playIndex // 暂存上一个播放得index
console.log('地址异常报错前index:',bgm.oldIndex)
playindex ? bgm.playIndex = playindex : bgm.playIndex = 0
console.log(bgm.playIndex,'playindex')
// console.log(bgm.playIndex,'playindex')
store.commit('setUserInfo',{'playingInfo': {}})
if(op == 'autoPlay'){
if(bgm._options.src == ''){
// this.getChartUrl()
this.playBgm({mute:false})
console.log('playBgm')
}else{
this.getChartUrl() // 获取对应的播放路径
// console.log('getChartUrl')
this.getListenRate(bgm.musicList[0], op)
// if(op == 'autoPlay'){
// store.commit('setUserInfo',{'playTimes': 0})
// if(bgm._options.src == ''){
// // this.getChartUrl()
// this.playBgm({mute:false})
// console.log('playBgm')
// }else{
// this.getChartUrl() // 获取对应的播放路径
// // console.log('getChartUrl')
// }
// }
},
// 获取线上听书进度
getListenRate(val,op){
let data = {
bookId: val.bookid,
userId: store.state.userInfo.id,
}
$http.request({
url: "book/listening/getReadRate",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data,
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
}).then(res => {
console.log(res,'历史记录')
if(res.readRate.chapterId){
var item = res.readRate
// 有听书进度时
bgm.playIndex = bgm.musicList.findIndex(function(info){
// console.log(info,'info')
if(item.chapterId == info.chapterId && item.bookId == info.bookid ){
return info;
}
})
store.commit('setUserInfo',{'playingInfo':bgm.musicList[bgm.playIndex] })
console.log('线上的播放index是',bgm.playIndex)
console.log('线上的播放index是', store.state.userInfo.playingInfo)
}else{
// 没有听书进度
}
}
if(op == 'autoPlay'){
store.commit('setUserInfo',{'playTimes': 0})
if(bgm._options.src == ''){
// this.getChartUrl()
this.playBgm({mute:false})
console.log('playBgm')
}else{
this.getChartUrl() // 获取对应的播放路径
// console.log('getChartUrl')
}
}
})
},
// 获取章节url
getChartUrl(){
@@ -132,70 +197,113 @@ var music = {
'chapterid': bgm.musicList[bgm.playIndex].chapterId
}
console.log(data,'data')
$http.post('book/bookchaptercontent/appBooksChapterContent', data)
$http.post('book/bookchaptercontent/appBooksChapterContent', data)
// $http.post('book/bookchaptercontent/getCatal', data)
.then(res => {
console.log(res,'res')
if(res.code == 0){
// bgm.stop()
// 有听权限时
if(res.bookCatalogue[0].url.length > 10){
if(res.bookCatalogue[0].url){ // 空值url:null
bgm.src = res.bookCatalogue[0].url
bgm.title = res.bookCatalogue[0].name
bgm.coverImgUrl = res.image
// bgm.title = res.bookCatalogue[0].name
// bgm.coverImgUrl = res.image
// store.commit('setUserInfo',{'playIndex': bgm.playIndex})
// store.commit('setUserInfo',{'playTitle': bgm.title})
// store.commit('setUserInfo',{'playingInfo':bgm.musicList[bgm.playIndex] })
// store.commit('setUserInfo',{'fengImg': bgm.coverImgUrl})
// bgm.pause()
// this.setCoverImg(bgm.musicList[bgm.playIndex].images)
}else{
bgm.src = ''
bgm.title = ''
bgm.coverImgUrl = ''
}else{
// bgm.src = ''
// bgm.title = ''
// bgm.coverImgUrl = '../../static/icon/fengziIcon.jpg'
// this.setCoverImg('../../static/icon/x1.jpg')
bgm.stop()
// bgm.stop()
bgm.playIndex = bgm.oldIndex
console.log('地址异常报错后index:',bgm.playIndex)
store.commit('setUserInfo',{'playIndex': bgm.playIndex})
store.commit('setUserInfo',{'playingInfo':bgm.musicList[bgm.playIndex] })
uni.showToast({
title:'音频地址异常',
icon:'error',
duration:2000
})
// store.commit('setUserInfo',{'playFlag': false})
}
store.commit('setUserInfo',{'playTitle': bgm.title})
store.commit('setUserInfo',{'fengImg': bgm.coverImgUrl})
}
}
console.log(res.bookCatalogue,'单章节信息')
}).catch((e)=>{
}).catch((e)=>{
console.log(e,'e')
// bgm.pause()
bgm.playIndex = bgm.oldIndex
// bgm.stop()
store.commit('setUserInfo',{'playFlag': false})
uni.showModal({
title: '提示',
cancelText: '暂不购买',
confirmText:'立即购买',
content: '抱歉!当前章节不支持试听,购买后可收听',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
uni.navigateTo({
url: '../bookShop/settlementBook?type=2&list=' + data.bookid
});
}
}
});
// store.commit('setUserInfo',{'playFlag': false})
uni.showModal({
title: '提示',
cancelText: '暂不购买',
confirmText:'立即购买',
content: '抱歉!当前章节不支持试听,购买后可收听',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
uni.navigateTo({
url: '../bookShop/settlementBook?type=2&list=' + data.bookid
});
}
}
});
// uni.showModal({
// title: '提示',
// confirmText:'知道了',
// content: '当前书籍音频功能未开通,请联系管理员',
// success: function (res) {
// if (res.confirm) {
// console.log('用户点击确定');
// }
// }
// });
})
},
},
// 存储播放信息
saveIndex(){
console.log(bgm.playIndex,'存储得index')
store.commit('setUserInfo',{'playIndex': bgm.playIndex})
store.commit('setUserInfo',{'duration':bgm.duration})
store.commit('setUserInfo',{'playTitle': bgm.title})
store.commit('setUserInfo',{'fengImg': bgm.coverImgUrl})
store.commit('setUserInfo',{'playFlag': true})
store.commit('setUserInfo',{'playingInfo': bgm.musicList[bgm.playIndex]})
store.commit('setUserInfo',{'playingInfo': bgm.musicList[bgm.playIndex]})
store.commit('setUserInfo',{'playTimes': bgm.currentTime})
this.saveRate(bgm.musicList[bgm.playIndex])
},
// 存储播放
// 存储播放(本地)
saveTimes(){
store.commit('setUserInfo',{'playTimes': bgm.currentTime})
},
// 存储播放进度(线上)
saveRate(val){
console.log(val,'要存储的播放信息',)
$http.post('book/listening/save', {
'userId': store.state.userInfo.id,
'bookId': val.bookid,
'chapterId': val.chapterId,
'chapterName': val.chapterName,
//'precent': bgm.currentTime
'precent': Math.ceil(bgm.currentTime),
//'contentId'
'loadAnimate':'none', // 请求加载动画
})
.then(res => {
if(res.code == 0){
console.log(res,'存储完成')
}
}).catch((e)=>{})
},
// 设置播放index
setPlayIndex(opName){ // 切换音频
if(opName == 'next'){ // 下一首
@@ -256,7 +364,8 @@ var music = {
console.log('success');
}
});
bgm.htimes = 0
bgm.oldIndex = bgm.playIndex
bgm.playIndex = bgm.musicList.findIndex(function(info){
// console.log(info,'info')
if(item.chapterId == info.chapterId && item.bookid == info.bookid ){