import {
setUserToken,
getUserToken,
removeUserToken,
setUser_Uid,
getUserUid,
removeUserUid,
setUserPhone,
getUserPhone,
removeUserPhone,
setUserOpenid,
getUserOpenid,
removeUserOpenid
} from '@/utils/userAuth.uts'
import type { GetUserInfoApiParam,GetUserInfoApiResponse } from '@/api/youhujun/user/after-login/getUserInfo-type.uts'
import { getUserInfo } from '@/api/youhujun/user/after-login/getUserInfo.uts'
import { VITE_APP_TABBAR_HOME_PAGE} from '@/config/page-setting.uts'
type PreLoginRoute = {
url:string,
type:string
}
type UserState = {
token: string,
phone: string,
openid:string,
user_uid:number,
real_auth_status:number,
currentRole: string,
roles:string[],
introduction:string,
nickName:string,
avatar:string,
created_at:string,
sex:number,
loginProvider:string ,
isUniverifyLogin:boolean,
preLoginRoute:PreLoginRoute
}
export const userState = reactive({
token:getUserToken(),
phone:getUserPhone(),
openid:getUserOpenid(),
user_uid:getUserUid(),
real_auth_status:0,
currentRole:'',
roles:[],
introduction:'',
nickName:'',
avatar:'',
created_at:'',
sex:0,
loginProvider:'',
isUniverifyLogin:false,
//记录登录前的原跳转目标
preLoginRoute: {
url: '', // 原跳转的url(如:/pages/home/index)
type: '' // 原导航类型:navigateTo / switchTab
}
} as UserState)
export const setToken = (token:string)=>{
setUserToken(token)
userState.token = token
}
export const setUserUid = (user_uid:number)=>{
setUser_Uid(user_uid)
userState.user_uid = user_uid
}
export const setPhone = (phone:string)=>{
setUserPhone(phone)
userState.phone = phone
}
export const setOpenid = (openid:string)=>{
setUserOpenid(openid)
userState.openid = openid
}
export const setRealAuthStatus = (real_auth_status:number)=>{
userState.real_auth_status = real_auth_status
}
export const setCurrentRole = (currentRole:string)=>{
userState.currentRole = currentRole
}
export const setRoles = (roles:string[])=>{
userState.roles = roles
}
export const setIntroduction = (introduction:string)=>{
userState.introduction = introduction
}
export const setNickName = (nickName:string)=>{
userState.nickName = nickName
}
export const setAvatar = (avatar:string)=>{
userState.avatar = avatar
}
export const setCreatedAt = (created_at:string)=>{
userState.created_at = created_at
}
export const setSex = (sex:number)=>{
userState.sex = sex
}
export const setLoginProvider = (loginProvider:string)=>{
userState.loginProvider = loginProvider
}
export const setIsUniverifyLogin = (isUniverifyLogin:boolean)=>{
userState.isUniverifyLogin = isUniverifyLogin
}
// 记录登录前的跳转目标
export const setPreLoginRoute = (url: string, type: string)=>{
userState.preLoginRoute = { url,type}
}
// 清空原跳转目标(跳转后调用)
export const clearPreLoginRoute = ()=>{
userState.preLoginRoute = { url: '', type: '' };
}
// 重置用户状态(退出登录时使用)
export const resetUserState = () => {
userState.token = ''
userState.user_uid = 0
userState.phone = ''
userState.openid = ''
userState.real_auth_status = 0
userState.currentRole = ''
userState.roles = []
userState.introduction = ''
userState.nickName = ''
userState.avatar = ''
userState.created_at = ''
userState.sex = 0
userState.loginProvider = ''
userState.isUniverifyLogin = false
removeUserToken()
removeUserPhone()
removeUserOpenid()
removeUserUid()
//退出后回首页
uni.switchTab({
url:VITE_APP_TABBAR_HOME_PAGE
})
}
//获取用户信息
export const getUserSatateInfo = async ()=>{
const param:GetUserInfoApiParam = {
openid_type:10
}
const result: GetUserInfoApiResponse|null = await getUserInfo(param)
if(result){
const {code,data} = result
if(code == 0){
const {introduction,avatar,name,roles,phone,created_at,sex,real_auth_status,openid} = data
if(phone){
setPhone(phone)
}
if(openid){
setOpenid(openid)
}
if(introduction){
setIntroduction(introduction)
}
if(avatar){
setAvatar(avatar)
}
if(name){
setNickName(name)
}
if(roles){
setRoles(roles)
}
if(created_at){
setCreatedAt(created_at)
}
if(sex){
setSex(sex||0)
}
if(real_auth_status){
setRealAuthStatus(real_auth_status)
}
}
}
}
// 获取 Token(便捷方法)
export const getToken = () => {
return userState.token
}