import request from '@/axios';

// ==================== 订单管理接口 ====================
// 注意：后端实际路径为 /martial/registrationOrder

/**
 * 订单分页查询
 * @param {Number} current - 当前页,默认1
 * @param {Number} size - 每页条数,默认10
 * @param {Object} params - 查询参数
 * @param {String} params.keyword - 关键词(订单号/用户名)
 * @param {Number} params.status - 订单状态(0-待支付,1-已支付,2-已取消,3-已退款)
 * @param {Number} params.competitionId - 赛事ID
 */
export const getOrderList = (current, size, params = {}) => {
  return request({
    url: '/api/martial/registrationOrder/list',
    method: 'get',
    params: {
      current,
      size,
      ...params
    }
  })
}

/**
 * 获取订单详情
 * @param {Number} id - 订单主键ID
 */
export const getOrderDetail = (id) => {
  return request({
    url: '/api/martial/registrationOrder/detail',
    method: 'get',
    params: { id }
  })
}

/**
 * 创建订单
 * @param {Object} data - 订单数据
 * @param {Number} data.competitionId - 赛事ID
 * @param {String} data.userName - 用户名
 * @param {String} data.userPhone - 用户手机号
 * @param {Number} data.amount - 订单金额
 * @param {Array} data.participants - 参赛人员列表
 */
export const createOrder = (data) => {
  return request({
    url: '/api/martial/registrationOrder/submit',
    method: 'post',
    data
  })
}

/**
 * 更新订单状态
 * @param {Number} id - 订单ID
 * @param {Number} status - 订单状态
 */
export const updateOrderStatus = (id, status) => {
  return request({
    url: '/api/martial/registrationOrder/update-status',
    method: 'post',
    params: { id, status }
  })
}

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

/**
 * 获取订单报名详情（包含参赛人员、项目统计等）
 * @param {Number} orderId - 订单ID
 * 注意：此接口后端暂未实现，需要添加
 */
export const getOrderRegistrationDetail = (orderId) => {
  return request({
    url: '/api/martial/registrationOrder/registration-detail',
    method: 'get',
    params: { orderId }
  })
}

/**
 * 获取订单的参赛人员列表
 * @param {Number} orderId - 订单ID（可选）
 * @param {Number} competitionId - 赛事ID（可选）
 * 注意：此接口后端暂未实现，可以使用 martial/athlete/list 接口替代
 */
export const getOrderParticipants = (orderIdOrCompetitionId) => {
  // 支持传入订单ID或赛事ID
  const params = { current: 1, size: 10000 }

  // 判断参数类型：如果是对象，直接使用；否则判断是orderId还是competitionId
  if (typeof orderIdOrCompetitionId === 'object') {
    Object.assign(params, orderIdOrCompetitionId)
  } else if (orderIdOrCompetitionId) {
    // 默认作为competitionId使用
    params.competitionId = orderIdOrCompetitionId
  }

  return request({
    url: '/api/martial/athlete/list',
    method: 'get',
    params
  })
}

/**
 * 获取订单的项目统计
 * @param {Number} orderId - 订单ID
 * 注意：此接口后端暂未实现，需要添加
 */
export const getOrderProjectStats = (orderId) => {
  return request({
    url: '/api/martial/registrationOrder/project-stats',
    method: 'get',
    params: { orderId }
  })
}

/**
 * 获取订单的金额统计
 * @param {Number} orderId - 订单ID
 * 注意：此接口后端暂未实现，需要添加
 */
export const getOrderAmountStats = (orderId) => {
  return request({
    url: '/api/martial/registrationOrder/amount-stats',
    method: 'get',
    params: { orderId }
  })
}
