对接api3

This commit is contained in:
2022-05-09 10:03:33 +08:00
parent 4c46c6e22d
commit 883c24b7be
14 changed files with 294 additions and 203 deletions
+9 -6
View File
@@ -2,9 +2,11 @@
import Taro from '@tarojs/taro'
import { useRef, useState } from 'react'
import {BASE_URL} from '@/common/constant'
import {BASE_URL, WX_APPID} from '@/common/constant'
import useUserInfo from "./useUserInfo"
import qs from 'qs';
type Params = {
code: string|null
success: true|false
@@ -118,7 +120,7 @@ export const useRequest = (options:option = {
const stateRef = useRef({...params})
const [state, setState] = useState({...stateRef.current})
const {removeToken} = useUserInfo()
// 请求函数
const fetchData = async (sub_options?:any) => {
stateRef.current.loading = true
@@ -139,6 +141,7 @@ export const useRequest = (options:option = {
...{
header: {
"Platform": 6,
"Appid": WX_APPID,
"Authorization": token || stateRef.current.token,
}
},
@@ -167,10 +170,10 @@ export const useRequest = (options:option = {
title: `错误:${showStatus(statusCode)}`
})
if (statusCode === 401) {
//未登录
// Taro.reLaunch({
// url: '/pages/login/index'
// })
removeToken()
Taro.reLaunch({
url: '/pages/index/index'
})
}
}
+102
View File
@@ -0,0 +1,102 @@
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"
export default () => {
const {setToken, setSessionKey, setUserInfo, userInfo} = useUserInfo()
useEffect(() => {
console.log('userInfo::',userInfo.token)
}, [userInfo])
//登录请求
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 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()
}
})
}
}
//获取用户头像等信息数据
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
},
header: {
platform: 6,
Authorization: userInfo.token,
Appid: WX_APPID
},
success: (e) => {
setUserInfo({})
},
fail: (e) => {
console.log(e)
}
})
}
})
}
return {
checkLogin,
wxLogin,
getUserInfo
}
}
-87
View File
@@ -1,87 +0,0 @@
import { useEffect, useState } from "react"
import { WX_APPID } from "@/common/constant"
import useUserInfo from "./useUserInfo"
export default () => {
const {setToken, setSessionKey, setUserInfo} = useUserInfo()
const [loginState, setLoginState] = useState({
session_key: '',
token: '',
userInfo: ''
})
const getToken = () => {
Taro.login({
success: function (res) {
if (res.code) {
console.log('number::', res.code)
Taro.request({
url: 'https://dev.zzfzyc.com/lymarket/v1/mall/login',
method: 'POST',
data: {
js_code: res.code,
},
header: {
platform: 6,
Appid: WX_APPID
},
success: (e) => {
let {data} = e.data
setLoginState({
...loginState,
session_key: data.session_key,
token: data.token
})
setToken(data.token)
setLoginState(data.session_key)
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
},
fail: function(e) {
console.log('e::',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: loginState.session_key,
raw_data: res.rawData,
signature: res.signature,
encrypted_data: res.encryptedData,
iv: res.iv
},
header: {
platform: 6,
Authorization: loginState.token,
Appid: WX_APPID
},
success: (e) => {
setUserInfo({})
},
fail: (e) => {
console.log(e)
}
})
}
})
}
return {
getToken,
getUserInfo
}
}
+2 -2
View File
@@ -2,7 +2,7 @@ import { useDispatch, useSelector } from 'react-redux'
import { CLEAR_SESSIONKEY, SET_USERINFO, SET_TOKEN, SET_SESSIONKEY, CLEAR_USERINFO, CLEAR_TOKEN} from '@/constants/userInfo'
import {DataParam, UserParam} from '@/reducers/userInfo'
export default () => {
const user = useSelector((state:DataParam) => state.userInfo) as DataParam
const userInfo = useSelector((state:DataParam) => state.userInfo) as DataParam
const dispatch = useDispatch()
const setToken = (token: string) => {
@@ -36,6 +36,6 @@ export default () => {
removeUserInfo,
removeToken,
removeSessionKey,
user, //响应式数据返回
userInfo, //响应式数据返回
}
}