import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import {
  PartnerPreparedVO,
  PartnerPreparedForm,
  PartnerPreparedQuery,
  PartnerPreparedProductVO,
  PartnerPreparedProductForm,
  PartnerPreparedProductQuery
} from './types';

/**
 * 查询伙伴商备货单列表
 * @param query 查询参数
 * @returns 备货单列表
 */
export function listPartnerPrepared(query: PartnerPreparedQuery): AxiosPromise<PartnerPreparedVO[]> {
  return request({
    url: '/customer/partnerPrepared/list',
    method: 'get',
    params: query
  });
}

/**
 * 查询伙伴商备货单详细
 * @param id 备货单ID
 * @returns 备货单详情
 */
export function getPartnerPrepared(id: number): AxiosPromise<PartnerPreparedVO> {
  return request({
    url: '/customer/partnerPrepared/' + id,
    method: 'get'
  });
}

/**
 * 新增伙伴商备货单
 * @param data 备货单数据
 * @returns 结果
 */
export function addPartnerPrepared(data: PartnerPreparedForm) {
  return request({
    url: '/customer/partnerPrepared',
    method: 'post',
    data: data
  });
}

/**
 * 修改伙伴商备货单
 * @param data 备货单数据
 * @returns 结果
 */
export function updatePartnerPrepared(data: PartnerPreparedForm) {
  return request({
    url: '/customer/partnerPrepared',
    method: 'put',
    data: data
  });
}

/**
 * 删除伙伴商备货单
 * @param id 备货单ID数组
 * @returns 结果
 */
export function delPartnerPrepared(id: number | Array<number>) {
  return request({
    url: '/customer/partnerPrepared/' + id,
    method: 'delete'
  });
}

/**
 * 导出伙伴商备货单
 * @param query 查询参数
 */
export function exportPartnerPrepared(query: PartnerPreparedQuery) {
  return request({
    url: '/customer/partnerPrepared/export',
    method: 'post',
    data: query
  });
}

// ==================== 产品明细接口 ====================

/**
 * 查询伙伴商备货单产品明细列表
 * @param query 查询参数
 * @returns 产品明细列表
 */
export function listPartnerPreparedProduct(query: PartnerPreparedProductQuery): AxiosPromise<PartnerPreparedProductVO[]> {
  return request({
    url: '/customer/partnerPreparedProduct/list',
    method: 'get',
    params: query
  });
}

/**
 * 查询伙伴商备货单产品明细详细
 * @param id 产品明细ID
 * @returns 产品明细详情
 */
export function getPartnerPreparedProduct(id: number): AxiosPromise<PartnerPreparedProductVO> {
  return request({
    url: '/customer/partnerPreparedProduct/' + id,
    method: 'get'
  });
}

/**
 * 新增伙伴商备货单产品明细
 * @param data 产品明细数据
 * @returns 结果
 */
export function addPartnerPreparedProduct(data: PartnerPreparedProductForm) {
  return request({
    url: '/customer/partnerPreparedProduct',
    method: 'post',
    data: data
  });
}

/**
 * 修改伙伴商备货单产品明细
 * @param data 产品明细数据
 * @returns 结果
 */
export function updatePartnerPreparedProduct(data: PartnerPreparedProductForm) {
  return request({
    url: '/customer/partnerPreparedProduct',
    method: 'put',
    data: data
  });
}

/**
 * 删除伙伴商备货单产品明细
 * @param id 产品明细ID数组
 * @returns 结果
 */
export function delPartnerPreparedProduct(id: number | Array<number>) {
  return request({
    url: '/customer/partnerPreparedProduct/' + id,
    method: 'delete'
  });
}

/**
 * 导出伙伴商备货单产品明细
 * @param query 查询参数
 */
export function exportPartnerPreparedProduct(query: PartnerPreparedProductQuery) {
  return request({
    url: '/customer/partnerPreparedProduct/export',
    method: 'post',
    data: query
  });
}

// ==================== 商品远程查询接口 ====================

/**
 * 查询商品列表（远程调用product模块）
 * @param query 查询参数
 * @returns 商品列表
 */
export function listSiteProducts(query: any) {
  return request({
    url: '/customer/productRemote/siteProductList',
    method: 'get',
    params: query
  });
}
