mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-12 18:26:36 +08:00
压缩历史至 95081aff
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Leaderboard 服务模块
|
||||
*
|
||||
* @description
|
||||
* 提供排行榜相关的服务,基于 available_balance 排序
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { LeaderboardService } from '@/lib/services/leaderboard';
|
||||
*
|
||||
* // 获取排行榜
|
||||
* const list = await LeaderboardService.getList({ page: 1, page_size: 20 });
|
||||
*
|
||||
* // 获取当前用户排名
|
||||
* const myRank = await LeaderboardService.getMyRank();
|
||||
* ```
|
||||
*/
|
||||
|
||||
export { LeaderboardService } from "./leaderboard.service";
|
||||
export type {
|
||||
LeaderboardEntry,
|
||||
LeaderboardListRequest,
|
||||
LeaderboardListResponse,
|
||||
UserRankInfo,
|
||||
UserRankResponse,
|
||||
} from "./types";
|
||||
@@ -0,0 +1,42 @@
|
||||
import { BaseService } from "../core/base.service";
|
||||
import type {
|
||||
LeaderboardListRequest,
|
||||
LeaderboardListResponse,
|
||||
UserRankResponse,
|
||||
} from "./types";
|
||||
|
||||
/**
|
||||
* 排行榜服务
|
||||
* 基于 available_balance 排序
|
||||
*/
|
||||
export class LeaderboardService extends BaseService {
|
||||
protected static readonly basePath = "/api/v1/leaderboard";
|
||||
|
||||
/**
|
||||
* 获取排行榜列表
|
||||
* @param params - 分页参数
|
||||
* @returns 排行榜列表响应
|
||||
*/
|
||||
static async getList(
|
||||
params?: LeaderboardListRequest,
|
||||
): Promise<LeaderboardListResponse> {
|
||||
return this.get<LeaderboardListResponse>("", params);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户排名
|
||||
* @returns 用户排名响应
|
||||
*/
|
||||
static async getMyRank(): Promise<UserRankResponse> {
|
||||
return this.get<UserRankResponse>("/me");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户排名
|
||||
* @param userId - 用户 ID
|
||||
* @returns 用户排名响应
|
||||
*/
|
||||
static async getUserRankById(userId: number): Promise<UserRankResponse> {
|
||||
return this.get<UserRankResponse>(`/users/${ userId }`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* Leaderboard 服务类型定义
|
||||
* 使用 available_balance 排序
|
||||
*/
|
||||
|
||||
/**
|
||||
* 排行榜条目
|
||||
*/
|
||||
export interface LeaderboardEntry {
|
||||
/** 用户ID */
|
||||
user_id: number;
|
||||
/** 用户名 */
|
||||
username: string;
|
||||
/** 头像URL */
|
||||
avatar_url: string;
|
||||
/** 可用余额 */
|
||||
available_balance: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 排行榜请求参数
|
||||
*/
|
||||
export interface LeaderboardListRequest {
|
||||
/** 页码 */
|
||||
page: number;
|
||||
/** 每页数量 */
|
||||
page_size: number;
|
||||
/** 索引签名 */
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
/**
|
||||
* 排行榜列表响应
|
||||
*/
|
||||
export interface LeaderboardListResponse {
|
||||
/** 排序字段 */
|
||||
sort_by: string;
|
||||
/** 排序方向 */
|
||||
order: string;
|
||||
/** 当前页码 */
|
||||
page: number;
|
||||
/** 每页数量 */
|
||||
page_size: number;
|
||||
/** 总数 */
|
||||
total: number;
|
||||
/** 排行榜条目列表 */
|
||||
items: LeaderboardEntry[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户排名信息
|
||||
*/
|
||||
export interface UserRankInfo {
|
||||
/** 用户ID */
|
||||
user_id: number;
|
||||
/** 排名 */
|
||||
rank: number;
|
||||
/** 可用余额 */
|
||||
available_balance: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户排名响应
|
||||
*/
|
||||
export interface UserRankResponse {
|
||||
/** 用户排名信息 */
|
||||
user: UserRankInfo;
|
||||
}
|
||||
Reference in New Issue
Block a user