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 } }