pet/http/api/profile.js

252 lines
9.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 个人中心相关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<Object>} 返回用户信息对象
* @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<Object>} 返回微信用户信息对象
* @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<Object>} 返回更新后的用户信息
* @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<Object>} 返回宠物列表和分页信息
* @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<Object>} 返回统计数据对象
* @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<Object>} 返回注销结果
* @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<Object>} 返回完善后的用户信息
* @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<Object>} 返回上传结果和新的头像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<Object>} 返回用户偏好设置对象
* @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<Object>} 返回更新后的偏好设置
* @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<Object>} 返回活动记录列表和分页信息
* @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)
}