110 lines
3.1 KiB
JavaScript
110 lines
3.1 KiB
JavaScript
/**
|
||
* 用户接口模块
|
||
* 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
|
||
}
|