import request from '@/axios';

// ==================== 武术赛事信息发布管理接口 ====================

/**
 * 信息发布分页查询
 * @param {Number} current - 当前页,默认1
 * @param {Number} size - 每页条数,默认10
 * @param {Object} params - 查询参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.infoType - 信息类型（可选）
 * @param {Number} params.publishStatus - 发布状态（可选）
 * @param {String} params.title - 标题（可选）
 */
export const getInfoPublishList = (current, size, params) => {
  return request({
    url: '/api/martial/infoPublish/list',
    method: 'get',
    params: {
      current,
      size,
      ...params
    }
  })
}

/**
 * 获取信息发布详情
 * @param {Number} id - 信息ID
 */
export const getInfoPublishDetail = (id) => {
  return request({
    url: '/api/martial/infoPublish/detail',
    method: 'get',
    params: { id }
  })
}

/**
 * 新增或修改信息（提交）
 * @param {Object} data - 信息数据
 * @param {Number} data.id - ID（修改时必传）
 * @param {Number} data.competitionId - 赛事ID
 * @param {Number} data.infoType - 信息类型（1公告2通知3新闻4规则5其他）
 * @param {String} data.title - 标题
 * @param {String} data.content - 内容
 * @param {String} data.summary - 摘要（可选）
 * @param {String} data.coverImage - 封面图片（可选）
 * @param {Array} data.attachments - 附件URL数组（可选）
 * @param {Number} data.isTop - 是否置顶（0否1是）
 * @param {Number} data.isImportant - 是否重要（0否1是）
 * @param {String} data.publishTime - 发布时间（可选，为空则立即发布）
 */
export const submitInfo = (data) => {
  return request({
    url: '/api/martial/infoPublish/submit',
    method: 'post',
    data
  })
}

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

/**
 * 撤回信息
 * @param {Number} id - 信息ID
 */
export const withdrawInfo = (id) => {
  return request({
    url: '/api/blade-martial/infoPublish/withdraw',
    method: 'post',
    params: { id }
  })
}

/**
 * 置顶/取消置顶信息
 * @param {Number} id - 信息ID
 * @param {Number} isTop - 是否置顶（0否1是）
 */
export const toggleTop = (id, isTop) => {
  return request({
    url: '/api/blade-martial/infoPublish/toggle-top',
    method: 'post',
    params: { id, isTop }
  })
}

/**
 * 设置/取消重要信息
 * @param {Number} id - 信息ID
 * @param {Number} isImportant - 是否重要（0否1是）
 */
export const toggleImportant = (id, isImportant) => {
  return request({
    url: '/api/blade-martial/infoPublish/toggle-important',
    method: 'post',
    params: { id, isImportant }
  })
}

/**
 * 获取已发布信息列表（不分页）
 * @param {Number} competitionId - 赛事ID
 * @param {Number} infoType - 信息类型（可选）
 * @param {Number} limit - 获取数量（默认10）
 */
export const getPublishedInfoList = (competitionId, infoType, limit = 10) => {
  return request({
    url: '/api/blade-martial/infoPublish/published',
    method: 'get',
    params: { competitionId, infoType, limit }
  })
}

/**
 * 获取置顶信息列表
 * @param {Number} competitionId - 赛事ID
 */
export const getTopInfoList = (competitionId) => {
  return request({
    url: '/api/blade-martial/infoPublish/top-info',
    method: 'get',
    params: { competitionId }
  })
}

/**
 * 获取重要信息列表
 * @param {Number} competitionId - 赛事ID
 */
export const getImportantInfoList = (competitionId) => {
  return request({
    url: '/api/blade-martial/infoPublish/important-info',
    method: 'get',
    params: { competitionId }
  })
}

/**
 * 搜索信息
 * @param {Object} params - 搜索参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {String} params.keyword - 关键词
 * @param {Number} params.infoType - 信息类型（可选）
 * @param {String} params.startTime - 开始时间（可选）
 * @param {String} params.endTime - 结束时间（可选）
 */
export const searchInfo = (params) => {
  return request({
    url: '/api/blade-martial/infoPublish/search',
    method: 'get',
    params
  })
}

/**
 * 增加阅读量
 * @param {Number} id - 信息ID
 */
export const increaseViewCount = (id) => {
  return request({
    url: '/api/blade-martial/infoPublish/view',
    method: 'post',
    params: { id }
  })
}

/**
 * 上传封面图片
 * @param {File} file - 图片文件
 */
export const uploadCoverImage = (file) => {
  const formData = new FormData()
  formData.append('file', file)
  return request({
    url: '/api/blade-martial/infoPublish/upload-cover',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 上传附件
 * @param {File} file - 附件文件
 */
export const uploadAttachment = (file) => {
  const formData = new FormData()
  formData.append('file', file)
  return request({
    url: '/api/blade-martial/infoPublish/upload-attachment',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 下载附件
 * @param {String} attachmentUrl - 附件URL
 */
export const downloadAttachment = (attachmentUrl) => {
  return request({
    url: '/api/blade-martial/infoPublish/download',
    method: 'get',
    params: { attachmentUrl },
    responseType: 'blob'
  })
}

/**
 * 获取信息统计
 * @param {Number} competitionId - 赛事ID
 */
export const getInfoStatistics = (competitionId) => {
  return request({
    url: '/api/blade-martial/infoPublish/statistics',
    method: 'get',
    params: { competitionId }
  })
}

/**
 * 批量发布信息
 * @param {Array} data - 信息数据数组
 */
export const batchPublishInfo = (data) => {
  return request({
    url: '/api/blade-martial/infoPublish/batch-publish',
    method: 'post',
    data
  })
}
