xiangyixiangqin/miniapp/api/interact.js
2026-01-21 19:36:36 +08:00

164 lines
4.4 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: 5.4, 6.2, 8.2, 8.3, 8.4
*/
import { get, post } from './request'
/**
* 记录浏览
*
* @param {number} targetUserId - 目标用户ID
* @returns {Promise<Object>} 浏览记录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<Object>} 收藏结果包含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<Object>} 解锁结果
*/
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<Object>} 举报结果
*/
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<Object>} 浏览记录列表
*/
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<Object>} 浏览记录列表
*/
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<Object>} 收藏记录列表
*/
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<Object>} 收藏记录列表
*/
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<Object>} 解锁记录列表
*/
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<Object>} 解锁记录列表
*/
export async function getMyUnlocked(pageIndex = 1, pageSize = 20) {
const response = await get('/interact/myUnlocked', { pageIndex, pageSize })
return response
}
/**
* 检查是否已解锁目标用户
*
* @param {number} targetUserId - 目标用户ID
* @returns {Promise<Object>} 解锁状态 { 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
}