From ad98d78e1862ed39444a33eb7294d61390a54bc9 Mon Sep 17 00:00:00 2001 From: richarjiang Date: Fri, 26 Sep 2025 08:48:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E7=BC=96=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(tabs)/personal.tsx | 8 ++++++++ store/userSlice.ts | 20 ++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/(tabs)/personal.tsx b/app/(tabs)/personal.tsx index 61d90ee..291e7e9 100644 --- a/app/(tabs)/personal.tsx +++ b/app/(tabs)/personal.tsx @@ -212,6 +212,9 @@ export default function PersonalScreen() { {displayName} + {userProfile.memberNumber && ( + 会员编号: {userProfile.memberNumber} + )} pushIfAuthedElseLogin('/profile/edit')}> {isLoggedIn ? '编辑' : '登录'} @@ -480,6 +483,11 @@ const styles = StyleSheet.create({ color: '#9370DB', fontWeight: '500', }, + userMemberNumber: { + fontSize: 10, + color: '#6C757D', + marginTop: 4, + }, editButton: { backgroundColor: '#9370DB', paddingHorizontal: 16, diff --git a/store/userSlice.ts b/store/userSlice.ts index 38e8e54..416a8b3 100644 --- a/store/userSlice.ts +++ b/store/userSlice.ts @@ -20,12 +20,16 @@ export async function preloadUserData() { AsyncStorage.getItem(STORAGE_KEYS.authToken), ]); - let profile: UserProfile = {}; + let profile: UserProfile = { + memberNumber: 0 + }; if (profileStr) { try { profile = JSON.parse(profileStr) as UserProfile; } catch { - profile = {}; + profile = { + memberNumber: 0 + }; } } @@ -40,7 +44,11 @@ export async function preloadUserData() { return preloadedUserData; } catch (error) { console.error('预加载用户数据失败:', error); - preloadedUserData = { token: null, profile: {}, privacyAgreed: false }; + preloadedUserData = { + token: null, profile: { + memberNumber: 0 + }, privacyAgreed: false + }; return preloadedUserData; } } @@ -57,6 +65,7 @@ export type UserProfile = { name?: string; email?: string; gender?: Gender; + memberNumber: number birthDate?: string; weight?: string; height?: string; @@ -108,6 +117,7 @@ const getInitialState = (): UserState => { name: DEFAULT_MEMBER_NAME, isVip: false, freeUsageCount: 3, + memberNumber: 0, maxUsageCount: 5, ...preloaded.profile, // 合并预加载的用户资料 }, @@ -340,7 +350,9 @@ const userSlice = createSlice({ }) .addCase(logout.fulfilled, (state) => { state.token = null; - state.profile = {}; + state.profile = { + memberNumber: 0 + }; }) .addCase(setPrivacyAgreed.fulfilled, (state) => { })