import { AxiosRequestData, AxiosRequestFile } from "@/data/axios_request";

import cache from "@/utils/cache";

/**
 * 分页查询服务产品列表
 * @param {string} productName 产品名称
 * @param {string} type 产品类型
 * @param {string} tags 产品标签
 * @param {string} featureId 对应服务功能的id 如短信服务，勾选认证服务，扫码开票服务等
 * @param {string} featureName 对应服务功能的名称 如短信服务，勾选认证服务，扫码开票服务等
 * @param {Boolean} enable 产品是否有效  默认查询有效的产品
 * @param {Number} pageNum 当前页码  默认为1
 * @param {Number} pageSize 每页数量  默认为10
 */
function find({
  productName = "",
  type = "",
  enable = "",
  tags = "",
  featureId = "",
  featureName = "",
  pageNum = 1,
  pageSize = 10,
}) {
  const url = "/marketing/feature/product/findPage";
  let token = cache.getToken();
  let ispId = JSON.parse(cache.getLocal("ISP")).ispId; // 服务商Id
  let args = {
    ispId: ispId,
    pageNum: pageNum,
    pageSize: pageSize,
  };
  if (productName) {
    args.productName = productName;
  }
  if (type) {
    args.type = type;
  }
  if (tags) {
    args.tags = tags;
  }
  if (featureId) {
    args.featureId = featureId;
  }
  if (featureName) {
    args.featureName = featureName;
  }
  if (enable !== "" && enable !== undefined && enable != null) {
    args.enable = enable;
  }
  console.log("分页查询服务产品列表 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 2).then((val) => {
      console.log("分页查询服务产品列表 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

/**
 * 分页查询增值服务列表
 * @param {string} featureName 产品名称
 * @param {Number} pageNum 当前页码  默认为1
 * @param {Number} pageSize 每页数量  默认为10
 */
function findServices({ featureName = "", pageNum = 1, pageSize = 10 }) {
  const url = "/marketing/valuedFeature/findPage";
  let token = cache.getToken();
  let args = {
    pageNum: pageNum,
    pageSize: pageSize,
  };
  if (featureName) {
    args.featureName = featureName;
  }
  console.log("分页查询增值服务列表 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 2).then((val) => {
      console.log("分页查询增值服务列表 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

/**
 * 服务商配置服务产品套餐里面的服务
 * @param {string} productId 产品唯一标识，修改时必输
 * @param {string} productName 产品名称
 * @param {string} type 商品类型 base 基础主体套餐，ext 附件增值套餐
 * @param {number} oriPrice 原价
 * @param {number} favouredPrice 折扣后价格
 * @param {string} productDesc 产品描述
 * @param {string} imgId 图片id
 * @param {string} imgUrl 图片url
 * @param {string} enable 是否有效  true 有效  false 无效
 * @param {string} ispId 服务商id
 * @param {object} featureItems 服务列表
 * @param {string} invoiceProductId 对应开票的商品id
 */
function save({
  productId = "",
  productName,
  type,
  oriPrice,
  favouredPrice,
  productDesc = "",
  imgId = "",
  imgUrl = "",
  enable = "",
  featureItems,
  invoiceProductId,
}) {
  const url = "/marketing/feature/product/save";
  let token = cache.getToken();
  let ispId = JSON.parse(cache.getLocal("ISP")).ispId; // 服务商Id
  let args = {
    productName: productName,
    type,
    oriPrice,
    favouredPrice,
    ispId: ispId,
    featureItems,
    invoiceProductId,
    reqChannel: 4,
  };
  if (productId) {
    args.productId = productId;
  }
  if (productDesc) {
    args.productDesc = productDesc;
  }
  if (imgId) {
    args.imgId = imgId;
  }
  if (imgUrl) {
    args.imgUrl = imgUrl;
  }
  console.log("测试状态嘻嘻的撒的撒");
  console.log(enable);
  if (enable !== "" && enable !== undefined && enable != null) {
    args.enable = enable;
  }
  console.log("服务商配置服务产品套餐里面的服务 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 1).then((val) => {
      console.log("服务商配置服务产品套餐里面的服务 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

/**
 * 处理企业开通服务
 * @param {string} entTaxId 企业税号
 * @param {string} deviceType 设备类型 存在设备级服务必输
 * @param {string} taxDiscId 设备编号 存在设备级服务必输
 * @param {string} productId 产品id
 * @param {boolean} bagentFeatures 是否是代记账
 */
function saveEntProduct({
  entTaxId,
  deviceType = "",
  taxDiscId = "",
  productId,
  bagentFeatures = false,
}) {
  const url = "/marketing/ent/features/save";
  let token = cache.getToken();
  let mobile = JSON.parse(cache.getLocal("user")).account;
  let args = {
    entTaxId: entTaxId,
    productId: productId,
    mobile: mobile,
    reqChannel: 4,
    bagentFeatures: bagentFeatures,
  };
  if (deviceType) {
    args.deviceType = deviceType;
  }
  if (taxDiscId) {
    args.taxDiscId = taxDiscId;
  }
  console.log("处理企业开通服务 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 1).then((val) => {
      console.log("处理企业开通服务 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

/**
 * 查询设备购买的基础服务
 * @param {string} entTaxId 企业税号
 * @param {string} deviceType 设备类型 存在设备级服务必输
 * @param {string} taxDiscId 设备编号 存在设备级服务必输
 * @param {string} productId 产品id
 */
function findEntBaseServicePackge({ entTaxId, deviceType, taxDiscId }) {
  const url = "/marketing/ent/purchaseProd/findBase";
  let token = cache.getToken();
  let args = {
    entTaxId: entTaxId,
    deviceType: deviceType,
    taxDiscId: taxDiscId,
  };
  console.log("查询设备购买的基础服务 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 2).then((val) => {
      console.log("查询设备购买的基础服务 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

/**
 * 分页查询企业开通服务列表
 * @param {string} entName 企业名称
 * @param {string} entTaxId 企业税号
 * @param {string} deviceType 设备类型 存在设备级服务必输
 * @param {string} taxDiscId 设备编号 存在设备级服务必输
 * @param {string} featureId 服务id
 * @param {string} featureName 服务名称
 * @param {Number} pageNum 当前页码  默认为1
 * @param {Number} pageSize 每页数量  默认为10
 */
function findEntServices({
  entName = "",
  entTaxId,
  deviceType = "",
  taxDiscId = "",
  featureId = "",
  featureName = "",
  pageNum = 1,
  pageSize = 10,
}) {
  const url = "/marketing/ent/features/findPage";
  let token = cache.getToken();
  let args = {
    entTaxId: entTaxId,
    deviceType: deviceType,
    taxDiscId: taxDiscId,
    pageNum: pageNum,
    pageSize: pageSize,
  };
  if (entName) {
    args.entName = entName;
  }
  if (deviceType) {
    args.deviceType = deviceType;
  }
  if (taxDiscId) {
    args.taxDiscId = taxDiscId;
  }
  if (featureId) {
    args.featureId = featureId;
  }
  if (featureName) {
    args.featureName = featureName;
  }
  console.log("分页查询企业开通服务列表 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 2).then((val) => {
      console.log("分页查询企业开通服务列表 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

/**
 * 获取签约企业列表
 * @param {string} entTaxId 企业税号
 * @param {string} deviceType 设备类型 存在设备级服务必输
 * @param {string} taxDiscId 设备编号 存在设备级服务必输
 * @param {string} productId 产品id
 */
function findISPSignPay({ entName, entTaxId, pageNum = 1, pageSize = 10 }) {
  const url = "/marketing/isp/signPay/info/findPage";
  let ispId = JSON.parse(cache.getLocal("ISP")).ispId; // 服务商Id
  let token = cache.getToken();
  let args = {
    ispId,
    pageNum,
    pageSize,
  };
  if (entName) {
    args.entName = entName;
  }
  if (entTaxId) {
    args.entTaxId = entTaxId;
  }

  console.log("获取签约企业列表 参数：");
  console.log(args);
  return new Promise(function(resolve, reject) {
    AxiosRequestData(url, token, args, false, 2).then((val) => {
      console.log("获取签约企业列表 结果：");
      console.log(val);
      if (val.code === 0) {
        resolve(val);
      } else {
        reject(val.msg);
      }
    });
  });
}

const CommodityService = {
  find,
  findServices,
  save,
  saveEntProduct,
  findEntBaseServicePackge,
  findEntServices,
  findISPSignPay,
};

export default CommodityService;
