You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/src/stores/AuthStore.js

89 lines
2.7 KiB
JavaScript

import { create } from 'zustand'
import { devtools } from 'zustand/middleware'
import { fetchJSON, postJSON } from '@/utils/request'
const API_HOST = 'https://p9axztuwd7x8a7.mycht.cn/whatsapp_server'
const useAuthStore = create((set, get) => ({
// GLOBAL_SALES_LOGIN_USER
// {"userId":"383","username":"廖一军","avatarUrl":"https://static-legacy.dingtalk.com/media/lALPBDDrhXr716HNAoDNAoA_640_640.png","mobile":"+86-18777396951","email":"lyj@hainatravel.com","openId":"iioljiPmZ4RPoOYpkFiSn7IKAiEiE","accountList":[{"OPI_SN":383,"OPI_Code":"LYJ","OPI_NameCN":"廖一军","OPI_DEI_SN":7,"OPI_NameEN":"Jimmy Liow"},{"OPI_SN":609,"OPI_Code":"LYJAH","OPI_NameCN":"廖一军ah","OPI_DEI_SN":28,"OPI_NameEN":"Jimmy Liow"}]}
loginUser: {
userId: -1,
// username: '廖一军',
// avatarUrl: 'https://static-legacy.dingtalk.com/media/lALPBDDrhXr716HNAoDNAoA_640_640.png',
// mobile: '86-18777396951',
// email: 'lyj@hainatravel.com',
// openId: 'iioljiPmZ4RPoOYpkFiSn7IKAiEiE',
// accountList: ['LYJ', 'LYJAH', 'LYJGH'],
// permissionList: ['view_chat', 'send_msg'],
},
loginStatus: 0,
fetchUser: async (authCode) => {
const { saveUserSession } = get()
set(() => ({
loginStatus: 200
}))
const json = await fetchJSON(`https://p9axztuwd7x8a7.mycht.cn/dingtalk/dingtalkwork/WhatsAppAuth`, { authCode })
if (json.errcode === 0) {
set(() => ({
loginUser: {
userId: json.result.opisn,
accountName: json.result.opicode,
username: json.result.nick,
avatarUrl: json.result.avatarUrl,
mobile: '+' + json.result.stateCode + '-' + json.result.mobile,
email: json.result.email,
openId: json.result.openId,
accountList: json.result.accountlist,
}
}))
saveUserSession()
set(() => ({
loginStatus: 302
}))
} else {
set(() => ({
loginStatus: 403
}))
}
},
loadUserSession: () => {
const sessionData = window.sessionStorage.getItem('GLOBAL_SALES_LOGIN_USER')
let userData = {
userId: 0,
username: '',
avatarUrl: '',
mobile: '',
email: '',
openId: '',
accountList: [],
permissionList: [],
}
if (sessionData !== null) {
userData = JSON.parse(sessionData)
set(() => ({
loginUser: userData
}))
}
return userData
},
saveUserSession: () => {
const { loginUser } = get()
window.sessionStorage.setItem('GLOBAL_SALES_LOGIN_USER', JSON.stringify(loginUser))
},
}))
export default useAuthStore