let expressApi=require("./index");
const system = require("../../system");
let sfApiBean = require("./sf_lib");
let opts = require("./sf_lib/config");
/**
 * 查询快递信息(自己实现)
 */
module.exports.routerQuery=(req,type,body)=>{
  try {
    if(!expressApi.trim(req.mailNo)){
      expressApi.getResult(-1,`运单号不能为空`);
    }
    //判断那家快递公司
    if(!expressApi.trim(req.code)){
      expressApi.getResult(-1,`运单号不能为空`);
    }
  
    //拿到配置信息
    let exp=expressApi.Config[`${req.code}`];
    let expressInfo= null;
    if(exp.name=="sf"){//顺风
      expressInfo = expressApi.Common.SFRouterQuery(req,exp);
    }else if (exp.name=="yuantong"){
      expressInfo = expressApi.Common.YTRouterQuery(req,exp);
    }else{
      return system.getResult(-1,`没有相关快递服务`);
    }
    return system.getResult(expressInfo);
  } catch (error) {
    return system.getResult(-1,`系统错误 错误信息 ${error}`);
  }
  
}

/**
 *  顺丰查询接口
 *  @param mail_no  运单号 
 *  @param tracking_type 查询号类别
 *  @param tracking_number 查询号
 *  @param method_type 方法类别
 * 
 */
module.exports.sfRouterQuery=async (req,type,body)=>{
  try {
    //拿到配置信息
    let expressInfo= null;
    let params = {};
    /**
     * 查询号:
      如果tracking_type=1,则此值为顺丰运单号
      如果tracking_type=2,则此值为客户订单号
      如果tracking_type=3,则此值为逆向单原始订单号
      如果有多个单号,以逗号分隔,如"123,124,125"。
      */
    params.tracking_number=req.tracking_number || 1;
    /**
     * 
     * 查询号类别:
      1:根据顺丰运单号查询,order节点中tracking_number将被当作顺丰运单号处理
      2:根据客户订单号查询,order节点中tracking_number将被当作客户订单号处理
      3:逆向单,根据客户原始订单号查询,order节点中tracking_number将被当作逆向单原始订单号处理
    */
   params.tracking_type=req.tracking_type || 1;
    /**
     * 路由查询类别:
      1:标准路由查询
      */
    params.method_type=req.method_type || 1;
    let sfApi = new sfApiBean(opts);
    expressInfo = await sfApi.RouteService(params);
    return system.getResult(expressInfo);
  } catch (error) {
    return system.getResult(-1,`系统错误 错误信息 ${error}`);
  }
}

/**
 *  顺丰下单接口
 *  @param mail_no  运单号 
 *  @param tracking_type 查询号类别
 *  @param tracking_number 查询号
 *  @param method_type 方法类别
 * 
 */
module.exports.sfOrderService=async (req,type,body)=>{
  try {
    //拿到配置信息
    let expressInfo= null;
    let params = {};
    /**
     * 查询号:
      如果tracking_type=1,则此值为顺丰运单号
      如果tracking_type=2,则此值为客户订单号
      如果tracking_type=3,则此值为逆向单原始订单号
      如果有多个单号,以逗号分隔,如"123,124,125"。
      */
    params.tracking_number=req.tracking_number || 1;
    /**
     * 
     * 查询号类别:
      1:根据顺丰运单号查询,order节点中tracking_number将被当作顺丰运单号处理
      2:根据客户订单号查询,order节点中tracking_number将被当作客户订单号处理
      3:逆向单,根据客户原始订单号查询,order节点中tracking_number将被当作逆向单原始订单号处理
    */
   params.tracking_type=req.tracking_type || 1;
    /**
     * 路由查询类别:
      1:标准路由查询
      */
    params.method_type=req.method_type || 1;
    let sfApi = new sfApiBean(opts);
    expressInfo = await sfApi.RouteService(params);
    return system.getResult(expressInfo);
  } catch (error) {
    return system.getResult(-1,`系统错误 错误信息 ${error}`);
  }
}

