import request from '@/utils/request'

export function getProductCodeSuggestions(params) {
  return request({
    url: '/reports/product-code-suggestions',
    method: 'get',
    params
  })
}
/**
 * 销售分析模块API接口
 * 包含分析数据、基准数据、分类管理、店铺客户关联、报表分析等功能
 */

// ==================== 分析数据管理 ====================

/**
 * 获取分析数据列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.productCode - 商品编号
 * @param {string} params.productName - 商品名称
 * @param {string} params.customerName - 客户名称
 * @param {string} params.shopName - 店铺名称
 * @param {string} params.status - 状态
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @returns {Promise} 返回数据列表和分页信息
 */
export function getAnalysisDataList(params) {
  return request({
    url: '/analysis-data',
    method: 'get',
    params
  })
}

/**
 * 更新分析数据
 * @param {number} id - 数据ID
 * @param {Object} data - 更新数据
 * @returns {Promise} 更新结果
 */
export function updateAnalysisData(id, data) {
  return request({
    url: `/analysis-data/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除分析数据
 * @param {number} id - 数据ID
 * @returns {Promise} 删除结果
 */
export function deleteAnalysisData(id) {
  return request({
    url: `/analysis-data/${id}`,
    method: 'delete'
  })
}

/**
 * 批量删除分析数据
 * @param {string} ids - 数据ID列表，逗号分隔
 * @returns {Promise} 批量删除结果
 */
export function batchDeleteAnalysisData(ids) {
  return request({
    url: `/analysis-data/batch/${ids}`,
    method: 'delete'
  })
}

/**
 * 导出分析数据
 * @param {Object} params - 导出参数
 * @returns {string} 导出文件URL
 */
export function exportAnalysisData(params) {
  const queryString = new URLSearchParams(params).toString()
  return request({
    url: `/analysis-data/export?${queryString}`,
    responseType: 'blob',
    method: 'get'
  })
}

// ==================== 数据导入 ====================

/**
 * 批量导入分析数据（物流数据）
 * @param {FormData} formData - 包含文件和分类ID的表单数据
 * @returns {Promise} 导入结果
 */
export function importAnalysisDataBatch(formData) {
  return request({
    url: '/analysis-data/import-batch',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 批量导入FBA数据
 * @param {FormData} formData - 包含文件和店铺名称的表单数据
 * @returns {Promise} 导入结果
 */
export function importFBADataBatch(formData) {
  return request({
    url: '/analysis-data/import/fba/batch',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 保存导入的数据
 * @param {Object} data - 导入的数据
 * @returns {Promise} 保存结果
 */
export function saveImportedData(data) {
  return request({
    url: '/analysis-data/save-imported',
    method: 'post',
    data
  })
}

// ==================== 基准数据管理 ====================

/**
 * 获取分类列表（简化版）
 * @returns {Promise} 分类列表
 */
export function getCategoriesSimple() {
  return request({
    url: '/categories/simple',
    method: 'get'
  })
}

/**
 * 获取分类详情
 * @param {number} categoryId - 分类ID
 * @returns {Promise} 分类详情
 */
export function getCategoryDetail(categoryId) {
  return request({
    url: `/categories/${categoryId}`,
    method: 'get'
  })
}

/**
 * 获取基准数据列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {number} params.categoryId - 分类ID
 * @param {string} params.productCode - 商品编号
 * @param {string} params.productName - 商品名称
 * @returns {Promise} 基准数据列表和分页信息
 */
export function getBaseDataList(params) {
  return request({
    url: '/basedata',
    method: 'get',
    params
  })
}

/**
 * 导出基准数据
 * @param {number} categoryId - 分类ID
 * @returns {Promise} 导出文件URL
 */
export function exportBaseData(categoryId) {
  return request({
    url: `/basedata/export/${categoryId}`,
    responseType: 'blob',
    method: 'get'
  })
}

/**
 * 删除基准数据
 * @param {number} id - 数据ID
 * @returns {Promise} 删除结果
 */
export function deleteBaseData(id) {
  return request({
    url: `/basedata/${id}`,
    method: 'delete'
  })
}

/**
 * 批量删除基准数据
 * @param {string} ids - 数据ID列表，逗号分隔
 * @returns {Promise} 批量删除结果
 */
export function batchDeleteBaseData(ids) {
  return request({
    url: `/basedata/batch/${ids}`,
    method: 'delete'
  })
}

/**
 * 新增基准数据
 * @param {Object} data - 新增数据
 * @returns {Promise} 新增结果
 */
export function BaseDataAdd(data) {
  return request({
    url: '/basedata',
    method: 'post',
    data
  })
}

/**
 * 更新基准数据
 * @param {number} id - 数据ID
 * @param {Object} data - 更新数据
 * @returns {Promise} 更新结果
 */
export function BaseDataUpdate(id, data) {
  return request({
    url: `/basedata/${id}`,
    method: 'put',
    data
  })
}

// ==================== 分类管理 ====================

/**
 * 获取分类列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.name - 分类名称
 * @returns {Promise} 分类列表和分页信息
 */
export function getCategoriesList(params) {
  return request({
    url: '/categories',
    method: 'get',
    params
  })
}

/**
 * 创建分类
 * @param {Object} data - 分类数据
 * @returns {Promise} 创建结果
 */
export function createCategory(data) {
  return request({
    url: '/categories',
    method: 'post',
    data
  })
}

/**
 * 更新分类
 * @param {number} id - 分类ID
 * @param {Object} data - 分类数据
 * @returns {Promise} 更新结果
 */
export function updateCategory(id, data) {
  return request({
    url: `/categories/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除分类
 * @param {number} id - 分类ID
 * @returns {Promise} 删除结果
 */
export function deleteCategory(id) {
  return request({
    url: `/categories/${id}`,
    method: 'delete'
  })
}

// ==================== 店铺客户关联管理 ====================

/**
 * 获取店铺客户关联列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.shopName - 店铺名称
 * @param {string} params.customerName - 客户名称
 * @returns {Promise} 关联列表和分页信息
 */
export function getShopCustomerList(params) {
  return request({
    url: '/shop-customer',
    method: 'get',
    params
  })
}

/**
 * 删除店铺客户关联
 * @param {number} id - 关联ID
 * @returns {Promise} 删除结果
 */
export function deleteShopCustomer(id) {
  return request({
    url: `/shop-customer/${id}`,
    method: 'delete'
  })
}

/**
 * 批量删除店铺客户关联
 * @param {string} ids - 关联ID列表，逗号分隔
 * @returns {Promise} 批量删除结果
 */
export function batchDeleteShopCustomer(ids) {
  return request({
    url: `/shop-customer/batch/${ids}`,
    method: 'delete'
  })
}

/**
 * 导出店铺客户关联数据
 * @returns {string} 导出文件URL
 */
export function exportShopCustomer() {
  return request({
    url: '/shop-customer/export',
    responseType: 'blob',
    method: 'get'
  })
}

/**
 * 新增店铺客户关联
 * @param {Object} data - 新增数据
 * @returns {Promise} 新增结果
 */
export function ShopCustomerAdd(data) {
  return request({
    url: '/shop-customer',
    method: 'post',
    data
  })
}

/**
 * 更新店铺客户关联
 * @param {number} id - 关联ID
 * @param {Object} data - 更新数据
 * @returns {Promise} 更新结果
 */
export function ShopCustomerUpdate(id, data) {
  return request({
    url: `/shop-customer/${id}`,
    method: 'put',
    data
  })
}

// ==================== 报表分析 ====================

/**
 * 获取报表筛选选项
 * @returns {Promise} 筛选选项数据
 */
export function getReportFilterOptions() {
  return request({
    url: '/reports/filter-options',
    method: 'get',
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

/**
 * 获取商品分析报表数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @param {string} params.productCode - 商品编号
 * @returns {Promise} 商品分析数据
 */
export function getProductAnalysisReport(params) {
  return request({
    url: '/reports/product-analysis',
    method: 'get',
    params
  })
}

/**
 * 获取店铺分析报表数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @param {string} params.shop - 店铺名称
 * @returns {Promise} 店铺分析数据
 */
export function getShopAnalysisReport(params) {
  return request({
    url: '/reports/shop-analysis',
    method: 'get',
    params
  })
}

/**
 * 获取分类分析报表数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @returns {Promise} 分类分析数据
 */
export function getCategoryAnalysisReport(params) {
  return request({
    url: '/reports/category-analysis',
    method: 'get',
    params
  })
}

/**
 * 获取整体分析报表数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @returns {Promise} 整体分析数据
 */
export function getOverallAnalysisReport(params) {
  return request({
    url: '/reports/overall-analysis',
    method: 'get',
    params
  })
}

/**
 * 获取分析数据所有筛选选项
 * @param {*} params
 * @returns
 */
export function getAnalysisAllFilterOptions(params) {
  return request({
    url: '/tjfx/analysis-data/filter-options',
    method: 'get',
    params
  })
}

/**
 * 获取分析数据商品分析
 * @param {*} params
 * @returns
 */
export function getAnalysisProductAnalysis(params) {
  return request({
    url: '/tjfx/analysis-data/product-analysis',
    method: 'get',
    params
  })
}

/**
 * 获取分析数据月度分析
 * @param {*} params
 * @returns
 */
export function getAnalysisMonthlyAnalysis(params) {
  return request({
    url: '/tjfx/analysis-data/monthly-analysis',
    method: 'get',
    params
  })
}
/**
 * 获取分析数据商品店铺分析
 * @param {*} params
 * @returns
 */
export function getAnalysisProductShopAnalysis(params) {
  return request({
    url: '/tjfx/analysis-data/product-shop-analysis',
    method: 'get',
    params
  })
}
/**
 * 获取分析数据综合分析
 * @param {*} params
 * @returns
 */
export function getAnalysisComprehensiveAnalysis(params) {
  return request({
    url: '/tjfx/analysis-data/comprehensive-analysis',
    method: 'get',
    params
  })
}

/**
 * 获取分析数据SSD月度分析
 * @param {*} params
 * @returns
 */
export function getAnalysisSsdMonthlyAnalysis(params) {
  return request({
    url: '/tjfx/analysis-data/ssd-monthly-analysis',
    method: 'get',
    params
  })
}
