已对接登录和下单选择商品

This commit is contained in:
2022-05-09 10:03:33 +08:00
parent 883c24b7be
commit d03105a7d0
14 changed files with 227 additions and 125 deletions
+12 -8
View File
@@ -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
View File
@@ -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
}
}
+1 -1
View File
@@ -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) => {