79 lines
2.3 KiB
TypeScript
79 lines
2.3 KiB
TypeScript
import { api } from '@/services/api';
|
||
|
||
export type Gender = 'male' | 'female';
|
||
|
||
// 用户语言设置
|
||
export type UserLanguage = 'zh-CN' | 'en-US';
|
||
|
||
export type UpdateUserDto = {
|
||
name?: string;
|
||
avatar?: string; // base64 字符串
|
||
gender?: Gender;
|
||
birthDate?: number; // 时间戳(秒)
|
||
dailyStepsGoal?: number;
|
||
dailyCaloriesGoal?: number;
|
||
pilatesPurposes?: string[];
|
||
weight?: number;
|
||
height?: number;
|
||
activityLevel?: number; // 活动水平 1-4
|
||
initialWeight?: number; // 初始体重
|
||
targetWeight?: number; // 目标体重
|
||
chestCircumference?: number; // 胸围
|
||
waistCircumference?: number; // 腰围
|
||
upperHipCircumference?: number; // 上臀围
|
||
armCircumference?: number; // 臂围
|
||
thighCircumference?: number; // 大腿围
|
||
calfCircumference?: number; // 小腿围
|
||
language?: UserLanguage; // 用户语言偏好
|
||
};
|
||
|
||
export async function updateUser(dto: UpdateUserDto): Promise<Record<string, any>> {
|
||
// 固定使用后端文档接口:PUT /api/users/update
|
||
return await api.put('/api/users/update', dto);
|
||
}
|
||
|
||
export async function uploadImage(formData: FormData): Promise<{ fileKey: string; fileUrl: string }> {
|
||
return await api.post('/api/users/cos/upload-image', formData, {
|
||
unsetContentType: true
|
||
});
|
||
}
|
||
|
||
export type BodyMeasurementsDto = {
|
||
chestCircumference?: number; // 胸围
|
||
waistCircumference?: number; // 腰围
|
||
upperHipCircumference?: number; // 上臀围
|
||
armCircumference?: number; // 臂围
|
||
thighCircumference?: number; // 大腿围
|
||
calfCircumference?: number; // 小腿围
|
||
};
|
||
|
||
export async function updateBodyMeasurements(dto: BodyMeasurementsDto): Promise<{
|
||
code: number;
|
||
message: string;
|
||
}> {
|
||
return await api.put('/users/body-measurements', dto);
|
||
}
|
||
|
||
export type DailyHealthDataDto = {
|
||
date?: string; // YYYY-MM-DD
|
||
waterIntake?: number; // ml
|
||
exerciseMinutes?: number; // minutes
|
||
caloriesBurned?: number; // kcal
|
||
standingMinutes?: number; // minutes
|
||
basalMetabolism?: number; // kcal
|
||
sleepMinutes?: number; // minutes
|
||
bloodOxygen?: number; // % (0-100)
|
||
stressLevel?: number; // ms (based on HRV)
|
||
steps?: number; // 步数
|
||
};
|
||
|
||
export async function updateDailyHealthData(dto: DailyHealthDataDto): Promise<{
|
||
code: number;
|
||
message: string;
|
||
data: any;
|
||
}> {
|
||
return await api.put('/users/daily-health', dto);
|
||
}
|
||
|
||
|