mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-01-07 04:28:10 +00:00
115 lines
4.4 KiB
TypeScript
115 lines
4.4 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import { setToken, removeToken, redirect } from '@/utils/common'
|
|
import { getMemberInfo as getMemberInfoApi, bindMobile as bindMobileApi } from '@/app/api/member'
|
|
import { logout } from '@/app/api/auth'
|
|
import useConfigStore from '@/stores/config'
|
|
import { useLogin } from '@/hooks/useLogin'
|
|
|
|
interface Member {
|
|
token: string | null
|
|
info: any | null
|
|
levelList: Array<any> | null
|
|
}
|
|
|
|
const useMemberStore = defineStore('member', {
|
|
state: (): Member => {
|
|
return {
|
|
token: uni.getStorageSync(import.meta.env.VITE_REQUEST_STORAGE_TOKEN_KEY),
|
|
info: null,
|
|
levelList: null
|
|
}
|
|
},
|
|
actions: {
|
|
setToken(token: string, callback: any = null) {
|
|
this.token = token
|
|
setToken(token)
|
|
this.getMemberInfo(callback)
|
|
},
|
|
getMemberInfo(callback: any = null) {
|
|
if (!this.token) return
|
|
getMemberInfoApi().then((res: any) => {
|
|
this.info = res.data;
|
|
uni.setStorageSync('wap_member_info', this.info)
|
|
uni.setStorageSync('wap_member_id', res.data.member_id)
|
|
if (this.info.mobile) {
|
|
uni.removeStorageSync('isBindMobile')
|
|
uni.setStorageSync('wap_member_mobile', this.info.mobile) // 存储会员手机号,防止重复请求微信获取手机号接口
|
|
}
|
|
|
|
// #ifdef MP-WEIXIN
|
|
if (this.info && this.info.weapp_openid) {
|
|
// 如果会员已存在则小程序端快捷登录时不再弹出授权弹框
|
|
uni.setStorageSync('member_exist', 1)
|
|
} else {
|
|
const login = useLogin()
|
|
login.getAuthCode({ updateFlag: true }) // 更新openid
|
|
}
|
|
// #endif
|
|
|
|
if (callback) callback();
|
|
}).catch(() => {
|
|
this.logout()
|
|
uni.removeStorageSync('wap_member_mobile');
|
|
uni.removeStorageSync('wap_member_id');
|
|
uni.removeStorageSync('wap_member_not_control_mobile');
|
|
})
|
|
},
|
|
logout(isRedirect: boolean = false) {
|
|
if (!this.token) return
|
|
this.token = ''
|
|
this.info = null
|
|
// if (useConfigStore().login.is_auth_register) {
|
|
uni.setStorageSync('autoLoginLock', true) // todo 普通账号退出登录,在进行三方账号登录不会自动登录
|
|
// }
|
|
logout().then(() => {
|
|
removeToken()
|
|
uni.removeStorageSync('wap_member_info');
|
|
// uni.removeStorageSync('openid');
|
|
uni.removeStorageSync('unionid');
|
|
uni.removeStorageSync('isBindMobile');
|
|
uni.removeStorageSync('nickname');
|
|
uni.removeStorageSync('avatar');
|
|
isRedirect && redirect({ url: '/app/pages/index/index', mode: 'switchTab' })
|
|
}).catch(() => {
|
|
removeToken()
|
|
uni.removeStorageSync('wap_member_info');
|
|
// uni.removeStorageSync('openid');
|
|
uni.removeStorageSync('unionid');
|
|
uni.removeStorageSync('isBindMobile');
|
|
uni.removeStorageSync('nickname');
|
|
uni.removeStorageSync('avatar');
|
|
isRedirect && redirect({ url: '/app/pages/index/index', mode: 'switchTab' })
|
|
})
|
|
},
|
|
// 一键绑定手机号
|
|
bindMobile(e: any) {
|
|
if (e.detail.errMsg == 'getPhoneNumber:ok') {
|
|
uni.showLoading({ title: '' })
|
|
bindMobileApi({
|
|
mobile_code: e.detail.code
|
|
}).then((res: any) => {
|
|
uni.hideLoading()
|
|
this.getMemberInfo()
|
|
}).catch(() => {
|
|
setTimeout(() => {
|
|
uni.hideLoading()
|
|
}, 2000);
|
|
})
|
|
|
|
}
|
|
|
|
if (e.detail.errno == 104) {
|
|
let msg = '用户未授权隐私权限';
|
|
uni.showToast({ title: msg, icon: 'none' })
|
|
}
|
|
if (e.detail.errMsg == "getPhoneNumber:fail user deny") {
|
|
let msg = '用户拒绝获取手机号码';
|
|
uni.showToast({ title: msg, icon: 'none' })
|
|
}
|
|
|
|
}
|
|
}
|
|
})
|
|
|
|
export default useMemberStore
|