feat(用户信息): 添加汇邦云用户信息支持

在用户类型中新增ab98Name和ab98FaceImg字段
添加设置汇邦云用户名和头像的方法
修改页面展示逻辑以优先显示汇邦云用户信息
在登录流程中自动设置汇邦云用户信息
This commit is contained in:
dzq 2025-11-07 09:22:41 +08:00
parent c319a349e8
commit b08660e137
5 changed files with 41 additions and 7 deletions

View File

@ -26,6 +26,10 @@ export interface WxUserDTO {
updateTime?: string;
/** 备注 */
remark?: string;
/** 汇邦云用户名 */
ab98Name?: string;
/** 汇邦云用户头像 */
ab98FaceImg?: string;
}
/** 动态码响应数据 */

View File

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

View File

@ -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 () => {
<view class="avatar-wrapper">
<image
class="avatar"
:src="userAvatar"
:src="wxUserDTO?.ab98FaceImg"
mode="aspectFill"
@click="handleLogout"
/>
</view>
<view class="user-details">
<view class="user-name">{{ name }}</view>
<view class="user-name">{{ wxUserDTO?.ab98Name || wxUserDTO?.nickName }}</view>
</view>
</view>

View File

@ -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
}
})

View File

@ -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<boolean>(false);
const wxUserDTO = ref<WxUserDTO | null>(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 }
})
/**