252 lines
9.2 KiB
JavaScript
252 lines
9.2 KiB
JavaScript
/**
|
||
* 个人中心相关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)
|
||
}
|
||
|
||
|