103 lines
2.4 KiB
JavaScript
103 lines
2.4 KiB
JavaScript
// miniprogram/app.js
|
|
App({
|
|
globalData: {
|
|
userInfo: null,
|
|
apiBase: 'http://localhost:3000/api', // 本地开发API地址
|
|
// 生产环境请改为: 'http://kr-soul.lytiao.com/api'
|
|
appId: 'wx0976665c3a3d5a7c',
|
|
appSecret: 'a262f1be43422f03734f205d0bca1882',
|
|
bookData: null,
|
|
currentChapter: null
|
|
},
|
|
|
|
onLaunch() {
|
|
console.log('Soul派对小程序启动')
|
|
|
|
// 检查登录态
|
|
this.checkLoginStatus()
|
|
|
|
// 加载书籍数据
|
|
this.loadBookData()
|
|
},
|
|
|
|
// 检查登录状态
|
|
checkLoginStatus() {
|
|
const token = wx.getStorageSync('token')
|
|
if (token) {
|
|
// 验证token有效性
|
|
this.validateToken(token)
|
|
}
|
|
},
|
|
|
|
// 验证token
|
|
validateToken(token) {
|
|
wx.request({
|
|
url: `${this.globalData.apiBase}/auth/validate`,
|
|
method: 'POST',
|
|
header: {
|
|
'Authorization': `Bearer ${token}`
|
|
},
|
|
success: (res) => {
|
|
if (res.statusCode === 200) {
|
|
this.globalData.userInfo = res.data.user
|
|
} else {
|
|
wx.removeStorageSync('token')
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
// 加载书籍数据
|
|
loadBookData() {
|
|
wx.request({
|
|
url: `${this.globalData.apiBase}/book/structure`,
|
|
success: (res) => {
|
|
if (res.statusCode === 200) {
|
|
this.globalData.bookData = res.data
|
|
wx.setStorageSync('bookData', res.data)
|
|
}
|
|
},
|
|
fail: () => {
|
|
// 从缓存加载
|
|
const cached = wx.getStorageSync('bookData')
|
|
if (cached) {
|
|
this.globalData.bookData = cached
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
// 微信登录
|
|
wxLogin(callback) {
|
|
wx.login({
|
|
success: (res) => {
|
|
if (res.code) {
|
|
wx.request({
|
|
url: `${this.globalData.apiBase}/auth/wx-login`,
|
|
method: 'POST',
|
|
data: { code: res.code },
|
|
success: (loginRes) => {
|
|
if (loginRes.statusCode === 200) {
|
|
const { token, user } = loginRes.data
|
|
wx.setStorageSync('token', token)
|
|
this.globalData.userInfo = user
|
|
callback && callback(true, user)
|
|
} else {
|
|
callback && callback(false)
|
|
}
|
|
},
|
|
fail: () => {
|
|
callback && callback(false)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取用户信息
|
|
getUserInfo() {
|
|
return this.globalData.userInfo
|
|
}
|
|
})
|