/** * 个人中心相关API接口模块 * 提供用户信息管理、资料完善、偏好设置等相关的API接口 */ import BaseRequest from '../utils/request-helper.js' import { LOADING_TEXTS } from '../config/constants.js' // ==================== API方法 ==================== // ==================== 用户信息相关API ==================== /** * 获取用户基本信息 * @description 获取当前登录用户的基本信息,包括昵称、头像、个人资料等 * @param {Object} [config={}] 自定义请求配置 * @param {Object} [config.custom] 自定义请求选项 * @param {boolean} [config.custom.loading] 是否显示loading,默认true * @param {boolean} [config.custom.toast] 是否显示错误提示,默认true * @returns {Promise} 返回用户信息对象 * @example * // 基本用法 * const userInfo = await getUserInfo() * * // 自定义配置 * const userInfo = await getUserInfo({ * custom: { loading: false } * }) */ export const getUserInfo = (config = {}) => { return BaseRequest.get('/user/info', {}, 'AUTHENTICATED_QUERY_WITH_LOADING', config) } /** * 获取微信用户信息 * @description 获取当前登录用户的微信相关信息,包括微信昵称、头像等 * @param {Object} [config={}] 自定义请求配置 * @param {Object} [config.custom] 自定义请求选项 * @param {boolean} [config.custom.loading] 是否显示loading,默认false * @param {boolean} [config.custom.toast] 是否显示错误提示,默认true * @returns {Promise} 返回微信用户信息对象 * @example * // 基本用法 * const wxUserInfo = await getWxUserInfo() * * // 自定义配置 * const wxUserInfo = await getWxUserInfo({ * custom: { loading: true } * }) */ export const getWxUserInfo = (config = {}) => { return BaseRequest.get('/user/wechat/mini/userinfo', {}, 'AUTHENTICATED_QUERY', config) } /** * 更新用户基本信息 * @description 更新用户的基本信息,如昵称、头像、个人简介等 * @param {Object} userInfo 用户信息对象 * @param {string} [userInfo.nickName] 用户昵称 * @param {string} [userInfo.avatarUrl] 头像URL * @param {string} [userInfo.bio] 个人简介 * @param {string} [userInfo.gender] 性别 * @param {string} [userInfo.birthday] 生日 * @param {string} [userInfo.region] 地区 * @param {Object} [config={}] 自定义请求配置 * @returns {Promise} 返回更新后的用户信息 * @example * await updateUserInfo({ * nickName: '新昵称', * bio: '个人简介' * }) */ export const updateUserInfo = (userInfo, config = {}) => { return BaseRequest.put('/user/info', userInfo, 'AUTHENTICATED_UPDATE', LOADING_TEXTS.UPDATING_USER_INFO, config) } /** * 获取用户宠物列表 * @description 获取当前用户的所有宠物信息列表 * @param {Object} [params={}] 查询参数 * @param {number} [params.page] 页码,默认1 * @param {number} [params.pageSize] 每页数量,默认20 * @param {string} [params.type] 宠物类型筛选 * @param {string} [params.status] 状态筛选 * @param {Object} [config={}] 自定义请求配置 * @returns {Promise} 返回宠物列表和分页信息 * @example * // 获取所有宠物 * const pets = await getUserPets() * * // 分页查询 * const pets = await getUserPets({ page: 1, pageSize: 10 }) */ export const getUserPets = (params = {}, config = {}) => { return BaseRequest.get('/user/pets', params, 'AUTHENTICATED_QUERY', config) } // ==================== 用户统计相关API ==================== /** * 获取用户统计数据 * @description 获取用户的各项统计数据,如宠物数量、记录数量、提醒数量等 * @param {Object} [config={}] 自定义请求配置 * @param {Object} [config.custom] 自定义请求选项 * @param {boolean} [config.custom.loading] 是否显示loading,默认false(后台获取) * @returns {Promise} 返回统计数据对象 * @example * const stats = await getUserStats() * // 返回格式: * // { * // petCount: 3, * // recordCount: 25, * // reminderCount: 5, * // familyMemberCount: 2 * // } */ export const getUserStats = (config = {}) => { return BaseRequest.get('/user/stats', {}, 'AUTHENTICATED_QUERY', config) } // ==================== 账户管理相关API ==================== /** * 注销用户账户 * @description 永久删除用户账户及所有相关数据,此操作不可逆 * @param {Object} [config={}] 自定义请求配置 * @param {Object} [config.custom] 自定义请求选项 * @param {boolean} [config.custom.loading] 是否显示loading,默认true * @param {string} [config.custom.loadingText] 自定义loading文本 * @returns {Promise} 返回注销结果 * @example * await deleteAccount() * * @warning 此操作将永久删除所有用户数据,请谨慎使用 */ export const deleteAccount = (config = {}) => { return BaseRequest.delete('/user/account', {}, 'AUTHENTICATED_DELETE', LOADING_TEXTS.DELETING_ACCOUNT, config) } // ==================== 用户资料完善相关API ==================== /** * 完善用户资料信息 * @description 用于新用户首次登录后完善个人资料信息,或更新现有资料 * @param {Object} profileData 用户资料数据对象 * @param {string} profileData.nickName 用户昵称(必填) * @param {string} [profileData.avatarUrl] 头像URL * @param {string} [profileData.gender] 性别:'男' | '女' | '保密' * @param {string} [profileData.birthday] 生日,格式:YYYY-MM-DD * @param {string} [profileData.region] 所在地区 * @param {string} [profileData.bio] 个人简介 * @param {Object} [config={}] 自定义请求配置 * @param {Object} [config.custom] 自定义请求选项 * @param {boolean} [config.custom.loading] 是否显示loading,默认true * @param {string} [config.custom.loadingText] 自定义loading文本 * @returns {Promise} 返回完善后的用户信息 * @example * // 基本用法 * await completeUserProfile({ * nickName: '小明', * gender: '男', * birthday: '1990-01-01', * region: '北京市', * bio: '热爱宠物的程序员' * }) * * // 自定义loading文本 * await completeUserProfile(profileData, { * custom: { loadingText: '正在创建用户资料...' } * }) */ export const completeUserProfile = (profileData, config = {}) => { return BaseRequest.post('/user/profile/complete', profileData, 'AUTHENTICATED_UPDATE', LOADING_TEXTS.SAVING_PROFILE, config) } // ==================== 头像上传相关API ==================== /** * 上传用户头像 * @description 上传并更新用户头像图片 * @param {Object} avatarData 头像数据对象 * @param {string} avatarData.avatarUrl 头像图片URL或base64数据 * @param {Object} [config={}] 自定义请求配置 * @returns {Promise} 返回上传结果和新的头像URL * @example * const result = await uploadAvatar({ * avatarUrl: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...' * }) */ export const uploadAvatar = (avatarData, config = {}) => { return BaseRequest.post('/user/avatar', avatarData, 'AUTHENTICATED_UPDATE', LOADING_TEXTS.UPLOADING_AVATAR, config) } // ==================== 用户偏好设置相关API ==================== /** * 获取用户偏好设置 * @description 获取用户的个性化偏好设置,如通知设置、隐私设置等 * @param {Object} [config={}] 自定义请求配置 * @returns {Promise} 返回用户偏好设置对象 * @example * const preferences = await getUserPreferences() */ export const getUserPreferences = (config = {}) => { return BaseRequest.get('/user/preferences', {}, 'AUTHENTICATED_QUERY', config) } /** * 更新用户偏好设置 * @description 更新用户的个性化偏好设置 * @param {Object} preferences 偏好设置对象 * @param {boolean} [preferences.notificationEnabled] 是否启用通知 * @param {boolean} [preferences.privacyMode] 是否启用隐私模式 * @param {string} [preferences.theme] 主题设置:'light' | 'dark' | 'auto' * @param {Object} [config={}] 自定义请求配置 * @returns {Promise} 返回更新后的偏好设置 * @example * await updateUserPreferences({ * notificationEnabled: true, * theme: 'dark' * }) */ export const updateUserPreferences = (preferences, config = {}) => { return BaseRequest.put('/user/preferences', preferences, 'AUTHENTICATED_UPDATE', '正在保存设置...', config) } // ==================== 用户活动记录相关API ==================== /** * 获取用户活动记录 * @description 获取用户的操作活动记录列表 * @param {Object} [params={}] 查询参数 * @param {number} [params.page] 页码,默认1 * @param {number} [params.pageSize] 每页数量,默认20 * @param {string} [params.type] 活动类型筛选 * @param {string} [params.startDate] 开始日期 * @param {string} [params.endDate] 结束日期 * @param {Object} [config={}] 自定义请求配置 * @returns {Promise} 返回活动记录列表和分页信息 * @example * const activities = await getUserActivities({ * page: 1, * pageSize: 10, * type: 'pet_care' * }) */ export const getUserActivities = (params = {}, config = {}) => { return BaseRequest.get('/user/activities', params, 'AUTHENTICATED_QUERY', config) }