2022-06-01 20:33:36 +08:00

129 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import useUserInfo from "./useUserInfo"
import Taro, { useRouter } from "@tarojs/taro"
import { GetWxUserInfoApi, GetAdminUserInfoApi, GetPhoneNumberApi } from "@/api/user"
import useLoginRequest from "./useLoginRequest"
import { SHARE_SCENE } from "@/common/enum"
import { GetShortCodeApi } from "@/api/share"
export default () => {
const {setUserInfo, setAdminUserInfo, setSortCode, userInfo} = useUserInfo()
//登录请求 (调用这个就不能再useHttp中使用当前这个hook, 否则会死循环内存溢出)
// const {fetchData} = LoginApi()
//登录请求
const {login} = useLoginRequest()
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})
reslove(user_res.data)
getAdminUserInfo()
} else {
reject(user_res.msg)
}
},
fail:(e) => {
reject(e)
}
})
})
}
//获取手机号码
const {fetchData: fetchDataUserPhone} = GetPhoneNumberApi()
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})
getAdminUserInfo()
reslove(res.data)
} else {
reject(res.msg)
}
})
}
//获取分享转码
const {ShareDetail, SharePage} = SHARE_SCENE
const {fetchData: fetchDataShortCode} = GetShortCodeApi()
const getShortCode = async (user_id) => {
const {data: resDetail} = await fetchDataShortCode({"share_user_id": user_id, type:ShareDetail.value})
const {data: resPage} = await fetchDataShortCode({"share_user_id": user_id, type:SharePage.value})
setSortCode({shareShortDetail: resDetail.md5_key, shareShortPage: resPage.md5_key})
}
return {
checkLogin,
wxLogin,
getSelfUserInfo,
getPhoneNumber,
userInfo
}
}