111 lines
3.0 KiB
Vue
111 lines
3.0 KiB
Vue
|
|
<script setup>
|
|||
|
|
import { onLaunch } from '@dcloudio/uni-app'
|
|||
|
|
import { refreshToken, getUserInfo, wxminiLogin } from '@/api/apis'
|
|||
|
|
import { getAgentInfo } from '@/apis/agent'
|
|||
|
|
|
|||
|
|
|
|||
|
|
onLaunch(() => {
|
|||
|
|
login()
|
|||
|
|
refreshTokenIfNeeded()
|
|||
|
|
getUser()
|
|||
|
|
getAgentInformation()
|
|||
|
|
})
|
|||
|
|
const login = () => {
|
|||
|
|
const token = uni.getStorageSync("token")
|
|||
|
|
if (token) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
uni.login({
|
|||
|
|
success: (res) => {
|
|||
|
|
let code = res.code
|
|||
|
|
wxminiLogin({ code }).then(res => {
|
|||
|
|
if (res.code === 200) {
|
|||
|
|
uni.setStorageSync("token", res.data.accessToken)
|
|||
|
|
uni.setStorageSync("refreshAfter", res.data.refreshAfter)
|
|||
|
|
uni.setStorageSync("accessExpire", res.data.accessExpire)
|
|||
|
|
getUser()
|
|||
|
|
getAgentInformation()
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
const refreshTokenIfNeeded = async () => {
|
|||
|
|
const token = uni.getStorageSync("token")
|
|||
|
|
const refreshAfter = uni.getStorageSync("refreshAfter")
|
|||
|
|
const accessExpire = uni.getStorageSync("accessExpire")
|
|||
|
|
const currentTime = new Date().getTime()
|
|||
|
|
|
|||
|
|
// 如果 token 已过期,直接返回
|
|||
|
|
if (accessExpire) {
|
|||
|
|
const accessExpireInMilliseconds = parseInt(accessExpire) * 1000 // 转换为毫秒级
|
|||
|
|
if (currentTime > accessExpireInMilliseconds) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 如果没有 token,直接返回
|
|||
|
|
if (!token) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 如果有 refreshAfter,检查当前时间是否超过 refreshAfter
|
|||
|
|
if (refreshAfter) {
|
|||
|
|
const refreshAfterInMilliseconds = parseInt(refreshAfter) * 1000 // 转换为毫秒级
|
|||
|
|
if (currentTime < refreshAfterInMilliseconds) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 如果没有 refreshAfter 或者时间超过 refreshAfter,执行刷新 token 的请求
|
|||
|
|
try {
|
|||
|
|
const res = await refreshToken()
|
|||
|
|
if (res.code === 200) {
|
|||
|
|
uni.setStorageSync("token", res.data.accessToken)
|
|||
|
|
uni.setStorageSync("refreshAfter", res.data.refreshAfter)
|
|||
|
|
uni.setStorageSync("accessExpire", res.data.accessExpire)
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('刷新token失败', error)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
const getAgentInformation = async () => {
|
|||
|
|
const token = uni.getStorageSync("token")
|
|||
|
|
if (!token) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
const res = await getAgentInfo()
|
|||
|
|
if (res.code === 200 && res.data) {
|
|||
|
|
// 将代理信息存入缓存
|
|||
|
|
uni.setStorageSync("agentInfo", {
|
|||
|
|
level: res.data.level,
|
|||
|
|
isAgent: res.data.is_agent, // 判断是否是代理
|
|||
|
|
status: res.data.status, // 获取代理状态 0=待审核,1=审核通过,2=审核未通过,3=未申请
|
|||
|
|
agentID: res.data.agent_id,
|
|||
|
|
mobile: res.data.mobile,
|
|||
|
|
isRealName: res.data.is_real_name,
|
|||
|
|
expiryTime: res.data.expiry_time
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
console.log('代理信息已获取并存入缓存')
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('获取代理信息失败', error)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const getUser = async () => {
|
|||
|
|
const token = uni.getStorageSync("token")
|
|||
|
|
if (!token) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
const res = await getUserInfo()
|
|||
|
|
if (res.code === 200) {
|
|||
|
|
console.log(res.data)
|
|||
|
|
uni.setStorageSync("userInfo", res.data.userInfo)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|