已对接登录和下单选择商品
This commit is contained in:
+12
-8
@@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
import Taro from '@tarojs/taro'
|
||||
import Taro, { useRouter } from '@tarojs/taro'
|
||||
import { useRef, useState } from 'react'
|
||||
import {BASE_URL, WX_APPID} from '@/common/constant'
|
||||
import useUserInfo from "./useUserInfo"
|
||||
@@ -120,7 +120,8 @@ export const useRequest = (options:option = {
|
||||
|
||||
const stateRef = useRef({...params})
|
||||
const [state, setState] = useState({...stateRef.current})
|
||||
const {removeToken} = useUserInfo()
|
||||
const {removeToken, removeSessionKey} = useUserInfo()
|
||||
const router = useRouter()
|
||||
// 请求函数
|
||||
const fetchData = async (sub_options?:any) => {
|
||||
stateRef.current.loading = true
|
||||
@@ -166,16 +167,19 @@ export const useRequest = (options:option = {
|
||||
stateRef.current.data = data
|
||||
stateRef.current.total = data?.list ? data?.total : 0
|
||||
}else{
|
||||
Taro.showToast({
|
||||
title: `错误:${showStatus(statusCode)}`
|
||||
})
|
||||
if (statusCode === 401) {
|
||||
removeToken()
|
||||
Taro.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
removeSessionKey()
|
||||
// remove
|
||||
// Taro.reLaunch({
|
||||
// url: router.path +'?' + qs.stringify(router.params)
|
||||
// })
|
||||
} else {
|
||||
Taro.showToast({
|
||||
title: `错误:${showStatus(statusCode)}`,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
|
||||
+84
-70
@@ -2,8 +2,9 @@ import { useEffect, useState } from "react"
|
||||
import { WX_APPID } from "@/common/constant"
|
||||
import useUserInfo from "./useUserInfo"
|
||||
import Taro, { useRouter } from "@tarojs/taro"
|
||||
import { Login } from "@/api/login"
|
||||
|
||||
import { LoginApi } from "@/api/login"
|
||||
import { GetWxUserInfoApi } from "@/api/user"
|
||||
import qs from 'qs';
|
||||
|
||||
export default () => {
|
||||
const {setToken, setSessionKey, setUserInfo, userInfo} = useUserInfo()
|
||||
@@ -12,91 +13,104 @@ export default () => {
|
||||
console.log('userInfo::',userInfo.token)
|
||||
}, [userInfo])
|
||||
|
||||
const router = useRouter()
|
||||
//登录请求
|
||||
const {fetchData} = Login()
|
||||
const loginRequest = async (code) => {
|
||||
const {data, success} = await fetchData({js_code: code})
|
||||
if(success) {
|
||||
setToken(data.token)
|
||||
setSessionKey(data.session_key)
|
||||
} else {
|
||||
Taro.showToast({
|
||||
title:'登录失败',
|
||||
icon:"none"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const {fetchData} = LoginApi()
|
||||
//微信登录
|
||||
const wxLogin = () => {
|
||||
Taro.login({
|
||||
success: function async (res) {
|
||||
if (res.code) {
|
||||
loginRequest(res.code)
|
||||
} else {
|
||||
console.log('登录失败!' + res.errMsg)
|
||||
}
|
||||
},
|
||||
fail: function(e) {
|
||||
console.log('登录失败!::',e)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const router = useRouter()
|
||||
//登录加checkLogin检查
|
||||
const checkLogin = () => {
|
||||
if(!userInfo.token) {
|
||||
wxLogin()
|
||||
if(router.path != '/pages/index/index') {
|
||||
Taro.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}
|
||||
} else {
|
||||
Taro.checkSession({
|
||||
fail () {
|
||||
wxLogin()
|
||||
return new Promise((reslove, reject) => {
|
||||
Taro.login({
|
||||
success: async (res) => {
|
||||
if (res.code) {
|
||||
const {data, success, msg} = await fetchData({js_code: res.code})
|
||||
if(success) {
|
||||
console.log('token::',data.token)
|
||||
setToken(data.token)
|
||||
setSessionKey(data.session_key)
|
||||
reslove(data)
|
||||
Taro.reLaunch({
|
||||
url: router.path +'?' + qs.stringify(router.params)
|
||||
})
|
||||
} else {
|
||||
Taro.showToast({
|
||||
title:'登录失败',
|
||||
icon:"none"
|
||||
})
|
||||
reject(msg)
|
||||
}
|
||||
} else {
|
||||
console.log('登录失败!' + res.errMsg)
|
||||
reject(res.errMsg)
|
||||
}
|
||||
},
|
||||
fail: function(e) {
|
||||
console.log('登录失败!::',e)
|
||||
reject(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
//获取用户头像等信息数据
|
||||
const getUserInfo = () => {
|
||||
Taro.getUserProfile({
|
||||
desc: '用于完善会员资料',
|
||||
success: (res) => {
|
||||
Taro.request({
|
||||
url: 'https://dev.zzfzyc.com/lymarket/v1/mall/user/decrypt',
|
||||
method: 'POST',
|
||||
data: {
|
||||
session_key: userInfo.sessionkey,
|
||||
raw_data: res.rawData,
|
||||
signature: res.signature,
|
||||
encrypted_data: res.encryptedData,
|
||||
iv: res.iv
|
||||
|
||||
//登录加checkLogin检查
|
||||
const checkLogin = () => {
|
||||
return new Promise( async (reslove) => {
|
||||
if(!userInfo.token) {
|
||||
await wxLogin()
|
||||
reslove(true)
|
||||
} else {
|
||||
Taro.checkSession({
|
||||
success: async () => {
|
||||
reslove(true)
|
||||
},
|
||||
header: {
|
||||
platform: 6,
|
||||
Authorization: userInfo.token,
|
||||
Appid: WX_APPID
|
||||
},
|
||||
success: (e) => {
|
||||
setUserInfo({})
|
||||
},
|
||||
fail: (e) => {
|
||||
console.log(e)
|
||||
fail: async () => {
|
||||
await wxLogin()
|
||||
reslove(true)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
//获取用户头像等信息数据
|
||||
const {fetchData: fetchDataUserInfo} = GetWxUserInfoApi()
|
||||
const getSelfUserInfo = async () => {
|
||||
return new Promise((reslove, reject) => {
|
||||
if(!userInfo.userInfo) {
|
||||
Taro.getUserProfile({
|
||||
desc: '用于完善会员资料',
|
||||
success: async (res) => {
|
||||
if(!userInfo.session_key) {
|
||||
await wxLogin()
|
||||
}
|
||||
const {data} = await fetchDataUserInfo({
|
||||
session_key: userInfo.session_key,
|
||||
raw_data: res.rawData,
|
||||
signature: res.signature,
|
||||
encrypted_data: res.encryptedData,
|
||||
iv: res.iv
|
||||
})
|
||||
setUserInfo({...data})
|
||||
reslove(data)
|
||||
},
|
||||
fail:(e) => {
|
||||
reject(e)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
reslove(true)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
checkLogin,
|
||||
wxLogin,
|
||||
getUserInfo
|
||||
getSelfUserInfo
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ export default () => {
|
||||
}
|
||||
|
||||
const setSessionKey = (sessionkey: string) => {
|
||||
dispatch({type:SET_SESSIONKEY, data:{sessionkey}})
|
||||
dispatch({type:SET_SESSIONKEY, data:{session_key: sessionkey}})
|
||||
}
|
||||
|
||||
const setUserInfo = (userInfo: UserParam) => {
|
||||
|
||||
Reference in New Issue
Block a user