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; updateTime?: string;
/** 备注 */ /** 备注 */
remark?: 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 ProductContainer from './components/product-container.vue';
import { generateDynamicCode, mpCodeToOpenId } from '@/api/users' import { generateDynamicCode, mpCodeToOpenId } from '@/api/users'
import { toHttpsUrl } from '@/utils' import { toHttpsUrl } from '@/utils'
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
import { storeToRefs } from 'pinia'
definePage({ definePage({
style: { style: {
@ -19,6 +21,7 @@ definePage({
const wxStore = useWxStore() const wxStore = useWxStore()
const productStore = useProductStore() const productStore = useProductStore()
const cartStore = useCartStore() const cartStore = useCartStore()
const ab98UserStore = useAb98UserStore()
// //
const showShopList = ref<boolean>(true) const showShopList = ref<boolean>(true)
@ -34,6 +37,11 @@ onMounted(async () => {
mpCodeToOpenId(loginRes.code).then((wxUser) => { mpCodeToOpenId(loginRes.code).then((wxUser) => {
console.log('wxUser:', wxUser); console.log('wxUser:', wxUser);
wxStore.setOpenid(wxUser.data.openid); 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) => { generateDynamicCode(wxUser.data.openid).then((dynamicCode) => {
console.log('dynamicCode:', dynamicCode); console.log('dynamicCode:', dynamicCode);
}).catch((e) => { }).catch((e) => {

View File

@ -18,7 +18,11 @@ const wxStore = useWxStore()
const ab98UserStore = useAb98UserStore() const ab98UserStore = useAb98UserStore()
const { balance, useBalance, balanceLimit, name: qyName, ab98User } = storeToRefs(wxStore) 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(() => { const name = computed(() => {
return userName.value || qyName.value || '未知用户' return userName.value || qyName.value || '未知用户'
@ -111,13 +115,13 @@ const handleGenerateDynamicCode = async () => {
<view class="avatar-wrapper"> <view class="avatar-wrapper">
<image <image
class="avatar" class="avatar"
:src="userAvatar" :src="wxUserDTO?.ab98FaceImg"
mode="aspectFill" mode="aspectFill"
@click="handleLogout" @click="handleLogout"
/> />
</view> </view>
<view class="user-details"> <view class="user-details">
<view class="user-name">{{ name }}</view> <view class="user-name">{{ wxUserDTO?.ab98Name || wxUserDTO?.nickName }}</view>
</view> </view>
</view> </view>

View File

@ -70,6 +70,16 @@ export const useAb98UserStore = defineStore("ab98User", () => {
uni.setStorageSync(STORAGE_KEYS.LOGIN_CODE, encodeURIComponent(loginCode)) 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 * @description
@ -128,7 +138,9 @@ export const useAb98UserStore = defineStore("ab98User", () => {
setTel, setTel,
setIsLogin, setIsLogin,
clearUserInfo, 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 { ab98UserDTO, GetBalanceResponse } from "@/api/shop/types"
import { useAb98UserStore } from "./ab98-user" import { useAb98UserStore } from "./ab98-user"
import { defineStore } from "pinia" import { defineStore } from "pinia"
import { WxUserDTO } from "@/api/users/types"
export const useWxStore = defineStore("wx", () => { export const useWxStore = defineStore("wx", () => {
@ -37,6 +38,8 @@ export const useWxStore = defineStore("wx", () => {
// handleWxCallback 是否完成 // handleWxCallback 是否完成
const isHandleWxCallbackComplete = ref<boolean>(false); const isHandleWxCallbackComplete = ref<boolean>(false);
const wxUserDTO = ref<WxUserDTO | null>(null);
// 设置 openid // 设置 openid
const setOpenid = (id: string) => { const setOpenid = (id: string) => {
openid.value = id openid.value = id
@ -160,7 +163,7 @@ export const useWxStore = defineStore("wx", () => {
name.value = res.data.name; name.value = res.data.name;
qyUserId.value = res.data.qyUserId; qyUserId.value = res.data.qyUserId;
if (res.data.ab98User) { if (res.data.ab98User) {
setAb98User(res.data.ab98User); // setAb98User(res.data.ab98User);
} }
} }
isHandleWxCallbackComplete.value = true isHandleWxCallbackComplete.value = true
@ -179,11 +182,14 @@ export const useWxStore = defineStore("wx", () => {
return true; return true;
} }
const setWxUserDTO = (userDTO: WxUserDTO | null) => {
wxUserDTO.value = userDTO;
}
return { code, state, openid, corpid, userid, balance, useBalance, return { code, state, openid, corpid, userid, balance, useBalance,
balanceLimit, isCabinetAdmin, corpidLogin, name, ab98User, qyUserId, isFakeQyLogin, balanceLimit, isCabinetAdmin, corpidLogin, name, ab98User, qyUserId, isFakeQyLogin,
isHandleWxCallbackComplete, setOpenid, setBalance, handleWxCallback, setIsCabinetAdmin, isHandleWxCallbackComplete, wxUserDTO, setOpenid, setBalance, handleWxCallback, setIsCabinetAdmin,
refreshBalance, setAb98User, fakeQyLogin, waitForHandleWxCallbackComplete } refreshBalance, setAb98User, fakeQyLogin, waitForHandleWxCallbackComplete, setWxUserDTO }
}) })
/** /**