feat(用户): 添加通过openid获取用户信息功能并优化登录流程
- 新增getWxUserByOpenid接口用于通过openid获取用户信息 - 优化登录流程,优先从本地缓存获取openid - 简化订单获取逻辑,移除企业用户判断分支
This commit is contained in:
parent
e16966f31c
commit
db6f31228d
|
|
@ -10,6 +10,10 @@ export async function mpCodeToOpenId(code: string) {
|
||||||
return await http.get<WxUserDTO>("wx/mpCodeToOpenId", { code });
|
return await http.get<WxUserDTO>("wx/mpCodeToOpenId", { code });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getWxUserByOpenid(openid: string) {
|
||||||
|
return await http.get<WxUserDTO>("wx/getWxUserByOpenid", { openid });
|
||||||
|
}
|
||||||
|
|
||||||
/** 根据openid获取动态码 */
|
/** 根据openid获取动态码 */
|
||||||
export async function generateDynamicCode(openid: string) {
|
export async function generateDynamicCode(openid: string) {
|
||||||
return await http.get<DynamicCodeResponse>("wx/generateDynamicCode", { openid });
|
return await http.get<DynamicCodeResponse>("wx/generateDynamicCode", { openid });
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { useCartStore } from '@/pinia/stores/cart'
|
||||||
import { getShopListApi } from '@/api/shop'
|
import { getShopListApi } from '@/api/shop'
|
||||||
import type { ShopEntity } from '@/api/shop/types'
|
import type { ShopEntity } from '@/api/shop/types'
|
||||||
import ProductContainer from './components/product-container.vue';
|
import ProductContainer from './components/product-container.vue';
|
||||||
import { generateDynamicCode, mpCodeToOpenId } from '@/api/users'
|
import { generateDynamicCode, getWxUserByOpenid, mpCodeToOpenId } from '@/api/users'
|
||||||
import { toHttpsUrl } from '@/utils'
|
import { toHttpsUrl } from '@/utils'
|
||||||
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
|
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
|
|
@ -30,12 +30,15 @@ const shopId = ref<number>(0)
|
||||||
|
|
||||||
// 页面加载
|
// 页面加载
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
uni.login({
|
let openid = uni.getStorageSync('local_openid');
|
||||||
provider: 'weixin', //使用微信登录
|
if (!openid) {
|
||||||
success: function (loginRes) {
|
uni.login({
|
||||||
|
provider: 'weixin', //使用微信登录
|
||||||
|
success: function (loginRes) {
|
||||||
mpCodeToOpenId(loginRes.code).then((wxUser) => {
|
mpCodeToOpenId(loginRes.code).then((wxUser) => {
|
||||||
console.log('wxUser:', wxUser);
|
console.log('wxUser:', wxUser);
|
||||||
wxStore.wxMpCallback(wxUser.data);
|
wxStore.wxMpCallback(wxUser.data);
|
||||||
|
uni.setStorageSync('local_openid', wxUser.data.openid || '');
|
||||||
if (wxUser.data.ab98UserId) {
|
if (wxUser.data.ab98UserId) {
|
||||||
ab98UserStore.setAb98UserName(wxUser.data.ab98Name || wxUser.data.nickName || '')
|
ab98UserStore.setAb98UserName(wxUser.data.ab98Name || wxUser.data.nickName || '')
|
||||||
ab98UserStore.setAb98UserFaceImg(wxUser.data.ab98FaceImg || '')
|
ab98UserStore.setAb98UserFaceImg(wxUser.data.ab98FaceImg || '')
|
||||||
|
|
@ -43,8 +46,19 @@ onMounted(async () => {
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
console.error('mpCodeToOpenId error:', e)
|
console.error('mpCodeToOpenId error:', e)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
// 从本地缓存中获取用户信息
|
||||||
|
const wxUser = await getWxUserByOpenid(openid);
|
||||||
|
console.log('wxUser:', wxUser);
|
||||||
|
wxStore.wxMpCallback(wxUser.data);
|
||||||
|
uni.setStorageSync('local_openid', wxUser.data.openid || '');
|
||||||
|
if (wxUser.data.ab98UserId) {
|
||||||
|
ab98UserStore.setAb98UserName(wxUser.data.ab98Name || wxUser.data.nickName || '')
|
||||||
|
ab98UserStore.setAb98UserFaceImg(wxUser.data.ab98FaceImg || '')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (showShopList.value) {
|
if (showShopList.value) {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ const hasReturn = ref<number>(0)
|
||||||
// 处理标签页切换
|
// 处理标签页切换
|
||||||
const handleTabChange = (event: { index: number; name: string | number }) => {
|
const handleTabChange = (event: { index: number; name: string | number }) => {
|
||||||
hasReturn.value = event.index
|
hasReturn.value = event.index
|
||||||
|
// orderStore.getOrders(wxStore.corpid, wxStore.openid, wxStore.qyUserId, hasReturn.value);
|
||||||
orderStore.getOrders(wxStore.corpid, wxStore.openid, wxStore.qyUserId, hasReturn.value)
|
orderStore.getOrders(wxStore.corpid, wxStore.openid, wxStore.qyUserId, hasReturn.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,10 @@ export const useOrderStore = defineStore("order", () => {
|
||||||
|
|
||||||
const getOrders = async (corpid: string, openid: string, qyUserId: number, hasReturn: number) => {
|
const getOrders = async (corpid: string, openid: string, qyUserId: number, hasReturn: number) => {
|
||||||
try {
|
try {
|
||||||
const { data } = qyUserId ?
|
/* const { data } = qyUserId ?
|
||||||
await getOrdersByQyUserIdApi(qyUserId, hasReturn)
|
await getOrdersByQyUserIdApi(qyUserId, hasReturn)
|
||||||
: await getOrdersByOpenIdApi(corpid, openid, hasReturn);
|
: await getOrdersByOpenIdApi(corpid, openid, hasReturn); */
|
||||||
|
const { data } = await getOrdersByOpenIdApi(corpid, openid, hasReturn);
|
||||||
|
|
||||||
// 重组订单结构
|
// 重组订单结构
|
||||||
orders.value = data.orders.map(order => ({
|
orders.value = data.orders.map(order => ({
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue