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 => ({