2026-03-23 18:01:01 +08:00
|
|
|
|
import { http } from '../../utils/request';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ==================== 用户端报名管理服务 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 1. 赛事列表展示接口
|
|
|
|
|
|
* @param {Object} params - 查询参数
|
|
|
|
|
|
* @param {string} [params.Status] - 赛事状态 (Enrolling=报名中, Ongoing=比赛中, Ended=已结束)
|
|
|
|
|
|
* @param {string} [params.Type] - 赛事类型 (Online=线上, Offline=线下)
|
|
|
|
|
|
* @param {string} [params.StartTime] - 时间范围开始
|
|
|
|
|
|
* @param {string} [params.EndTime] - 时间范围结束
|
|
|
|
|
|
* @param {string} [params.Keyword] - 关键字搜索(赛事名称)
|
|
|
|
|
|
* @param {number} [params.PageNo] - 当前页码
|
|
|
|
|
|
* @param {number} [params.PageSize] - 每页条数
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* pageNo: number,
|
|
|
|
|
|
* pageSize: number,
|
|
|
|
|
|
* pages: number,
|
|
|
|
|
|
* total: number,
|
|
|
|
|
|
* rows: Array<{
|
|
|
|
|
|
* id: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* coverImage: string,
|
|
|
|
|
|
* status: string,
|
|
|
|
|
|
* type: string,
|
|
|
|
|
|
* registrationEndTime: string,
|
|
|
|
|
|
* matchStartTime: string,
|
|
|
|
|
|
* matchEndTime: string
|
|
|
|
|
|
* }>
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventregistrationListGet = (params) => {
|
|
|
|
|
|
return http.get('/usereventregistration/list', { params });
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2026-03-30 02:42:26 +08:00
|
|
|
|
* 获取赛事详情
|
|
|
|
|
|
* @param {number} id - 赛事ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* eventName: string,
|
|
|
|
|
|
* coverImage: string,
|
|
|
|
|
|
* eventVideo: string,
|
|
|
|
|
|
* eventType: string,
|
|
|
|
|
|
* registrationType: string,
|
|
|
|
|
|
* pointsRuleId: number,
|
|
|
|
|
|
* registrationStartTime: string,
|
|
|
|
|
|
* registrationEndTime: string,
|
|
|
|
|
|
* isNeedMaterial: boolean,
|
|
|
|
|
|
* materialRemark: string,
|
|
|
|
|
|
* materialUploadStartTime: string,
|
|
|
|
|
|
* materialUploadEndTime: string,
|
|
|
|
|
|
* matchStartTime: string,
|
|
|
|
|
|
* matchEndTime: string,
|
|
|
|
|
|
* provinceId: number,
|
|
|
|
|
|
* cityId: number,
|
|
|
|
|
|
* districtId: number,
|
|
|
|
|
|
* detailAddress: string,
|
|
|
|
|
|
* eventIntroduction: string,
|
|
|
|
|
|
* customConfigJson: string,
|
|
|
|
|
|
* units: Array<{
|
|
|
|
|
|
* unitType: string,
|
|
|
|
|
|
* unitName: string,
|
|
|
|
|
|
* logoUrl: string,
|
|
|
|
|
|
* sort: number
|
|
|
|
|
|
* }>,
|
|
|
|
|
|
* projects: Array<{
|
|
|
|
|
|
* id: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* projectTypeId: number,
|
|
|
|
|
|
* projectTypeName: string,
|
|
|
|
|
|
* completionCount: number,
|
|
|
|
|
|
* durationMinutes: number,
|
|
|
|
|
|
* durationSeconds: number,
|
|
|
|
|
|
* fee: number,
|
|
|
|
|
|
* limitCount: number,
|
|
|
|
|
|
* groups: Array<{
|
|
|
|
|
|
* groupName: string,
|
|
|
|
|
|
* birthDateStart: string,
|
|
|
|
|
|
* birthDateEnd: string,
|
|
|
|
|
|
* gender: string
|
|
|
|
|
|
* }>
|
|
|
|
|
|
* }>,
|
|
|
|
|
|
* registrationLimit: {
|
|
|
|
|
|
* individualProjectLimit: number,
|
|
|
|
|
|
* teamProjectLimit: number
|
|
|
|
|
|
* },
|
|
|
|
|
|
* feeConfig: {
|
|
|
|
|
|
* chargeMode: string,
|
|
|
|
|
|
* price: number,
|
|
|
|
|
|
* merchantId: number,
|
|
|
|
|
|
* merchantName: string,
|
|
|
|
|
|
* creditCode: string,
|
|
|
|
|
|
* bankName: string,
|
|
|
|
|
|
* accountNumber: string
|
|
|
|
|
|
* },
|
|
|
|
|
|
* id: number,
|
|
|
|
|
|
* provinceName: string,
|
|
|
|
|
|
* cityName: string,
|
|
|
|
|
|
* districtName: string,
|
|
|
|
|
|
* eventStatus: string,
|
|
|
|
|
|
* qrCodeUrl: string
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
2026-03-23 18:01:01 +08:00
|
|
|
|
export const usereventregistrationDetailGet = (id) => {
|
2026-03-30 02:42:26 +08:00
|
|
|
|
// return http.get(`/usereventregistration/detail/${id}`);
|
|
|
|
|
|
return http.get(`/event/detail/${id}`);
|
2026-03-23 18:01:01 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 3.1 选择报名项目接口
|
|
|
|
|
|
* @param {number} eventid - 赛事ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<Array<{
|
|
|
|
|
|
* id: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* groupName: string,
|
|
|
|
|
|
* fee: number,
|
|
|
|
|
|
* limitCount: number,
|
|
|
|
|
|
* registeredCount: number,
|
|
|
|
|
|
* requirements: string,
|
|
|
|
|
|
* teamSize: number,
|
|
|
|
|
|
* completionCount: number
|
|
|
|
|
|
* }>>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventregistrationProjectsGet = (eventid) => {
|
|
|
|
|
|
return http.get(`/usereventregistration/projects/${eventid}`);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 3.2 分配队员接口 - 搜索队员
|
|
|
|
|
|
* @param {Object} params - 查询参数
|
|
|
|
|
|
* @param {string} params.keyword - 搜索关键字
|
|
|
|
|
|
* @returns {Promise<Array<{
|
|
|
|
|
|
* userId: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* mobile: string,
|
|
|
|
|
|
* idCard: string,
|
|
|
|
|
|
* gender: string,
|
|
|
|
|
|
* isEligible: boolean,
|
|
|
|
|
|
* ineligibilityReason: string
|
|
|
|
|
|
* }>>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventregistrationMembersSearchGet = (params) => {
|
|
|
|
|
|
return http.get('/usereventregistration/members/search', { params });
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 3.2 分配队员接口 - 提交报名(含保存草稿)
|
|
|
|
|
|
* @param {Object} data - 报名信息
|
|
|
|
|
|
* @param {number} data.eventId - 赛事ID
|
|
|
|
|
|
* @param {Array<number>} data.projectIds - 选择的项目ID列表
|
|
|
|
|
|
* @param {Array<number>} data.memberIds - 选择的队员ID列表
|
|
|
|
|
|
* @param {boolean} data.isDraft - 是否为草稿 (true=保存草稿, false=提交)
|
|
|
|
|
|
* @returns {Promise<number>} - 返回报名记录ID
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventregistrationSubmitPost = (data) => {
|
|
|
|
|
|
return http.post('/usereventregistration/submit', data);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 3.3 预览支付接口
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* eventId: number,
|
|
|
|
|
|
* eventName: string,
|
|
|
|
|
|
* projects: Array<{
|
|
|
|
|
|
* id: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* groupName: string,
|
|
|
|
|
|
* fee: number,
|
|
|
|
|
|
* limitCount: number,
|
|
|
|
|
|
* registeredCount: number,
|
|
|
|
|
|
* requirements: string,
|
|
|
|
|
|
* teamSize: number,
|
|
|
|
|
|
* completionCount: number
|
|
|
|
|
|
* }>,
|
|
|
|
|
|
* members: Array<{
|
|
|
|
|
|
* userId: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* mobile: string,
|
|
|
|
|
|
* idCard: string,
|
|
|
|
|
|
* gender: string,
|
|
|
|
|
|
* isEligible: boolean,
|
|
|
|
|
|
* ineligibilityReason: string
|
|
|
|
|
|
* }>,
|
|
|
|
|
|
* totalAmount: number,
|
|
|
|
|
|
* feeDetails: object
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventregistrationPreviewGet = (registrationid) => {
|
|
|
|
|
|
return http.get(`/usereventregistration/preview/${registrationid}`);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 创建支付订单
|
|
|
|
|
|
* @param {Object} data - 订单信息
|
|
|
|
|
|
* @param {number} data.registrationId - 报名记录ID
|
|
|
|
|
|
* @param {number} data.paymentMethod - 支付方式 (1:微信支付, 2:支付宝支付, 3:银行转账)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* orderNo: string,
|
|
|
|
|
|
* payUrl: string,
|
|
|
|
|
|
* status: number
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventregistrationOrderCreatePost = (data) => {
|
|
|
|
|
|
return http.post('/usereventregistration/order/create', data);
|
|
|
|
|
|
};
|