Some checks failed
Check / lint (18.x, macos-latest) (push) Has been cancelled
Check / lint (18.x, ubuntu-latest) (push) Has been cancelled
Check / lint (18.x, windows-latest) (push) Has been cancelled
Check / lint (20.x, macos-latest) (push) Has been cancelled
Check / lint (20.x, ubuntu-latest) (push) Has been cancelled
Check / lint (20.x, windows-latest) (push) Has been cancelled
Check / lint (22.x, macos-latest) (push) Has been cancelled
Check / lint (22.x, ubuntu-latest) (push) Has been cancelled
Check / lint (22.x, windows-latest) (push) Has been cancelled
Check / typecheck (18.x, macos-latest) (push) Has been cancelled
Check / typecheck (18.x, ubuntu-latest) (push) Has been cancelled
Check / typecheck (18.x, windows-latest) (push) Has been cancelled
Check / typecheck (20.x, macos-latest) (push) Has been cancelled
Check / typecheck (20.x, ubuntu-latest) (push) Has been cancelled
Check / typecheck (20.x, windows-latest) (push) Has been cancelled
Check / typecheck (22.x, macos-latest) (push) Has been cancelled
Check / typecheck (22.x, ubuntu-latest) (push) Has been cancelled
Check / typecheck (22.x, windows-latest) (push) Has been cancelled
Check / build (build, 18.x, macos-latest) (push) Has been cancelled
Check / build (build, 18.x, ubuntu-latest) (push) Has been cancelled
Check / build (build, 18.x, windows-latest) (push) Has been cancelled
Check / build (build, 20.x, macos-latest) (push) Has been cancelled
Check / build (build, 20.x, ubuntu-latest) (push) Has been cancelled
Check / build (build, 20.x, windows-latest) (push) Has been cancelled
Check / build (build, 22.x, macos-latest) (push) Has been cancelled
Check / build (build, 22.x, ubuntu-latest) (push) Has been cancelled
Check / build (build, 22.x, windows-latest) (push) Has been cancelled
Check / build (build:app, 18.x, macos-latest) (push) Has been cancelled
Check / build (build:app, 18.x, ubuntu-latest) (push) Has been cancelled
Check / build (build:app, 18.x, windows-latest) (push) Has been cancelled
Check / build (build:app, 20.x, macos-latest) (push) Has been cancelled
Check / build (build:app, 20.x, ubuntu-latest) (push) Has been cancelled
Check / build (build:app, 20.x, windows-latest) (push) Has been cancelled
Check / build (build:app, 22.x, macos-latest) (push) Has been cancelled
Check / build (build:app, 22.x, ubuntu-latest) (push) Has been cancelled
Check / build (build:app, 22.x, windows-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 18.x, macos-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 18.x, ubuntu-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 18.x, windows-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 20.x, macos-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 20.x, ubuntu-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 20.x, windows-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 22.x, macos-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 22.x, ubuntu-latest) (push) Has been cancelled
Check / build (build:mp-weixin, 22.x, windows-latest) (push) Has been cancelled
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>
|