import request from "@/utils/request.js";

// 获取所有上架的分类列表
export function getCategoryListAPI() {
  return request.get("custom/factory/category/list");
}

// 获取所有上架的商品列表
export function getProductListAPI(categoryId) {
  const url =
    categoryId === 0
      ? "custom/factory/product/list"
      : `custom/factory/product/list?categoryId=${categoryId}`;
  return request.get(url);
}

/**
 * 获取定制工厂商品详情
 * @param {number} id - 商品ID（必填）
 * @returns {Promise} - 接口响应Promise对象
 * @response {Object} data - 响应数据
 * @response {number} data.code - 状态码（200表示成功）
 * @response {Object} data.data - 商品详情对象（CustomFactoryProductResponse）
 * @response {number} data.data.id - 商品ID
 * @response {string} data.data.name - 商品名称
 * @response {number} data.data.categoryId - 分类ID
 * @response {string} data.data.categoryName - 分类名称
 * @response {Array} data.data.images - 商品图片列表
 * @response {string} data.data.metalType - 黄金属类型
 * @response {number} data.data.minWeight - 最小克重限制
 * @response {number} data.data.maxWeight - 最大克重限制
 * @response {number} data.data.weightTolerance - 克重误差
 * @response {number} data.data.deliveryDays - 发货工作日
 * @response {boolean} data.data.enableQuantitySelection - 是否开启数量选择（0=否，1=是）
 * @response {Array} data.data.processList - 工艺列表
 * @response {number} data.data.processList[].id - 工艺ID
 * @response {string} data.data.processList[].name - 工艺名称
 * @response {number} data.data.processList[].feePerGram - 每克工艺工费
 * @response {Array} data.data.formItemList - 商品描述表单项列表
 * @response {string} data.message - 响应信息
 */
export function getProductDetailAPI(id) {
  return request.get(`custom/factory/product/detail/${id}`);
}

/**
 * 创建定制工厂订单
 * @param {Object} data - 订单请求参数
 */
export function createOrderAPI(data) {
  return request.post("custom/factory/order/create", data);
}

/**
 * 获取定制工厂我的订单列表（支持分页、状态筛选）
 * @param {Object} [options] - 请求配置参数（所有参数均为可选）
 * @param {number} [options.page=1] - 页码（默认1，integer类型）
 * @param {number} [options.limit=20] - 每页数量（默认20，integer类型）
 * @param {number} [options.status=-1] - 订单状态（默认-1表示全部，0=待生产，1=待确认，2=已确认，3=待发货，4=等待收货，5=已完成，6=已取消）
 */
export function customFactoryOrderListAPI(options = {}) {
  // 解构参数并设置默认值（符合接口文档的非必须参数要求）
  const {
    page = 1,
    limit = 20,
    status = -1, // -1 表示默认查询全部状态（接口未传status时也为全部，此处显式设为-1更清晰）
  } = options;

  const url =
    status === -1
      ? `custom/factory/order/my/list?page=${page}&limit=${limit}`
      : `custom/factory/order/my/list?page=${page}&limit=${limit}&status=${status}`;
  return request.get(url);
}

/**
 * 获取定制工厂订单详情
 * @param {number} orderId - 订单ID（必传）
 * @returns {Promise} - 请求Promise对象
 */
export function getOrderDetailAPI(orderId) {
  return request.get(`custom/factory/order/detail/${orderId}`);
}

/**
 * 定制工厂订单确认支付
 * @param {Object} data - 订单请求参数
 */
export function confirmOrder(data) {
  return request.post("custom/factory/order/confirm/payment", data);
}
