/**
 * 仓库服务 - 处理仓库管理、货架管理等
 * @module services/warehouse
 */
import request from '@/utils/request'

/**
 * 仓库相关 API
 */
export const warehouseApi = {
  /**
   * 获取仓库列表
   * @returns {Promise<Array>} 仓库列表
   */
  getList() {
    return request({
      url: '/zhishu/warehouse/list',
      method: 'GET',
      loading: true
    })
  },

  /**
   * 获取仓库详情
   * @param {String} id - 仓库 ID
   * @returns {Promise<Object>} 仓库详情
   */
  getDetail(id) {
    return request({
      url: `/zhishu/warehouse/${id}`,
      method: 'GET'
    })
  },

  /**
   * 创建仓库
   * @param {Object} data - 仓库信息
   * @param {String} data.name - 仓库名称
   * @param {String} data.address - 仓库地址
   * @param {String} data.remark - 备注
   * @returns {Promise<Object>} 创建结果
   */
  create(data) {
    return request({
      url: '/zhishu/warehouse/add',
      method: 'POST',
      data,
      loading: true
    })
  },

  /**
   * 更新仓库信息
   * @param {String} id - 仓库 ID
   * @param {Object} data - 仓库信息
   * @returns {Promise<Object>} 更新结果
   */
  update(id, data) {
    return request({
      url: `/zhishu/warehouse/${id}`,
      method: 'PUT',
      data
    })
  },

  /**
   * 删除仓库
   * @param {String} id - 仓库 ID
   * @returns {Promise<Object>} 删除结果
   */
  delete(id) {
    return request({
      url: `/zhishu/warehouse/${id}`,
      method: 'DELETE',
      loading: true
    })
  }
}

/**
 * 货架相关 API
 */
export const shelfApi = {
  /**
   * 获取货架列表
   * @param {String} warehouseId - 仓库 ID
   * @returns {Promise<Array>} 货架列表
   */
  getList(warehouseId) {
    return request({
      url: '/zhishu/shelf/list',
      method: 'GET',
      data: { warehouseId }
    })
  },

  /**
   * 创建货架
   * @param {Object} data - 货架信息
   * @param {String} data.warehouseId - 仓库 ID
   * @param {String} data.name - 货架名称
   * @param {String} data.code - 货架编码
   * @returns {Promise<Object>} 创建结果
   */
  create(data) {
    return request({
      url: '/zhishu/shelf/add',
      method: 'POST',
      data
    })
  },

  /**
   * 更新货架信息
   * @param {String} id - 货架 ID
   * @param {Object} data - 货架信息
   * @returns {Promise<Object>} 更新结果
   */
  update(id, data) {
    return request({
      url: `/zhishu/shelf/${id}`,
      method: 'PUT',
      data
    })
  },

  /**
   * 删除货架
   * @param {String} id - 货架 ID
   * @returns {Promise<Object>} 删除结果
   */
  delete(id) {
    return request({
      url: `/zhishu/shelf/${id}`,
      method: 'DELETE'
    })
  },

  /**
   * 获取货架库存
   * @param {String} shelfId - 货架 ID
   * @returns {Promise<Array>} 库存列表
   */
  getInventory(shelfId) {
    return request({
      url: `/zhishu/shelf/${shelfId}/inventory`,
      method: 'GET'
    })
  }
}

/**
 * 订单查询 API
 */
export const orderApi = {
  /**
   * 查询订单列表
   * @param {Object} params - 查询参数
   * @param {String} params.warehouseId - 仓库 ID
   * @param {String} params.status - 订单状态
   * @param {Number} params.pageNum - 页码
   * @param {Number} params.pageSize - 每页数量
   * @returns {Promise<Object>} 订单列表
   */
  getList(params) {
    return request({
      url: '/zhishu/order/list',
      method: 'GET',
      data: params
    })
  },

  /**
   * 获取订单详情
   * @param {String} orderId - 订单 ID
   * @returns {Promise<Object>} 订单详情
   */
  getDetail(orderId) {
    return request({
      url: `/zhishu/order/${orderId}`,
      method: 'GET'
    })
  }
}

/**
 * 闪上书（快速上架）API
 */
export const quickShelfApi = {
  /**
   * 批量扫码上架
   * @param {Array} items - 上架项目列表
   * @param {String} items[].isbn - ISBN
   * @param {String} items[].shelfId - 货架 ID
   * @param {Number} items[].quantity - 数量
   * @returns {Promise<Object>} 上架结果
   */
  batchShelf(items) {
    return request({
      url: '/zhishu/quick-shelf/batch',
      method: 'POST',
      data: { items },
      loading: true
    })
  },

  /**
   * 获取上架历史
   * @param {Number} pageNum - 页码
   * @param {Number} pageSize - 每页数量
   * @returns {Promise<Object>} 上架历史记录
   */
  getHistory(pageNum = 1, pageSize = 20) {
    return request({
      url: '/zhishu/quick-shelf/history',
      method: 'GET',
      data: { pageNum, pageSize }
    })
  }
}

export default {
  warehouse: warehouseApi,
  shelf: shelfApi,
  order: orderApi,
  quickShelf: quickShelfApi
}