Files
aishangjia-uniapp/store/modules/user.js
2023-08-04 13:14:48 +08:00

206 lines
4.1 KiB
JavaScript
Executable File

import {
ACCESS_TOKEN,
USER_ID,
USER_INFO
} from '@/store/mutation-types'
import storage from '@/utils/storage'
import * as LoginApi from '@/api/login'
import * as UserProfileApi from '@/api/love-user-profile.js'
import {
alipayLogin
} from '@/api/login.js'
import {
getUser,
updateUser
} from '@/api/user.js'
// 登陆成功后执行
const loginSuccess = ({commit,dispatch}, data) => {
const {
access_token,
user
} = data
// 过期时间30天
const expiryTime = 30 * 86400
// 保存tokne和userId到缓存
storage.set(USER_ID, user.userId, expiryTime)
storage.set(USER_INFO, user, expiryTime)
storage.set(ACCESS_TOKEN, access_token, expiryTime)
// 记录到store全局变量
commit('SET_TOKEN', access_token)
commit('SET_USER_ID', user.userId)
commit('SET_USER', user)
dispatch('ConnectSocket')
console.log("user: ",user);
}
const user = {
state: {
// 用户认证token
token: '',
// 用户ID
userId: null,
// 用户
userInfo: null,
userProfile: null
},
mutations: {
SET_TOKEN: (state, value) => {
state.token = value
},
SET_USER_ID: (state, value) => {
state.userId = value
},
SET_USER: (state, value) => {
state.userInfo = value
storage.set(USER_INFO, value)
}
},
actions: {
GetUserInfo({commit}, data){
getUser().then(res => {
if (res.code == 0 && res.data.username != 'www') {
commit('SET_USER', res.data)
}
})
},
GetUserProfile({state, commit}, data) {
},
// 用户登录 (普通登录: 输入手机号和验证码)
Login({
commit,dispatch
}, data) {
return new Promise((resolve, reject) => {
LoginApi.login(data)
.then(response => {
const result = response.data
loginSuccess({commit,dispatch}, result)
resolve(response)
})
.catch(reject)
})
},
// 微信小程序一键授权登录 (获取用户基本信息)
LoginMpWx({
commit, dispatch
}, data) {
return new Promise((resolve, reject) => {
LoginApi.loginMpWx({
form: data
}, {
isPrompt: false
})
.then(response => {
const result = response.data
loginSuccess({commit, dispatch}, result)
resolve(response)
})
.catch(reject)
})
},
// 支付宝小程序一键授权登录 (获取用户基本信息)
LoginMpAlipay({
commit
}, data) {
return new Promise((resolve, reject) => {
alipayLogin({
data
}, {
isPrompt: false
})
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 微信公众号一键授权登录 (获取用户基本信息)
LoginWxOfficial({
commit
}, data) {
return new Promise((resolve, reject) => {
LoginApi.loginWxOfficial({
form: data
}, {
isPrompt: false
})
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 微信小程序一键授权登录 (授权手机号)
LoginMpWxMobile({
commit, dispatch
}, data) {
console.log("data: ",data);
return new Promise((resolve, reject) => {
LoginApi.loginMpWxMobile(data)
.then(response => {
const result = response.data
console.log("result999999: ",result);
console.log("commit: ",commit);
loginSuccess({commit, dispatch}, result)
resolve(response)
})
.catch(reject)
})
},
// 退出登录
Logout({
commit,dispatch
}, data) {
const store = this
return new Promise((resolve, reject) => {
if (store.getters.userId > 0) {
// 删除缓存中的tokne和userId
storage.remove(USER_ID)
storage.remove(ACCESS_TOKEN)
storage.remove(USER_INFO)
// 记录到store全局变量
commit('SET_TOKEN', '')
commit('SET_USER_ID', null)
commit('SET_USER', null)
resolve()
}
dispatch('CloseSocket')
})
},
setUserInfo({
commit
}, data) {
commit('SET_USER', data)
},
setToken({
commit
}, data) {
commit('SET_TOKEN', data)
},
setUserId({
commit
}, data) {
commit('SET_USER_ID', data)
}
}
}
export default user