// 导入封装的 HTTP 请求工具，用于与后端 API 进行通信
import request from '@/utils/request'

/**
 * fetchList - 获取首页推荐专题列表
 *
 * 通过 GET 请求获取首页推荐专题列表，支持分页和条件筛选。
 *
 * @param {Object} params - 查询参数，例如分页和筛选条件。
 *                          示例：{ pageNum: 1, pageSize: 10, keyword: '专题名' }
 * @returns {Promise} - 返回一个 Promise 对象，包含接口返回的数据。
 *
 * 用法示例：
 * fetchList({ pageNum: 1, pageSize: 10 }).then(response => {
 *   console.log(response);
 * });
 */
export function fetchList(params) {
  return request({
    url: '/home/recommendSubject/list', // 接口URL：获取推荐专题列表
    method: 'get',                     // 请求方法：GET
    params: params                     // 查询参数，通过 URL 传递
  })
}

/**
 * updateRecommendStatus - 批量更新推荐专题的推荐状态
 *
 * 通过 POST 请求批量更新首页推荐专题的推荐状态。
 *
 * @param {Object} data - 推荐状态数据，包含专题ID数组和推荐状态。
 *                        示例：{ ids: [1, 2, 3], recommendStatus: 1 }
 * @returns {Promise} - 返回一个 Promise 对象，包含操作结果。
 *
 * 用法示例：
 * updateRecommendStatus({ ids: [1, 2, 3], recommendStatus: 1 }).then(response => {
 *   console.log(response);
 * });
 */
export function updateRecommendStatus(data) {
  return request({
    url: '/home/recommendSubject/update/recommendStatus', // 接口URL：更新推荐状态
    method: 'post',                                       // 请求方法：POST
    data: data                                            // 请求体，包含专题ID和推荐状态
  })
}

/**
 * deleteHomeSubject - 批量删除推荐专题
 *
 * 通过 POST 请求删除多个推荐专题。
 *
 * @param {Array<number|string>} data - 专题ID数组，例如 [1, 2, 3]。
 * @returns {Promise} - 返回一个 Promise 对象，包含操作结果。
 *
 * 用法示例：
 * deleteHomeSubject([1, 2, 3]).then(response => {
 *   console.log(response);
 * });
 */
export function deleteHomeSubject(data) {
  return request({
    url: '/home/recommendSubject/delete', // 接口URL：批量删除专题
    method: 'post',                       // 请求方法：POST
    data: data                            // 请求体，包含专题ID数组
  })
}

/**
 * createHomeSubject - 创建新的首页推荐专题
 *
 * 通过 POST 请求提交新的专题数据，创建首页推荐专题。
 *
 * @param {Object} data - 推荐专题的详细数据，例如 { subjectId: 1, subjectName: '专题名', sort: 0 }。
 * @returns {Promise} - 返回一个 Promise 对象，包含操作结果。
 *
 * 用法示例：
 * createHomeSubject({ subjectId: 1, subjectName: '新专题', sort: 1 }).then(response => {
 *   console.log(response);
 * });
 */
export function createHomeSubject(data) {
  return request({
    url: '/home/recommendSubject/create', // 接口URL：创建推荐专题
    method: 'post',                       // 请求方法：POST
    data: data                            // 请求体，包含推荐专题数据
  })
}

/**
 * updateHomeSubjectSort - 更新推荐专题的排序值
 *
 * 通过 POST 请求更新指定推荐专题的排序值。
 *
 * @param {Object} params - 排序参数，包含专题ID和新的排序值。
 *                          示例：{ id: 1, sort: 10 }
 * @returns {Promise} - 返回一个 Promise 对象，包含操作结果。
 *
 * 用法示例：
 * updateHomeSubjectSort({ id: 1, sort: 10 }).then(response => {
 *   console.log(response);
 * });
 */
export function updateHomeSubjectSort(params) {
  return request({
    url: '/home/recommendSubject/update/sort/' + params.id, // 接口URL：更新专题排序
    method: 'post',                                        // 请求方法：POST
    params: params                                         // 排序参数，通过 URL 查询字符串传递
  })
}
