130 lines
4.4 KiB
TypeScript
130 lines
4.4 KiB
TypeScript
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"
|
||
import { alert } from "@/common/common"
|
||
|
||
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})
|
||
getAdminUserInfo()
|
||
reslove(true)
|
||
} else {
|
||
reject(user_res.msg)
|
||
}
|
||
},
|
||
fail:(e) => {
|
||
console.log('授权失败::',e)
|
||
reject(e.errMsg)
|
||
}
|
||
})
|
||
})
|
||
|
||
|
||
}
|
||
|
||
//获取手机号码
|
||
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 {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
|
||
}
|
||
}
|