52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
/**
|
||||
|
|
* 推荐与搜索服务(API_INVENTORY 行 36-37, 41-43)
|
|||
|
|
*
|
|||
|
|
* 封装:今日推荐列表、推荐详情、Discover 搜索、用户公开主页。
|
|||
|
|
* Required 不可自动放宽(AGENTS 第 2 条)——本层不实现任何"放宽条件后再查"的逻辑,
|
|||
|
|
* 仅把请求透传给后端,由后端按 PartnerPreference 做硬约束过滤。
|
|||
|
|
*/
|
|||
|
|
const api = require('../utils/api');
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取今日推荐列表(API_INVENTORY 行 36)
|
|||
|
|
* @param {{ cursor?: string, pageSize?: number }} params
|
|||
|
|
* @returns {Promise<{ items: Array<import('../types').Recommendation>, nextCursor: string|null, dailyRemaining: number }>}
|
|||
|
|
*/
|
|||
|
|
function getRecommendations(params = {}) {
|
|||
|
|
return api.get('/recommendations', params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取推荐详情(API_INVENTORY 行 37)
|
|||
|
|
* @param {string} userId
|
|||
|
|
* @returns {Promise<import('../types').Recommendation>}
|
|||
|
|
*/
|
|||
|
|
function getRecommendationDetail(userId) {
|
|||
|
|
return api.get(`/recommendations/${encodeURIComponent(userId)}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Discover 搜索(API_INVENTORY 行 42)
|
|||
|
|
* @param {{ keyword?: string, region?: string, ageMin?: number, ageMax?: number, cursor?: string, pageSize?: number }} params
|
|||
|
|
* @returns {Promise<{ items: Array<import('../types').User>, nextCursor: string|null }>}
|
|||
|
|
*/
|
|||
|
|
function discover(params = {}) {
|
|||
|
|
return api.get('/discover', params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 查看用户公开主页(API_INVENTORY 行 43)
|
|||
|
|
* @param {string} userId
|
|||
|
|
* @returns {Promise<import('../types').User & { relationStatus: import('../types').RelationStatus }>}
|
|||
|
|
*/
|
|||
|
|
function getUserDetail(userId) {
|
|||
|
|
return api.get(`/users/${encodeURIComponent(userId)}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
module.exports = {
|
|||
|
|
getRecommendations,
|
|||
|
|
getRecommendationDetail,
|
|||
|
|
discover,
|
|||
|
|
getUserDetail,
|
|||
|
|
};
|