152 lines
4.1 KiB
JavaScript
152 lines
4.1 KiB
JavaScript
/**
|
||
* 互动接口模块
|
||
* 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
|
||
}
|
||
|
||
export default {
|
||
recordView,
|
||
favorite,
|
||
unlock,
|
||
report,
|
||
getViewedMe,
|
||
getMyViewed,
|
||
getFavoritedMe,
|
||
getMyFavorite,
|
||
getUnlockedMe,
|
||
getMyUnlocked
|
||
}
|