xiangyixiangqin/miniapp/api/user.js
2026-01-22 00:58:45 +08:00

110 lines
3.1 KiB
JavaScript
Raw 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.

/**
* 用户接口模块
* Requirements: 2.3, 5.1, 11.2
*/
import { get, post } from './request'
/**
* 获取每日推荐列表
* WHEN a user visits the home page, THE XiangYi_MiniApp SHALL display recommended user list
* Requirements: 2.3
*
* @param {number} pageIndex - 页码
* @param {number} pageSize - 每页数量
* @param {number} gender - 筛选性别1=男2=女0=不限)
* @returns {Promise<Object>} 推荐用户列表
*/
export async function getRecommend(pageIndex = 1, pageSize = 10, gender = 0) {
// 如果用户已登录发送token以便后端排除当前用户
const token = uni.getStorageSync('token')
const params = { pageIndex, pageSize }
if (gender > 0) {
params.gender = gender
}
const response = await get('/users/recommend', params, { needAuth: !!token })
return response
}
/**
* 获取用户详情
* WHEN a user views a profile detail page, THE XiangYi_MiniApp SHALL call endpoint and display full profile information
* Requirements: 5.1
*
* @param {number} userId - 用户ID
* @returns {Promise<Object>} 用户详情
*/
export async function getUserDetail(userId) {
const response = await post('/users/detail', { userId })
return response
}
/**
* 搜索用户
* WHEN a user submits search, THE XiangYi_MiniApp SHALL call endpoint with filter parameters
* Requirements: 11.2
*
* @param {Object} params - 搜索参数
* @param {number} [params.ageMin] - 最小年龄
* @param {number} [params.ageMax] - 最大年龄
* @param {number} [params.heightMin] - 最小身高
* @param {number} [params.heightMax] - 最大身高
* @param {number[]} [params.education] - 学历列表
* @param {string} [params.province] - 省份
* @param {string} [params.city] - 城市
* @param {number} [params.monthlyIncomeMin] - 最低月收入
* @param {number} [params.monthlyIncomeMax] - 最高月收入
* @param {number[]} [params.houseStatus] - 房产状态列表
* @param {number[]} [params.carStatus] - 车辆状态列表
* @param {number[]} [params.marriageStatus] - 婚姻状态列表
* @param {number} [params.pageIndex] - 页码
* @param {number} [params.pageSize] - 每页数量
* @returns {Promise<Object>} 搜索结果
*/
export async function search(params = {}) {
const response = await post('/users/search', params)
return response
}
/**
* 更新用户头像
*
* @param {string} avatar - 头像URL
* @returns {Promise<Object>} 更新结果
*/
export async function updateAvatar(avatar) {
const response = await post('/users/avatar', { avatar })
return response
}
/**
* 更新用户昵称
*
* @param {string} nickname - 昵称
* @returns {Promise<Object>} 更新结果
*/
export async function updateNickname(nickname) {
const response = await post('/users/nickname', { nickname })
return response
}
/**
* 解密微信手机号
*
* @param {string} code - 微信返回的 code
* @returns {Promise<Object>} 解密结果,包含 phone 字段
*/
export async function decryptPhone(code) {
const response = await post('/users/phone/decrypt', { code })
return response
}
export default {
getRecommend,
getUserDetail,
search,
updateAvatar,
updateNickname,
decryptPhone
}