From 022d307271283088cd0210c0608b18deb118a1c9 Mon Sep 17 00:00:00 2001 From: dzq Date: Wed, 3 Dec 2025 15:43:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=BE=AE=E4=BF=A1=E7=99=BB=E5=BD=95):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AEcid=E8=8E=B7=E5=8F=96corpid?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E5=AE=8C=E5=96=84=E5=BE=AE=E4=BF=A1?= =?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 添加getCorpidById接口用于根据cid查询corpid 修改wxMpCallback方法接收corpid参数 在页面加载时获取corpid并用于微信登录流程 --- src/api/shop/index.ts | 4 ++ src/pages/index/index.vue | 102 ++++++++++++++++++++------------------ src/pinia/stores/wx.ts | 4 +- 3 files changed, 60 insertions(+), 50 deletions(-) diff --git a/src/api/shop/index.ts b/src/api/shop/index.ts index c9c42f0..1db0d35 100644 --- a/src/api/shop/index.ts +++ b/src/api/shop/index.ts @@ -78,4 +78,8 @@ export async function getShopListApi(corpid: string, mode?: number) { params.mode = mode; } return await http.get("shop/list", params); +} + +export async function getCorpidById(cid?: number) { + return await http.get("qy/getCorpidById", { id: cid ? cid : 0 }); } \ No newline at end of file diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index d5e4d42..b8040f6 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -3,7 +3,7 @@ import { ref, onMounted } from 'vue' import { useWxStore } from '@/pinia/stores/wx' import { useProductStore } from '@/pinia/stores/product' import { useCartStore } from '@/pinia/stores/cart' -import { getShopListApi } from '@/api/shop' +import { getCorpidById, getShopListApi } from '@/api/shop' import type { ShopEntity } from '@/api/shop/types' import ProductContainer from './components/product-container.vue'; import { generateDynamicCode, getWxUserByOpenid, mpCodeToOpenId } from '@/api/users' @@ -31,51 +31,6 @@ const shopId = ref(0) // 页面加载 onMounted(async () => { - 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 || '') - } - }).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 { - // 等待 handleWxCallback 完成 - await wxStore.waitForHandleWxCallbackComplete(); - const res = await getShopListApi(wxStore.corpid || ''); - console.log('获取店铺列表:', res) - if (res?.code === 0 && res?.data?.length > 0) { - shopList.value = res.data; - - // shopList.value = [...shopList.value, ...res.data, ...res.data, ...res.data]; - } - } catch (error) { - console.error('获取店铺列表失败:', error) - } - } }) // 点击分类导航 @@ -110,13 +65,64 @@ function handleCheckout() { }) } -onLoad((query) => { +onLoad(async (query) => { + const wxParamsStore = useWxParamsStore(); console.log('page index onLoad query: ', query); // scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene if (query && query.scene) { const scene = decodeURIComponent(query.scene); - const wxParamsStore = useWxParamsStore(); wxParamsStore.parseScene(scene); + + } + + const cid = wxParamsStore.getNumberParam('cid'); + + const corpid = (await getCorpidById(cid)).data; + + 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, corpid); + uni.setStorageSync('local_openid', wxUser.data.openid || ''); + if (wxUser.data.ab98UserId) { + ab98UserStore.setAb98UserName(wxUser.data.ab98Name || wxUser.data.nickName || '') + ab98UserStore.setAb98UserFaceImg(wxUser.data.ab98FaceImg || '') + } + }).catch((e) => { + console.error('mpCodeToOpenId error:', e) + }) + }, + }); + } else { + // 从本地缓存中获取用户信息 + const wxUser = await getWxUserByOpenid(openid); + console.log('wxUser:', wxUser); + wxStore.wxMpCallback(wxUser.data, corpid); + 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 { + // 等待 handleWxCallback 完成 + await wxStore.waitForHandleWxCallbackComplete(); + const res = await getShopListApi(wxStore.corpid || ''); + console.log('获取店铺列表:', res) + if (res?.code === 0 && res?.data?.length > 0) { + shopList.value = res.data; + + // shopList.value = [...shopList.value, ...res.data, ...res.data, ...res.data]; + } + } catch (error) { + console.error('获取店铺列表失败:', error) + } } }) diff --git a/src/pinia/stores/wx.ts b/src/pinia/stores/wx.ts index 6efdca5..d0a3e72 100644 --- a/src/pinia/stores/wx.ts +++ b/src/pinia/stores/wx.ts @@ -185,8 +185,8 @@ export const useWxStore = defineStore("wx", () => { return true; } - const wxMpCallback = (userDTO: WxUserDTO) => { - corpid.value = "wpZ1ZrEgAA2QTxIRcB4cMtY7hQbTcPAw"; + const wxMpCallback = (userDTO: WxUserDTO, corpid_: string) => { + corpid.value = corpid_; openid.value = userDTO.openid || openid.value; wxUserDTO.value = userDTO; ab98UserId.value = userDTO.ab98UserId || ab98UserId.value;