Files
jobslink-user-clent/store/models/user.js

290 lines
8.4 KiB
JavaScript
Raw Normal View History

2024-04-12 17:57:52 +08:00
import {
isURL,
validatenull
} from '@/untils/validate.js'
import website from '@/config/website'
import {
loginByUsername,
getUserInfo,
logout,
2024-07-17 11:06:43 +08:00
refreshToken,
mobileIsCms
2024-04-12 17:57:52 +08:00
} from '@/api/user'
import md5 from 'js-md5'
import {
getStore,
setStore
} from '@/untils/store.js'
import {
calcDate
} from '@/untils/date.js'
let refreshTimer = null;
function startRefreshToken(dispatch) {
refreshTimer = setInterval(() => {
const token =
getStore({
name: "token",
debug: true
}) || {};
const date = calcDate(token.datetime, new Date().getTime());
if (validatenull(date)) return;
if (date.seconds >= website.tokenTime) {
dispatch("refreshToken")
.then(() => {})
.catch(() => {});
}
}, 10000);
}
function stopRefreshToken() {
clearInterval(refreshTimer)
}
const user = {
state: {
tenantId: getStore({
name: 'tenantId'
}) || '',
userInfo: getStore({
name: 'userInfo'
}) || [],
token: getStore({
name: 'token'
}) || '',
refreshToken: getStore({
name: 'refreshToken'
}) || '',
userChecked: getStore({
name: 'setUserCheckValue'
}) || false,
sendTimes: getStore({ //用户发送短信次数
name: 'setUserSendTimes'
}) || 0,
seeEnterprise: getStore({ //用户发送短信次数
name: 'enterprise'
}) || 0, // 0 个体招工 企业招工
2024-07-17 11:06:43 +08:00
userLocation: null,
userIsCms: false,
2024-04-12 17:57:52 +08:00
},
actions: {
2024-07-17 11:06:43 +08:00
getMobileIsCms({
commit,
dispatch
}) {
mobileIsCms().then((res) => {
commit('setIsCms', {
val: res.data.data
})
})
},
2024-06-05 14:30:33 +08:00
getUserLocation({
commit,
dispatch
}) {
console.log('getUserLocation null1')
2024-07-17 11:06:43 +08:00
// commit('setLocation', {
// latitude: 31.133980,
// longitude: 104.404419,
2024-06-05 14:30:33 +08:00
// })
2024-07-17 11:06:43 +08:00
uni.getLocation({
type: 'gcj02',
success: function(res) {
const {
longitude,
latitude
} = res
commit('setLocation', {
longitude,
latitude
})
},
fail: function(err) {
commit('setLocation', null)
},
complete: function(e) {}
})
2024-06-05 14:30:33 +08:00
},
2024-04-12 17:57:52 +08:00
//用户点击radio按钮
UserCheckedBtn({
commit
}, val) {
commit('SET_USER_CHECKED', val);
},
//根据用户名登录
LoginByUsername({
commit,
dispatch
}, userInfo) {
return new Promise((resolve, reject) => {
loginByUsername(userInfo.tenantId, userInfo.username, md5(userInfo.password), userInfo.type,
userInfo.key,
2024-04-16 10:51:05 +08:00
userInfo.code, userInfo.token).then(res => {
2024-04-12 17:57:52 +08:00
const data = res.data;
if (data.error_description) {
uni.showToast({
icon: "none",
title: data.error_description,
})
} else {
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
commit('SET_TENANT_ID', data.tenant_id);
commit('SET_USER_INFO', data);
dispatch('refreshAuthState')
dispatch('startRefreshNewsTimer')
startRefreshToken();
}
resolve(res);
}).catch(error => {
reject(error);
})
})
},
//根据手机号登录
LoginByPhone({
commit
}, userInfo) {
return new Promise((resolve) => {
loginByUsername(userInfo.phone, userInfo.code).then(res => {
const data = res.data.data;
commit('SET_TOKEN', data);
resolve();
})
})
},
GetUserInfo({
commit
}) {
return new Promise((resolve, reject) => {
getUserInfo().then((res) => {
const data = res.data.data;
resolve(data);
}).catch(err => {
reject(err);
})
})
},
//刷新token
refreshToken({
state,
commit,
dispatch
}) {
return new Promise((resolve, reject) => {
refreshToken(state.refreshToken, state.tenantId).then(res => {
const data = res.data;
dispatch('refreshAuthState')
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
resolve();
}).catch(error => {
reject(error)
})
})
},
// 登出
LogOut({
dispatch,
commit
}) {
return new Promise((resolve, reject) => {
logout();
stopRefreshToken();
commit('SET_TOKEN', '');
commit('SET_VIPCODE', '0');
resolve();
})
},
//注销session
FedLogOut({
commit
}) {
return new Promise(resolve => {
commit('SET_TOKEN', '');
resolve();
})
},
startRefreshTokenTimer({
state,
commit,
dispatch
}) {
if (state.token) {
dispatch('refreshToken').then(() => {
startRefreshToken(dispatch);
})
}
},
//更新用户接收短信次数
UpdateUserSendTimes({
commit
}, data) {
commit('SET_USER_SENDTIMES', data);
},
},
mutations: {
2024-07-17 11:06:43 +08:00
setIsCms(state, payload) {
state.userIsCms = payload.val
},
2024-06-05 14:30:33 +08:00
setLocation(state, val) {
state.userLocation = val
},
2024-04-12 17:57:52 +08:00
setEnterprise(state, val) { // 0 个体招工 企业招工
state.seeEnterprise = val;
setStore({
name: 'enterprise',
content: val,
})
},
SET_TOKEN: (state, token) => {
state.token = token;
setStore({
name: 'token',
content: state.token,
type: 'session'
})
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
state.refreshToken = refreshToken;
setStore({
name: 'refreshToken',
content: state.refreshToken,
type: 'session'
})
},
SET_TENANT_ID: (state, tenantId) => {
state.tenantId = tenantId;
setStore({
name: 'tenantId',
content: state.tenantId,
type: 'session'
})
},
SET_USER_INFO: (state, userInfo) => {
state.userInfo = userInfo;
setStore({
name: 'userInfo',
content: state.userInfo
})
},
SET_USER_CHECKED: (state, val) => {
state.userChecked = val;
setStore({
name: 'setUserCheckValue',
content: state.userChecked
})
},
SET_USER_SENDTIMES: (state, val) => {
state.sendTimes = val;
setStore({
name: 'setUserSendTimes',
content: state.sendTimes
})
},
}
}
export default user