// 导入封装的 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/recommendProduct/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/recommendProduct/update/recommendStatus', // 接口URL：更新推荐状态
    method: 'post',                                       // 请求方法：POST
    data: data                                            // 请求体，包含商品ID和推荐状态
  })
}

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

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

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