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>} */ export const usereventregistrationProjectsGet = (eventid) => { return http.get(`/usereventregistration/projects/${eventid}`); }; /** * 3.2 分配队员接口 - 搜索队员 * @param {Object} params - 查询参数 * @param {string} params.keyword - 搜索关键字 * @returns {Promise>} */ export const usereventregistrationMembersSearchGet = (params) => { return http.get('/usereventregistration/members/search', { params }); }; /** * 3.2 分配队员接口 - 提交报名(含保存草稿) * @param {Object} data - 报名信息 * @param {number} data.eventId - 赛事ID * @param {Array} data.projectIds - 选择的项目ID列表 * @param {Array} data.memberIds - 选择的队员ID列表 * @param {boolean} data.isDraft - 是否为草稿 (true=保存草稿, false=提交) * @returns {Promise} - 返回报名记录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} data.memberIds - 队员ID列表 * @param {Array} 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}>} 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} - 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} 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); };