feat :init
This commit is contained in:
246
miniprogram/app.js
Normal file
246
miniprogram/app.js
Normal file
@@ -0,0 +1,246 @@
|
||||
// app.js
|
||||
App({
|
||||
globalData: {
|
||||
userInfo: null,
|
||||
token: '',
|
||||
memberInfo: null,
|
||||
systemInfo: null,
|
||||
apiBaseUrl: 'https://api.xiaozhi.com', // 生产环境API地址
|
||||
// apiBaseUrl: 'http://localhost:8091', // 开发环境API地址
|
||||
version: '1.0.0'
|
||||
},
|
||||
|
||||
onLaunch() {
|
||||
console.log('小智AI会员系统启动')
|
||||
|
||||
// 初始化系统信息
|
||||
this.initSystemInfo()
|
||||
|
||||
// 检查登录状态
|
||||
this.checkLoginStatus()
|
||||
|
||||
// 检查更新
|
||||
this.checkForUpdate()
|
||||
},
|
||||
|
||||
onShow() {
|
||||
console.log('小程序显示')
|
||||
},
|
||||
|
||||
onHide() {
|
||||
console.log('小程序隐藏')
|
||||
},
|
||||
|
||||
onError(msg) {
|
||||
console.error('小程序错误:', msg)
|
||||
// 错误上报
|
||||
this.reportError(msg)
|
||||
},
|
||||
|
||||
// 初始化系统信息
|
||||
initSystemInfo() {
|
||||
try {
|
||||
const systemInfo = wx.getSystemInfoSync()
|
||||
this.globalData.systemInfo = systemInfo
|
||||
console.log('系统信息:', systemInfo)
|
||||
} catch (error) {
|
||||
console.error('获取系统信息失败:', error)
|
||||
}
|
||||
},
|
||||
|
||||
// 检查登录状态
|
||||
checkLoginStatus() {
|
||||
const token = wx.getStorageSync('token')
|
||||
const userInfo = wx.getStorageSync('userInfo')
|
||||
|
||||
if (token && userInfo) {
|
||||
this.globalData.token = token
|
||||
this.globalData.userInfo = userInfo
|
||||
console.log('用户已登录:', userInfo.nickName)
|
||||
|
||||
// 验证token有效性
|
||||
this.validateToken()
|
||||
} else {
|
||||
console.log('用户未登录')
|
||||
}
|
||||
},
|
||||
|
||||
// 验证token有效性
|
||||
async validateToken() {
|
||||
try {
|
||||
const api = require('./utils/api.js')
|
||||
const res = await api.getMemberInfo()
|
||||
|
||||
if (res.code === 200) {
|
||||
this.globalData.memberInfo = res.data
|
||||
console.log('Token有效,会员信息:', res.data)
|
||||
} else {
|
||||
console.log('Token无效,清除登录状态')
|
||||
this.clearLoginStatus()
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('验证Token失败:', error)
|
||||
this.clearLoginStatus()
|
||||
}
|
||||
},
|
||||
|
||||
// 清除登录状态
|
||||
clearLoginStatus() {
|
||||
this.globalData.token = ''
|
||||
this.globalData.userInfo = null
|
||||
this.globalData.memberInfo = null
|
||||
|
||||
wx.removeStorageSync('token')
|
||||
wx.removeStorageSync('userInfo')
|
||||
wx.removeStorageSync('memberInfo')
|
||||
},
|
||||
|
||||
// 检查小程序更新
|
||||
checkForUpdate() {
|
||||
if (wx.canIUse('getUpdateManager')) {
|
||||
const updateManager = wx.getUpdateManager()
|
||||
|
||||
updateManager.onCheckForUpdate((res) => {
|
||||
console.log('检查更新结果:', res.hasUpdate)
|
||||
})
|
||||
|
||||
updateManager.onUpdateReady(() => {
|
||||
wx.showModal({
|
||||
title: '更新提示',
|
||||
content: '新版本已经准备好,是否重启应用?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
updateManager.applyUpdate()
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
updateManager.onUpdateFailed(() => {
|
||||
wx.showToast({
|
||||
title: '更新失败',
|
||||
icon: 'error'
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 错误上报
|
||||
reportError(error) {
|
||||
// TODO: 实现错误上报逻辑
|
||||
console.log('上报错误:', error)
|
||||
},
|
||||
|
||||
// 获取用户信息
|
||||
getUserInfo() {
|
||||
return this.globalData.userInfo
|
||||
},
|
||||
|
||||
// 设置用户信息
|
||||
setUserInfo(userInfo) {
|
||||
this.globalData.userInfo = userInfo
|
||||
wx.setStorageSync('userInfo', userInfo)
|
||||
},
|
||||
|
||||
// 获取会员信息
|
||||
getMemberInfo() {
|
||||
return this.globalData.memberInfo
|
||||
},
|
||||
|
||||
// 设置会员信息
|
||||
setMemberInfo(memberInfo) {
|
||||
this.globalData.memberInfo = memberInfo
|
||||
wx.setStorageSync('memberInfo', memberInfo)
|
||||
},
|
||||
|
||||
// 获取Token
|
||||
getToken() {
|
||||
return this.globalData.token
|
||||
},
|
||||
|
||||
// 设置Token
|
||||
setToken(token) {
|
||||
this.globalData.token = token
|
||||
wx.setStorageSync('token', token)
|
||||
},
|
||||
|
||||
// 检查会员权限
|
||||
checkMemberPermission(benefitCode) {
|
||||
const memberInfo = this.globalData.memberInfo
|
||||
if (!memberInfo) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 检查会员状态
|
||||
if (memberInfo.memberStatus !== 'ACTIVE') {
|
||||
return false
|
||||
}
|
||||
|
||||
// 检查是否过期
|
||||
if (memberInfo.endTime) {
|
||||
const endTime = new Date(memberInfo.endTime)
|
||||
const now = new Date()
|
||||
if (endTime < now) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// 检查权益
|
||||
const benefits = memberInfo.benefits || []
|
||||
return benefits.some(benefit =>
|
||||
benefit.benefitCode === benefitCode && benefit.isEnabled
|
||||
)
|
||||
},
|
||||
|
||||
// 格式化会员等级文本
|
||||
formatMemberLevel(level) {
|
||||
const levelMap = {
|
||||
'FREE': '免费用户',
|
||||
'VIP': 'VIP会员',
|
||||
'SVIP': 'SVIP会员'
|
||||
}
|
||||
return levelMap[level] || '未知等级'
|
||||
},
|
||||
|
||||
// 格式化会员状态文本
|
||||
formatMemberStatus(status) {
|
||||
const statusMap = {
|
||||
'ACTIVE': '有效',
|
||||
'EXPIRED': '已过期',
|
||||
'SUSPENDED': '已暂停',
|
||||
'CANCELLED': '已取消'
|
||||
}
|
||||
return statusMap[status] || '未知状态'
|
||||
},
|
||||
|
||||
// 计算会员剩余天数
|
||||
calculateRemainingDays(endTime) {
|
||||
if (!endTime) {
|
||||
return null // 永久有效
|
||||
}
|
||||
|
||||
const end = new Date(endTime)
|
||||
const now = new Date()
|
||||
const diffTime = end - now
|
||||
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
|
||||
|
||||
return diffDays > 0 ? diffDays : 0
|
||||
},
|
||||
|
||||
// 显示会员升级提示
|
||||
showUpgradePrompt(benefitName) {
|
||||
wx.showModal({
|
||||
title: '权限不足',
|
||||
content: `${benefitName}需要VIP会员权限,是否立即升级?`,
|
||||
confirmText: '立即升级',
|
||||
cancelText: '稍后再说',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
wx.navigateTo({
|
||||
url: '/pages/member/upgrade/upgrade'
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user