332 lines
8.9 KiB
JavaScript
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);
|
|
};
|
|
|