From db6f31228d23f2d74efdda8df785fd3b592e76da Mon Sep 17 00:00:00 2001 From: dzq Date: Thu, 27 Nov 2025 11:02:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=94=A8=E6=88=B7):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=80=9A=E8=BF=87openid=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增getWxUserByOpenid接口用于通过openid获取用户信息 - 优化登录流程,优先从本地缓存获取openid - 简化订单获取逻辑,移除企业用户判断分支 --- src/api/users/index.ts | 4 ++++ src/pages/index/index.vue | 26 ++++++++++++++++++++------ src/pages/order/index.vue | 1 + src/pinia/stores/order.ts | 5 +++-- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/api/users/index.ts b/src/api/users/index.ts index 46a4a48..b93044e 100644 --- a/src/api/users/index.ts +++ b/src/api/users/index.ts @@ -10,6 +10,10 @@ export async function mpCodeToOpenId(code: string) { return await http.get("wx/mpCodeToOpenId", { code }); } +export async function getWxUserByOpenid(openid: string) { + return await http.get("wx/getWxUserByOpenid", { openid }); +} + /** 根据openid获取动态码 */ export async function generateDynamicCode(openid: string) { return await http.get("wx/generateDynamicCode", { openid }); diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index c0e6276..7e43905 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -6,7 +6,7 @@ import { useCartStore } from '@/pinia/stores/cart' import { getShopListApi } from '@/api/shop' import type { ShopEntity } from '@/api/shop/types' 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 { useAb98UserStore } from '@/pinia/stores/ab98-user' import { storeToRefs } from 'pinia' @@ -30,12 +30,15 @@ const shopId = ref(0) // 页面加载 onMounted(async () => { - uni.login({ - provider: 'weixin', //使用微信登录 - success: function (loginRes) { + let openid = uni.getStorageSync('local_openid'); + if (!openid) { + uni.login({ + provider: 'weixin', //使用微信登录 + success: function (loginRes) { mpCodeToOpenId(loginRes.code).then((wxUser) => { 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 || '') @@ -43,8 +46,19 @@ onMounted(async () => { }).catch((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) { try { diff --git a/src/pages/order/index.vue b/src/pages/order/index.vue index 53fa3fa..d1dd92f 100644 --- a/src/pages/order/index.vue +++ b/src/pages/order/index.vue @@ -21,6 +21,7 @@ const hasReturn = ref(0) // 处理标签页切换 const handleTabChange = (event: { index: number; name: string | number }) => { hasReturn.value = event.index + // orderStore.getOrders(wxStore.corpid, wxStore.openid, wxStore.qyUserId, hasReturn.value); orderStore.getOrders(wxStore.corpid, wxStore.openid, wxStore.qyUserId, hasReturn.value) } diff --git a/src/pinia/stores/order.ts b/src/pinia/stores/order.ts index 8ea847b..692b4e6 100644 --- a/src/pinia/stores/order.ts +++ b/src/pinia/stores/order.ts @@ -19,9 +19,10 @@ export const useOrderStore = defineStore("order", () => { const getOrders = async (corpid: string, openid: string, qyUserId: number, hasReturn: number) => { try { - const { data } = qyUserId ? + /* const { data } = qyUserId ? 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 => ({