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'
|
2024-10-09 10:14:51 +08:00
|
|
|
|
import {
|
|
|
|
|
|
myResume,
|
|
|
|
|
|
} from '@/api/resume.js';
|
2024-04-12 17:57:52 +08:00
|
|
|
|
|
|
|
|
|
|
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-10-09 10:14:51 +08:00
|
|
|
|
resumeInfo: {},
|
2024-04-12 17:57:52 +08:00
|
|
|
|
},
|
|
|
|
|
|
actions: {
|
2024-10-09 10:14:51 +08:00
|
|
|
|
getResumeInfo({
|
|
|
|
|
|
commit,
|
|
|
|
|
|
dispatch
|
|
|
|
|
|
}) {
|
|
|
|
|
|
myResume().then(res => {
|
|
|
|
|
|
const data = res.data.data
|
|
|
|
|
|
commit('upDataResumeInfo', data)
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
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
|
|
|
|
|
|
}) {
|
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({
|
2024-10-09 10:14:51 +08:00
|
|
|
|
type: 'wgs84',
|
2024-07-17 11:06:43 +08:00
|
|
|
|
success: function(res) {
|
2024-10-09 10:14:51 +08:00
|
|
|
|
console.warn('用户位置获取成功')
|
2024-07-17 11:06:43 +08:00
|
|
|
|
const {
|
|
|
|
|
|
longitude,
|
|
|
|
|
|
latitude
|
|
|
|
|
|
} = res
|
|
|
|
|
|
commit('setLocation', {
|
|
|
|
|
|
longitude,
|
|
|
|
|
|
latitude
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
fail: function(err) {
|
2024-10-09 10:14:51 +08:00
|
|
|
|
console.warn('用户位置获取失败')
|
2024-07-17 11:06:43 +08:00
|
|
|
|
commit('setLocation', null)
|
|
|
|
|
|
},
|
2024-10-09 10:14:51 +08:00
|
|
|
|
complete: function(e) {
|
|
|
|
|
|
console.warn('getUserLocation' + JSON.stringify(e))
|
|
|
|
|
|
}
|
2024-07-17 11:06:43 +08:00
|
|
|
|
})
|
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);
|
2024-10-09 10:14:51 +08:00
|
|
|
|
}
|
2024-04-12 17:57:52 +08:00
|
|
|
|
},
|
|
|
|
|
|
mutations: {
|
2024-10-09 10:14:51 +08:00
|
|
|
|
upDataResumeInfo(state, payload) {
|
|
|
|
|
|
state.resumeInfo = payload
|
|
|
|
|
|
},
|
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
|