149 lines
3.3 KiB
JavaScript
149 lines
3.3 KiB
JavaScript
/**
|
||
* API接口 - 选手模块
|
||
* 真实后端接口调用(需要后端实现)
|
||
*/
|
||
|
||
import request from '@/utils/request.js'
|
||
|
||
/**
|
||
* 获取我的选手列表(普通评委)
|
||
* @param {Object} params
|
||
* @param {String} params.matchCode - 比赛编码(推荐方式)
|
||
* @param {String} params.judgeId - 评委ID(备选方式)
|
||
* @param {String} params.venueId - 场地ID(备选方式)
|
||
* @param {String} params.projectId - 项目ID(备选方式)
|
||
* @returns {Promise}
|
||
*
|
||
* 注意:此接口需要后端实现
|
||
* 建议路径: GET /api/mini/athletes
|
||
*
|
||
* 推荐实现方式:
|
||
* 1. 优先从 Token 中解析评委信息(最安全)
|
||
* 2. 或使用 matchCode 参数,后端根据 Token 中的邀请码关联查询
|
||
* 3. 或使用 judgeId + venueId + projectId 直接查询
|
||
*/
|
||
export function getMyAthletes(params) {
|
||
return request({
|
||
url: '/api/mini/athletes',
|
||
method: 'GET',
|
||
params: params, // GET 请求使用 params
|
||
showLoading: true
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取选手列表(裁判长)
|
||
* @param {Object} params
|
||
* @param {String} params.competitionId - 比赛ID
|
||
* @param {String} params.venueId - 场地ID
|
||
* @param {String} params.projectId - 项目ID
|
||
* @returns {Promise}
|
||
*
|
||
* 注意:此接口需要后端实现
|
||
* 建议路径: GET /api/mini/athletes/admin
|
||
*/
|
||
export function getAthletesForAdmin(params) {
|
||
return request({
|
||
url: '/api/mini/athletes/admin',
|
||
method: 'GET',
|
||
params: params, // GET 请求使用 params
|
||
showLoading: true
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取场地列表
|
||
* @param {Object} params
|
||
* @param {String} params.competitionId - 比赛ID
|
||
* @returns {Promise}
|
||
*/
|
||
export function getVenues(params) {
|
||
return request({
|
||
url: '/martial/venue/list',
|
||
method: 'GET',
|
||
params: {
|
||
...params,
|
||
current: 1,
|
||
size: 100
|
||
}
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取项目列表
|
||
* @param {Object} params
|
||
* @param {String} params.competitionId - 比赛ID
|
||
* @returns {Promise}
|
||
*/
|
||
export function getProjects(params) {
|
||
return request({
|
||
url: '/martial/project/list',
|
||
method: 'GET',
|
||
params: {
|
||
...params,
|
||
current: 1,
|
||
size: 100
|
||
}
|
||
})
|
||
}
|
||
|
||
export default {
|
||
getMyAthletes,
|
||
getAthletesForAdmin,
|
||
getVenues,
|
||
getProjects
|
||
}
|
||
|
||
/**
|
||
* 后端接口规范(待实现):
|
||
*
|
||
* GET /api/mini/athletes
|
||
*
|
||
* 请求参数:
|
||
* {
|
||
* "judgeId": "456",
|
||
* "venueId": "1",
|
||
* "projectId": "5"
|
||
* }
|
||
*
|
||
* 响应:
|
||
* {
|
||
* "code": 200,
|
||
* "success": true,
|
||
* "msg": "操作成功",
|
||
* "data": [
|
||
* {
|
||
* "athleteId": "1",
|
||
* "name": "张三",
|
||
* "idCard": "123456789000000000",
|
||
* "team": "少林寺武术大学院",
|
||
* "number": "123-4567898275",
|
||
* "myScore": 8.906,
|
||
* "totalScore": 8.907,
|
||
* "scored": true,
|
||
* "scoreTime": "2025-06-25 09:15:00"
|
||
* }
|
||
* ]
|
||
* }
|
||
*
|
||
* SQL示例:
|
||
* SELECT
|
||
* a.id AS athleteId,
|
||
* a.player_name AS name,
|
||
* a.id_card AS idCard,
|
||
* a.team_name AS team,
|
||
* a.player_no AS number,
|
||
* a.total_score AS totalScore,
|
||
* s.score AS myScore,
|
||
* CASE WHEN s.id IS NOT NULL THEN 1 ELSE 0 END AS scored,
|
||
* s.score_time AS scoreTime
|
||
* FROM martial_athlete a
|
||
* LEFT JOIN martial_score s
|
||
* ON a.id = s.athlete_id
|
||
* AND s.judge_id = #{judgeId}
|
||
* WHERE a.venue_id = #{venueId}
|
||
* AND a.project_id = #{projectId}
|
||
* AND a.is_deleted = 0
|
||
* ORDER BY a.order_num ASC
|
||
*/
|