feat(用户): 添加通过openid获取用户信息功能并优化登录流程

- 新增getWxUserByOpenid接口用于通过openid获取用户信息
- 优化登录流程,优先从本地缓存获取openid
- 简化订单获取逻辑,移除企业用户判断分支
This commit is contained in:
dzq 2025-11-27 11:02:15 +08:00
parent e16966f31c
commit db6f31228d
4 changed files with 28 additions and 8 deletions

View File

@ -10,6 +10,10 @@ export async function mpCodeToOpenId(code: string) {
return await http.get<WxUserDTO>("wx/mpCodeToOpenId", { code });
}
export async function getWxUserByOpenid(openid: string) {
return await http.get<WxUserDTO>("wx/getWxUserByOpenid", { openid });
}
/** 根据openid获取动态码 */
export async function generateDynamicCode(openid: string) {
return await http.get<DynamicCodeResponse>("wx/generateDynamicCode", { openid });

View File

@ -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<number>(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 || '')
@ -45,6 +48,17 @@ onMounted(async () => {
})
},
});
} 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 {

View File

@ -21,6 +21,7 @@ const hasReturn = ref<number>(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)
}

View File

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