From b08660e137a444d3cb434829f11a4c9e98ce4041 Mon Sep 17 00:00:00 2001 From: dzq Date: Fri, 7 Nov 2025 09:22:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B1=87=E9=82=A6=E4=BA=91=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在用户类型中新增ab98Name和ab98FaceImg字段 添加设置汇邦云用户名和头像的方法 修改页面展示逻辑以优先显示汇邦云用户信息 在登录流程中自动设置汇邦云用户信息 --- src/api/users/types.ts | 4 ++++ src/pages/index/index.vue | 8 ++++++++ src/pages/me/index.vue | 10 +++++++--- src/pinia/stores/ab98-user.ts | 14 +++++++++++++- src/pinia/stores/wx.ts | 12 +++++++++--- 5 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/api/users/types.ts b/src/api/users/types.ts index a3536b8..7dc9b34 100644 --- a/src/api/users/types.ts +++ b/src/api/users/types.ts @@ -26,6 +26,10 @@ export interface WxUserDTO { updateTime?: string; /** 备注 */ remark?: string; + /** 汇邦云用户名 */ + ab98Name?: string; + /** 汇邦云用户头像 */ + ab98FaceImg?: string; } /** 动态码响应数据 */ diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 8de7686..c407c21 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -8,6 +8,8 @@ import type { ShopEntity } from '@/api/shop/types' import ProductContainer from './components/product-container.vue'; import { generateDynamicCode, mpCodeToOpenId } from '@/api/users' import { toHttpsUrl } from '@/utils' +import { useAb98UserStore } from '@/pinia/stores/ab98-user' +import { storeToRefs } from 'pinia' definePage({ style: { @@ -19,6 +21,7 @@ definePage({ const wxStore = useWxStore() const productStore = useProductStore() const cartStore = useCartStore() +const ab98UserStore = useAb98UserStore() // 显示选择商店列表 const showShopList = ref(true) @@ -34,6 +37,11 @@ onMounted(async () => { mpCodeToOpenId(loginRes.code).then((wxUser) => { console.log('wxUser:', wxUser); wxStore.setOpenid(wxUser.data.openid); + wxStore.setWxUserDTO(wxUser.data); + if (wxUser.data.ab98UserId) { + ab98UserStore.setAb98UserName(wxUser.data.ab98Name || wxUser.data.nickName || '') + ab98UserStore.setAb98UserFaceImg(wxUser.data.ab98FaceImg || '') + } generateDynamicCode(wxUser.data.openid).then((dynamicCode) => { console.log('dynamicCode:', dynamicCode); }).catch((e) => { diff --git a/src/pages/me/index.vue b/src/pages/me/index.vue index 6481a9f..188ac69 100644 --- a/src/pages/me/index.vue +++ b/src/pages/me/index.vue @@ -18,7 +18,11 @@ const wxStore = useWxStore() const ab98UserStore = useAb98UserStore() const { balance, useBalance, balanceLimit, name: qyName, ab98User } = storeToRefs(wxStore) -const { name: userName, sex: userSex, face_img } = storeToRefs(ab98UserStore) +const { name: userName, face_img } = storeToRefs(ab98UserStore); +const { wxUserDTO } = storeToRefs(wxStore); + + +(globalThis as any).ab98UserStore = ab98UserStore; const name = computed(() => { return userName.value || qyName.value || '未知用户' @@ -111,13 +115,13 @@ const handleGenerateDynamicCode = async () => { - {{ name }} + {{ wxUserDTO?.ab98Name || wxUserDTO?.nickName }} diff --git a/src/pinia/stores/ab98-user.ts b/src/pinia/stores/ab98-user.ts index bc5b978..6b04322 100644 --- a/src/pinia/stores/ab98-user.ts +++ b/src/pinia/stores/ab98-user.ts @@ -70,6 +70,16 @@ export const useAb98UserStore = defineStore("ab98User", () => { uni.setStorageSync(STORAGE_KEYS.LOGIN_CODE, encodeURIComponent(loginCode)) } + const setAb98UserName = (value: string) => { + name.value = value + uni.setStorageSync(STORAGE_KEYS.NAME, encodeURIComponent(value)) + } + + const setAb98UserFaceImg = (value: string) => { + face_img.value = value + uni.setStorageSync(STORAGE_KEYS.FACE, encodeURIComponent(value)) + } + /** * 清空用户敏感信息 * @description 用于用户登出或会话过期时 @@ -128,7 +138,9 @@ export const useAb98UserStore = defineStore("ab98User", () => { setTel, setIsLogin, clearUserInfo, - setTokenLogin + setTokenLogin, + setAb98UserName, + setAb98UserFaceImg } }) diff --git a/src/pinia/stores/wx.ts b/src/pinia/stores/wx.ts index 04a76a8..daa93ea 100644 --- a/src/pinia/stores/wx.ts +++ b/src/pinia/stores/wx.ts @@ -3,6 +3,7 @@ import { getOpenIdApi, getBalanceApi, qyLogin, getBalanceByQyUserid, fakeQyLogin import { ab98UserDTO, GetBalanceResponse } from "@/api/shop/types" import { useAb98UserStore } from "./ab98-user" import { defineStore } from "pinia" +import { WxUserDTO } from "@/api/users/types" export const useWxStore = defineStore("wx", () => { @@ -37,6 +38,8 @@ export const useWxStore = defineStore("wx", () => { // handleWxCallback 是否完成 const isHandleWxCallbackComplete = ref(false); + const wxUserDTO = ref(null); + // 设置 openid const setOpenid = (id: string) => { openid.value = id @@ -160,7 +163,7 @@ export const useWxStore = defineStore("wx", () => { name.value = res.data.name; qyUserId.value = res.data.qyUserId; if (res.data.ab98User) { - setAb98User(res.data.ab98User); + // setAb98User(res.data.ab98User); } } isHandleWxCallbackComplete.value = true @@ -179,11 +182,14 @@ export const useWxStore = defineStore("wx", () => { return true; } + const setWxUserDTO = (userDTO: WxUserDTO | null) => { + wxUserDTO.value = userDTO; + } return { code, state, openid, corpid, userid, balance, useBalance, balanceLimit, isCabinetAdmin, corpidLogin, name, ab98User, qyUserId, isFakeQyLogin, - isHandleWxCallbackComplete, setOpenid, setBalance, handleWxCallback, setIsCabinetAdmin, - refreshBalance, setAb98User, fakeQyLogin, waitForHandleWxCallbackComplete } + isHandleWxCallbackComplete, wxUserDTO, setOpenid, setBalance, handleWxCallback, setIsCabinetAdmin, + refreshBalance, setAb98User, fakeQyLogin, waitForHandleWxCallbackComplete, setWxUserDTO } }) /**