import request from '@/axios';

// ==================== 武术赛事成绩管理接口 ====================

/**
 * 成绩分页查询
 * @param {Number} current - 当前页,默认1
 * @param {Number} size - 每页条数,默认10
 * @param {Object} params - 查询参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.projectId - 项目ID（可选）
 * @param {Number} params.athleteId - 运动员ID（可选）
 * @param {String} params.playerName - 运动员姓名（可选）
 * @param {String} params.teamName - 团队名称（可选）
 * @param {Number} params.isFinal - 是否最终成绩（可选）
 */
export const getResultList = (current, size, params) => {
  return request({
    url: '/api/blade-martial/result/list',
    method: 'get',
    params: {
      current,
      size,
      ...params
    }
  })
}

/**
 * 获取成绩详情
 * @param {Number} id - 成绩ID
 */
export const getResultDetail = (id) => {
  return request({
    url: '/api/blade-martial/result/detail',
    method: 'get',
    params: { id }
  })
}

/**
 * 新增成绩
 * @param {Object} data - 成绩数据
 * @param {Number} data.competitionId - 赛事ID
 * @param {Number} data.athleteId - 运动员ID
 * @param {Number} data.projectId - 项目ID
 * @param {Number} data.venueId - 场地ID
 * @param {String} data.playerName - 运动员姓名
 * @param {String} data.teamName - 团队名称
 * @param {Number} data.totalScore - 总分
 * @param {Number} data.difficultyCoefficient - 难度系数
 * @param {Number} data.finalScore - 最终成绩
 */
export const addResult = (data) => {
  return request({
    url: '/api/blade-martial/result/save',
    method: 'post',
    data
  })
}

/**
 * 修改成绩
 * @param {Object} data - 成绩数据
 */
export const updateResult = (data) => {
  return request({
    url: '/api/blade-martial/result/update',
    method: 'post',
    data
  })
}

/**
 * 删除成绩
 * @param {String} ids - 成绩ID,多个用逗号分隔
 */
export const removeResult = (ids) => {
  return request({
    url: '/api/blade-martial/result/remove',
    method: 'post',
    params: { ids }
  })
}

// ==================== 成绩高级功能接口 ====================

/**
 * 计算成绩
 * @param {Object} data - 计算参数
 * @param {Number} data.athleteId - 运动员ID
 * @param {Number} data.projectId - 项目ID
 * @param {Number} data.competitionId - 赛事ID
 * @param {Boolean} data.autoRanking - 是否自动排名（可选）
 */
export const calculateResult = (data) => {
  return request({
    url: '/api/blade-martial/result/calculate',
    method: 'post',
    data
  })
}

/**
 * 批量计算成绩
 * @param {Object} data - 计算参数
 * @param {Number} data.projectId - 项目ID
 * @param {Number} data.competitionId - 赛事ID
 * @param {Array} data.athleteIds - 运动员ID数组（可选，为空时计算所有）
 */
export const batchCalculateResults = (data) => {
  return request({
    url: '/api/blade-martial/result/batch-calculate',
    method: 'post',
    data
  })
}

/**
 * 自动排名
 * @param {Object} data - 排名参数
 * @param {Number} data.projectId - 项目ID
 * @param {Number} data.competitionId - 赛事ID
 * @param {String} data.category - 分组类别（可选）
 */
export const autoRanking = (data) => {
  return request({
    url: '/api/blade-martial/result/ranking',
    method: 'post',
    data
  })
}

/**
 * 分配奖牌
 * @param {Object} data - 奖牌分配参数
 * @param {Number} data.projectId - 项目ID
 * @param {Number} data.competitionId - 赛事ID
 * @param {Number} data.goldCount - 金牌数量
 * @param {Number} data.silverCount - 银牌数量
 * @param {Number} data.bronzeCount - 铜牌数量
 */
export const allocateMedals = (data) => {
  return request({
    url: '/api/blade-martial/result/medals',
    method: 'post',
    data
  })
}

/**
 * 成绩复核
 * @param {Object} data - 复核参数
 * @param {Number} data.resultId - 成绩ID
 * @param {String} data.reviewNote - 复核说明
 * @param {Number} data.reviewStatus - 复核状态（1通过2驳回）
 */
export const reviewResult = (data) => {
  return request({
    url: '/api/blade-martial/result/review',
    method: 'post',
    data
  })
}

/**
 * 发布成绩
 * @param {Object} data - 发布参数
 * @param {Number} data.projectId - 项目ID（可选）
 * @param {Number} data.competitionId - 赛事ID
 * @param {Array} data.resultIds - 成绩ID数组（可选）
 * @param {Boolean} data.publishAll - 是否发布全部（可选）
 */
export const publishResult = (data) => {
  return request({
    url: '/api/blade-martial/result/publish',
    method: 'post',
    data
  })
}

/**
 * 撤销发布成绩
 * @param {Object} data - 撤销参数
 * @param {Number} data.projectId - 项目ID（可选）
 * @param {Number} data.competitionId - 赛事ID
 * @param {Array} data.resultIds - 成绩ID数组（可选）
 */
export const unpublishResult = (data) => {
  return request({
    url: '/api/blade-martial/result/unpublish',
    method: 'post',
    data
  })
}

/**
 * 获取项目成绩统计
 * @param {Number} projectId - 项目ID
 * @param {Number} competitionId - 赛事ID
 */
export const getResultStatistics = (projectId, competitionId) => {
  return request({
    url: '/api/blade-martial/result/statistics',
    method: 'get',
    params: { projectId, competitionId }
  })
}

/**
 * 获取奖牌榜
 * @param {Number} competitionId - 赛事ID
 * @param {String} groupBy - 分组方式（team团队/region地区）
 */
export const getMedalRanking = (competitionId, groupBy = 'team') => {
  return request({
    url: '/api/blade-martial/result/medal-ranking',
    method: 'get',
    params: { competitionId, groupBy }
  })
}

/**
 * 导出成绩单
 * @param {Object} params - 查询参数
 */
export const exportResults = (params) => {
  return request({
    url: '/api/blade-martial/result/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出获奖名单
 * @param {Object} params - 查询参数
 */
export const exportAwardList = (params) => {
  return request({
    url: '/api/blade-martial/result/export-award',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 生成单个证书
 * @param {Object} data - 证书参数
 */
export const generateCertificate = (data) => {
  return request({
    url: '/api/blade-martial/result/certificate/generate',
    method: 'post',
    data,
    responseType: 'blob'
  })
}

/**
 * 批量生成证书
 * @param {Object} data - 批量证书参数
 */
export const batchGenerateCertificates = (data) => {
  return request({
    url: '/api/blade-martial/result/certificate/batch-generate',
    method: 'post',
    data,
    responseType: 'blob'
  })
}
