feat: 对接赛事列表相关接口文档 更新测试数据

This commit is contained in:
ZhuRui
2026-07-29 16:49:33 +08:00
parent bf09234c8c
commit 444b6f60a5
12 changed files with 1146 additions and 343 deletions
+100
View File
@@ -0,0 +1,100 @@
/**
* 赛事管理 API
* 注意:/admin 前缀已通过 VITE_API_BASE_URL 统一注入(见 .env.*),此文件中只写业务路径。
*/
import { get, post } from '@/utils/request';
import { USE_MOCK, MOCK_DELAY } from '@/config/mock';
import { MOCK_EVENT_DETAIL } from '@/config/mock/eventDetail';
import { buildMockEventListPage } from '@/config/mock/eventList';
import { buildMockSignupListPage } from '@/config/mock/eventSignup';
import type {
EventListQueryParams,
SignupListQueryParams,
ToggleOnlineParams,
ApiResult,
PageData,
TournamentAdminVO,
TournamentAdminInfoVO,
TournamentAdminInfoSignupVO,
} from './types';
export type {
TournamentAdminVO,
TournamentAdminInfoVO,
TournamentAdminInfoSignupVO,
InnerCategoryVO,
EventListQueryParams,
SignupListQueryParams,
ToggleOnlineParams,
PageData,
ApiResult,
} from './types';
/** 模拟延时 */
const delay = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
/**
* 赛事列表 - 列表分页
* GET /admin/manager/tm/page → /manager/tm/page
*/
export async function getEventList(
params: EventListQueryParams,
): Promise<ApiResult<PageData<TournamentAdminVO>>> {
if (USE_MOCK) {
await delay(MOCK_DELAY);
const page = Number(params.page) || 1;
const limit = Number(params.limit) || 10;
return {
code: 200,
msg: 'success',
data: buildMockEventListPage(page, limit),
};
}
return get('/manager/tm/page', params as Record<string, any>);
}
/**
* 赛事列表 - 赛事详情
* GET /admin/manager/tm/info → /manager/tm/info
*/
export async function getEventDetail(id: string): Promise<ApiResult<TournamentAdminInfoVO>> {
if (USE_MOCK) {
await delay(MOCK_DELAY);
return {
code: 200,
msg: 'success',
data: { ...MOCK_EVENT_DETAIL },
};
}
return get('/manager/tm/info', { id });
}
/**
* 赛事列表 - 赛事详情 - 人员列表
* GET /admin/manager/tm/info/signupPage → /manager/tm/info/signupPage
*/
export async function getSignupList(
params: SignupListQueryParams,
): Promise<ApiResult<PageData<TournamentAdminInfoSignupVO>>> {
if (USE_MOCK) {
await delay(MOCK_DELAY);
return {
code: 200,
msg: 'success',
data: buildMockSignupListPage(params),
};
}
return get('/manager/tm/info/signupPage', params as Record<string, any>);
}
/**
* 赛事上架 / 下架
* POST /admin/manager/tm/online → /manager/tm/online
* @param params.id 赛事ID
* @param params.online 0=下架,1=上架
*/
export function toggleEventOnline(
params: ToggleOnlineParams,
): Promise<ApiResult<Record<string, never>>> {
return post('/manager/tm/online', params);
}
+199
View File
@@ -0,0 +1,199 @@
/**
* 赛事管理 — 类型定义
* 对应 OpenAPI: /admin/manager/tm/page
*/
/** 赛事列表项 */
export interface TournamentAdminVO {
/** 赛事ID */
id: string;
/** 赛事名称 */
name: string;
/** 赛事开始时间 */
startTimeBegin: string;
/** 赛事结束时间 */
startTimeEnd: string;
/** 赛事省市区,场地区划名称 */
venueArea: string;
/** 赛事地点名称 */
venue: string;
/** 是否公开;0=非公开,1=公开 */
isPublic: string;
/** 是否要求提供证件图片;0=无需,1=需要 */
isRequireIdCardImg: string;
/** 是否要求提供证件号码;0=无需,1=需要 */
isRequireIdCardNo: string;
/** 创建人昵称 */
createNickname: string;
/** 创建人手机号 */
createPhone: string;
/** 创建时间 */
createTime: string;
/**
* 状态
* 优先级:del_flag==1 → 3(已删除)online==0 → 4(已下架);否则取 status
* 0=报名中,1=进行中,2=已结束,3=已删除,4=已下架
*/
status: string;
/** 报名人数 */
signupCount: string;
/** 退赛人数 */
dropoutCount: string;
/** 赛事规程 */
rulesDescr: string;
/** 赛事规程图片 */
rulesDescrImg: string;
/** 赛事规程图片数组 */
rulesDescrImgList: string[];
}
/** 赛事列表查询参数 */
export interface EventListQueryParams {
page?: string;
limit?: string;
/** 创建时间开始 yyyy-MM-dd */
createDate?: string;
/** 创建时间结束 yyyy-MM-dd */
createDateEnd?: string;
/** 赛事时间开始 yyyy-MM-dd */
startDate?: string;
/** 赛事时间结束 yyyy-MM-dd */
startDateEnd?: string;
/** 赛事名称 */
name?: string;
/** 创建人昵称或手机号 */
createName?: string;
/**
* 赛事状态
* 不传=全部、0=报名中,1=进行中,2=已结束,3=已删除,4=已下架
*/
status?: string;
/** 市级别城市名称 */
areaName?: string;
/** 是否公开;0=非公开,1=公开 */
isPublic?: string;
/** 是否要求提供证件图片;0=无需,1=需要 */
idCardImg?: string;
/** 是否要求提供证件号码;0=无需,1=需要 */
idCardNo?: string;
}
/** 分页数据 */
export interface PageData<T> {
total: number;
list: T[];
}
/** 统一响应包裹 */
export interface ApiResult<T> {
/** 编码:200表示成功,其他值表示失败 */
code: number;
/** 消息内容 */
msg: string;
/** 响应数据 */
data: T;
}
// ============================================================
// 赛事详情(对应 /manager/tm/info
// ============================================================
/** 组别信息 */
export interface InnerCategoryVO {
/** 组别ID */
id: string;
/** 组别名称 */
name: string;
/** 组别类型;1=单打,2=双打 */
type: string;
}
/** 赛事详情 */
export interface TournamentAdminInfoVO {
/** 赛事名称 */
name: string;
/** 赛事开始时间 */
startTimeBegin: string;
/** 赛事结束时间 */
startTimeEnd: string;
/** 赛事说明 */
descr: string;
/** 报名开始时间 */
signupTimeBegin: string;
/** 报名结束时间 */
signupTimeEnd: string;
/** 赛事省市区 */
venueArea: string;
/** 赛事地点名称 */
venue: string;
/** 场地号 */
venueNo: string;
/** 是否公开;0=非公开,1=公开 */
isPublic: string;
/** 是否要求提供证件图片;0=无需,1=需要 */
isRequireIdCardImg: string;
/** 是否要求提供证件号码;0=无需,1=需要 */
isRequireIdCardNo: string;
/** 创建时间 */
createTime: string;
/** 创建人昵称 */
createNickname: string;
/** 报名人数 */
signupCount: string;
/** 退赛人数 */
dropoutCount: string;
/** 允许报名最大人数 */
dtotalLimit: string;
/** 总对阵数 */
matchTotalCount: string;
/** 已完成对阵数 */
matchCount: string;
/** 赛事封面url */
img: string;
/** 活动公告 */
notice: string;
/** 组别列表,创建时间倒序 */
categoryList: InnerCategoryVO[];
/** 分组名称列表,格式 "小组名称(淘汰赛或循环赛)" */
groupInfoList: string[];
}
// ============================================================
// 人员列表(对应 /manager/tm/info/signupPage
// ============================================================
/** 报名人员 */
export interface TournamentAdminInfoSignupVO {
/** 选手名称 */
realName: string;
/** 选手性别;1=男,2=女 */
gender: string;
/** 选手手机号 */
phone: string;
/** 选手身份证 */
idCard: string;
/** 选手身份证图片 */
idCardImg: string;
/** 选手身份证图片列表 */
idCardImgList: string[];
}
/** 人员列表查询参数 */
export interface SignupListQueryParams {
page: string;
limit: string;
/** 组别ID(必填) */
categoryId: string;
}
// ============================================================
// 上下架(对应 /manager/tm/online
// ============================================================
/** 上下架请求参数 */
export interface ToggleOnlineParams {
/** 赛事ID */
id: string;
/** 0=下架,1=上架 */
online: string;
}