/** * 互动接口模块 * Requirements: 5.4, 6.2, 8.2, 8.3, 8.4 */ import { get, post } from './request' /** * 记录浏览 * * @param {number} targetUserId - 目标用户ID * @returns {Promise} 浏览记录ID */ export async function recordView(targetUserId) { const response = await post('/interact/view', { targetUserId }) return response } /** * 收藏/取消收藏 * WHEN a user clicks the "收藏" button, THE XiangYi_MiniApp SHALL call endpoint and update button state * Requirements: 5.4 * * @param {number} targetUserId - 目标用户ID * @returns {Promise} 收藏结果,包含isFavorited状态 */ export async function favorite(targetUserId) { const response = await post('/interact/favorite', { targetUserId }) return response } /** * 解锁联系方式 * WHEN a user confirms unlock, THE XiangYi_MiniApp SHALL call endpoint * Requirements: 6.2 * * @param {number} targetUserId - 目标用户ID * @returns {Promise} 解锁结果 */ export async function unlock(targetUserId) { const response = await post('/interact/unlock', { targetUserId }) return response } /** * 举报用户 * * @param {number} reportedUserId - 被举报用户ID * @param {string} reason - 举报原因 * @param {string} [description] - 详细描述 * @returns {Promise} 举报结果 */ export async function report(reportedUserId, reason, description = '') { const response = await post('/interact/report', { reportedUserId, reason, description }) return response } /** * 获取"看过我"列表 * WHEN a user clicks "看过我", THE XiangYi_MiniApp SHALL call endpoint and display the list with timestamps * Requirements: 8.2 * * @param {number} [pageIndex=1] - 页码 * @param {number} [pageSize=20] - 每页数量 * @returns {Promise} 浏览记录列表 */ export async function getViewedMe(pageIndex = 1, pageSize = 20) { const response = await get('/interact/viewedMe', { pageIndex, pageSize }) return response } /** * 获取"我看过的"列表 * * @param {number} [pageIndex=1] - 页码 * @param {number} [pageSize=20] - 每页数量 * @returns {Promise} 浏览记录列表 */ export async function getMyViewed(pageIndex = 1, pageSize = 20) { const response = await get('/interact/myViewed', { pageIndex, pageSize }) return response } /** * 获取"收藏我的"列表 * WHEN a user clicks "收藏我", THE XiangYi_MiniApp SHALL call endpoint and display the list * Requirements: 8.3 * * @param {number} [pageIndex=1] - 页码 * @param {number} [pageSize=20] - 每页数量 * @returns {Promise} 收藏记录列表 */ export async function getFavoritedMe(pageIndex = 1, pageSize = 20) { const response = await get('/interact/favoritedMe', { pageIndex, pageSize }) return response } /** * 获取"我收藏的"列表 * * @param {number} [pageIndex=1] - 页码 * @param {number} [pageSize=20] - 每页数量 * @returns {Promise} 收藏记录列表 */ export async function getMyFavorite(pageIndex = 1, pageSize = 20) { const response = await get('/interact/myFavorite', { pageIndex, pageSize }) return response } /** * 获取"解锁我的"列表 * WHEN a user clicks "解锁我", THE XiangYi_MiniApp SHALL call endpoint and display the list * Requirements: 8.4 * * @param {number} [pageIndex=1] - 页码 * @param {number} [pageSize=20] - 每页数量 * @returns {Promise} 解锁记录列表 */ export async function getUnlockedMe(pageIndex = 1, pageSize = 20) { const response = await get('/interact/unlockedMe', { pageIndex, pageSize }) return response } /** * 获取"我解锁的"列表 * * @param {number} [pageIndex=1] - 页码 * @param {number} [pageSize=20] - 每页数量 * @returns {Promise} 解锁记录列表 */ export async function getMyUnlocked(pageIndex = 1, pageSize = 20) { const response = await get('/interact/myUnlocked', { pageIndex, pageSize }) return response } /** * 检查是否已解锁目标用户 * * @param {number} targetUserId - 目标用户ID * @returns {Promise} 解锁状态 { isUnlocked, remainingUnlockQuota } */ export async function checkUnlock(targetUserId) { const response = await get('/interact/checkUnlock', { targetUserId }) return response } export default { recordView, favorite, unlock, checkUnlock, report, getViewedMe, getMyViewed, getFavoritedMe, getMyFavorite, getUnlockedMe, getMyUnlocked }