Files
soul/miniprogram/app.js

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
}
})