YD_Event.Web/src/api/match/usereventregistration.js
2026-04-15 09:58:29 +08:00

332 lines
8.9 KiB
JavaScript

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 });
};
/**
* 获取赛事详情
* @param {number} id - 赛事ID (路径参数)
* @returns {Promise<{
* id: number,
* name: string,
* coverImage: string,
* eventVideo: string,
* status: string,
* type: string,
* registrationType: string,
* pointsRuleName: string,
* registrationStartTime: string,
* registrationEndTime: string,
* isNeedMaterial: boolean,
* materialRemark: string,
* materialUploadEndTime: string,
* matchStartTime: string,
* matchEndTime: string,
* description: string,
* address: string,
* units: Array<{
* unitType: string,
* unitName: string,
* logoUrl: string,
* sort: number
* }>,
* projects: Array<{
* id: number,
* name: string,
* fee: number,
* completionCount: number,
* teamSize: number,
* limitCount: number,
* projectTypeName: string,
* groups: Array<{
* id: number,
* groupName: string,
* birthDateStart: string,
* birthDateEnd: string,
* gender: string
* }>
* }>,
* limitConfig: {
* individualProjectLimit: number,
* teamProjectLimit: number
* },
* feeConfig: {
* chargeMode: string,
* price: number
* },
* parentProjectTypeName: string,
* registrationId: number,
* userRegistrationStatus: string
* }>}
*/
export const usereventregistrationDetailGet = (id) => {
return http.get(`/usereventregistration/detail/${id}`);
};
/**
* 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,
* isFree: boolean
* }>}
*/
export const usereventregistrationOrderCreatePost = (data) => {
return http.post('/usereventregistration/order/create', data);
};
/**
* 验证优惠券
* @param {Object} data - 优惠券信息
* @param {string} data.couponCode - 优惠券码
* @param {number} data.eventId - 赛事ID
* @param {number} data.originalAmount - 原始总金额
* @returns {Promise<{
* isValid: boolean,
* couponId: number,
* couponName: string,
* discountType: number,
* discountValue: number,
* discountAmount: number,
* finalAmount: number,
* invalidReason: string
* }>}
*/
export const usereventregistrationCouponValidatePost = (data) => {
return http.post('/usereventregistration/coupon/validate', data);
};
/**
* 验证队员是否符合报名条件
* @param {Object} data - 验证信息
* @param {number} data.eventId - 赛事ID
* @param {number} data.memberId - 队员ID
* @param {number} data.groupId - 组别ID
* @returns {Promise<{
* isValid: boolean,
* ageValid: boolean,
* genderValid: boolean,
* registrationLimitValid: boolean,
* message: string
* }>}
*/
export const usereventregistrationMemberValidatePost = (data) => {
return http.post('/usereventregistration/member/validate', data);
};
/**
* 检查报名限制
* @param {Object} data - 检查信息
* @param {number} data.eventId - 赛事ID
* @param {Array<number>} data.memberIds - 队员ID列表
* @param {Array<number>} data.groupIds - 组别ID列表
* @returns {Promise<{
* hasLimit: boolean,
* limitDetails: Array<{
* memberId: number,
* memberName: string,
* limitType: string,
* limitMessage: string
* }>
* }>}
*/
export const usereventregistrationRegistrationLimitCheckPost = (data) => {
return http.post('/usereventregistration/registration-limit/check', data);
};
/**
* 获取组别可报队伍数量配置
* @param {number} eventId - 赛事ID
* @returns {Promise<{
* groupId: number,
* maxTeams: number,
* currentTeams: number
* }>}
*/
export const usereventregistrationGroupTeamLimitGet = (eventId) => {
return http.get(`/usereventregistration/group-team-limit/${eventId}`);
};
/**
* 检查项目完成人数
* @param {Object} data - 检查信息
* @param {number} data.eventId - 赛事ID
* @param {Array<{groupId: number, memberIds: Array<number>}>} data.groupMembers - 组别队员分配
* @returns {Promise<{
* hasError: boolean,
* errors: Array<{
* projectId: number,
* projectName: string,
* errorType: string,
* errorMessage: string
* }>
* }>}
*/
export const usereventregistrationProjectCompletionCheckPost = (data) => {
return http.post('/usereventregistration/project-completion/check', data);
};
/**
* 查询订单支付状态
* @param {string} orderNo - 订单号
* @returns {Promise<number>} - 0:未支付, 1:已支付
*/
export const usereventregistrationOrderStatusGet = (orderNo) => {
return http.get(`/usereventregistration/order/status/${orderNo}`);
};
/**
* 检查组别选择限制
* @param {Object} data - 检查信息
* @param {number} data.eventId - 赛事ID
* @param {number} data.groupId - 要检查的组别ID
* @param {Array<number>} data.selectedGroupIds - 当前已选择的组别ID列表
* @returns {Promise<{
* canSelect: boolean,
* limitMessage: string,
* groupLimit: {
* groupLimitCount: number,
* currentRegistrations: number,
* isLimitReached: boolean
* },
* projectLimit: {
* projectLimitCount: number,
* currentSelectedCount: number,
* isLimitReached: boolean
* },
* teamProjectLimit: {
* limitCount: number,
* currentSelectedCount: number,
* isLimitReached: boolean
* },
* individualProjectLimit: {
* limitCount: number,
* currentSelectedCount: number,
* isLimitReached: boolean
* }
* }>}
*/
export const usereventregistrationCheckGroupSelectionLimitPost = (data) => {
return http.post('/usereventregistration/check-group-selection-limit', data);
};