TestEShopDist/src/use/useLogin.ts
2022-07-06 20:29:48 +08:00

136 lines
4.5 KiB
TypeScript

import useUserInfo from "./useUserInfo"
import Taro, { useDidShow, useRouter } from "@tarojs/taro"
import { GetWxUserInfoApi, GetAdminUserInfoApi, GetPhoneNumberApi, BindingCompanyApi } from "@/api/user"
import useLoginRequest from "./useLoginRequest"
import { SHARE_SCENE } from "@/common/enum"
import { GetShortCodeApi } from "@/api/share"
import { alert } from "@/common/common"
import { LoginApi } from "@/api/login"
export default () => {
const {setUserInfo, setAdminUserInfo, setSortCode, userInfo} = useUserInfo()
useDidShow(() => {
checkLogin()
})
//登录请求
const {login} = useLoginRequest()
// const {fetchData:login} = LoginApi()
const wxLogin = async () => {
try {
await login()
getAdminUserInfo()
} catch(e) {
console.log('登录失败::',e)
}
}
//获取用户信息
const {fetchData: useFetchData} = GetAdminUserInfoApi()
const getAdminUserInfo = async () => {
let res = await useFetchData()
setAdminUserInfo({...res.data})
getShortCode(res.data.user_id)
}
//登录加checkLogin检查
const checkLogin = () => {
return new Promise( async (reslove) => {
if(!userInfo.token) {
await wxLogin()
reslove(true)
} else {
Taro.checkSession({
success: async () => {
reslove(true)
if(!userInfo.adminUserInfo) getAdminUserInfo()
},
fail: async () => {
await wxLogin()
reslove(true)
}
})
}
})
}
//获取用户头像等信息数据
const {fetchData: fetchDataUserInfo} = GetWxUserInfoApi()
const getSelfUserInfo = async () => {
return new Promise((reslove, reject) => {
if(userInfo.adminUserInfo?.is_authorize_name) {
reslove(true)
return true
}
Taro.getUserProfile({
desc: '用于完善会员资料',
success: async (res) => {
if(!userInfo.session_key) {
await wxLogin()
}
const user_res = await fetchDataUserInfo({
session_key: userInfo.session_key,
raw_data: res.rawData,
signature: res.signature,
encrypted_data: res.encryptedData,
iv: res.iv
})
if(user_res.success) {
setUserInfo({...user_res.data})
getAdminUserInfo()
reslove(true)
} else {
reject(user_res.msg)
}
},
fail:(e) => {
console.log('授权失败::',e)
reject(e.errMsg)
}
})
})
}
//获取手机号码
const {fetchData: fetchDataUserPhone} = GetPhoneNumberApi()
const {fetchData: fetchBindingCompany} = BindingCompanyApi()
const getPhoneNumber = (code) => {
return new Promise( async (reslove, reject) => {
if(userInfo.adminUserInfo?.is_authorize_phone) {
reslove(true)
return true
}
const res = await fetchDataUserPhone({code})
if(res.success) {
setUserInfo({...userInfo.userInfo, phone:res.data.phone_number})
await fetchBindingCompany()
getAdminUserInfo()
reslove(res.data)
} else {
reject(res.msg)
}
})
}
//获取分享码(右上角分享码)
const {SharePage} = SHARE_SCENE
const {fetchData: fetchDataShortCode} = GetShortCodeApi()
const getShortCode = async (user_id) => {
const {data: resPage} = await fetchDataShortCode({"share_user_id": user_id, type:SharePage.value})
setSortCode({...userInfo.sort_code, shareShortPage: {title: '陆盈电子商城', code: resPage.md5_key, img:''}})
}
return {
checkLogin,
wxLogin,
getSelfUserInfo,
getPhoneNumber,
userInfo,
getAdminUserInfo
}
}