var system = require("../../../../system");
const sha235 = require("sha256");
class TxHandler {
  constructor() {
    this.icUrl = "http://ic.com:8000/web/bizchance";
    this.userService = system.getObject("service.auth.userSve");
    this.cacheManager = system.getObject("db.common.cacheManager");
  }
  /**
   * 需要调用生成者接口，把数据丢入队列
   * 组装生产者需要的数据结构
   * @param {*} datajson 
   */
  //新商机处理
  async addChance(datajson) {
    console.log("put in queue", datajson);
    try {
      var cachestr = sha235(JSON.stringify(datajson));
      var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
      if (cacheInfo && cacheInfo != 'undefined') {
        return {
          "status": 1,    //1代表成功，否则失败
          "msg": "已处理成功!",
          "data": "",
          "requestId": ""
        }
      }
      else {
        //获取分配的业务员信息
        var ConsultTypeName = datajson.actionBody.ConsultTypeName.split("/")[2];
        var salesmanInfo = await this.userService.getBizUserForBizChance(datajson.actionBody.ContactsMoblie, datajson.actionBody.ServicerName, ConsultTypeName, datajson.actionBody.RegionName);
        console.log("salesman   " + salesmanInfo);
        var rc = system.getObject("util.execClient");
        var requrl = this.icUrl + "/bizoptCtl/insertInfo";
        var params = {
          "businessMode": datajson.actionBody.NeedNum,
          "servicerName": datajson.actionBody.ServicerName,
          "serviceCode": datajson.actionBody.RegionId,
          "serviceName": datajson.actionBody.RegionName,
          "contactsName": datajson.actionBody.ContactsName,
          "contactsPhone": datajson.actionBody.ContactsMoblie,
          "businessType": datajson.actionBody.ConsultType,
          "businessName": datajson.actionBody.ConsultTypeName
        }
        if (datajson.actionBody.Notes && datajson.actionBody.Notes != 'undefined') {
          params.memoInfo = datajson.actionBody.Notes;
        }
        if (datajson.actionBody.CompanyName && datajson.actionBody.CompanyName != 'undefined') {
          params.companyName = datajson.actionBody.CompanyName;
        }
        if (salesmanInfo && salesmanInfo != 'undefined') {
          params.salesmanOpcode = salesmanInfo.opath;
          params.salesmanId = salesmanInfo.userId;
          params.clerkName = salesmanInfo.userName;
          params.clerkPhone = salesmanInfo.mobile,
            params.servicerCode = salesmanInfo.compId
        }
        var rtn = await rc.execPost3({ "d": params }, requrl);
        var j = JSON.parse(rtn.stdout);
        console.log(JSON.stringify(j), "RRRRRRRRRRRRRRR");
        if (j.status == 1) {//插入redis缓存
          await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);
        }
        return j;
      }
    }
    catch (error) {
      console.log("TTTTTTTTTTTTTT");
      console.log(error);
      return system.getResultError(error);
    }

  }

  //退回商机处理
  async needClose(datajson) {
    console.log("put in queue" + JSON.stringify(datajson) + "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
    try {
      var cachestr = sha235(JSON.stringify(datajson));
      var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
      if (cacheInfo && cacheInfo != 'undefined') {
        return {
          "status": 1,    //1代表成功，否则失败
          "msg": "已处理成功!",
          "data": "",
          "requestId": ""
        }
      }
      else {
        var rc = system.getObject("util.execClient");
        var requrl = this.icUrl + "/schemeCtl/updateStatusByDemandCode";
        var params = {
          "d": {
            "businessMode": datajson.actionBody.NeedNum,
            "schemeNumber": datajson.actionBody.SolutionNum,
            "currentStatus": "isReject",
            "statusReason": datajson.actionBody.RefusalContent
          }
        }
        var rtn = await rc.execPost3(params, requrl);
        var j = JSON.parse(rtn.stdout);
        if (j.status == 0) {
          await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);
          return {
            "status": 1,    //1代表成功，否则失败
            "msg": "成功",
            "data": "",
            "requestId": ""
          }
        }
        else {
          return j;
        }
      }
    }
    catch (error) {
      return system.getResultError(error);
    }

  }

  //交付单处理
  async orderSubmit(datajson) {
    console.log("put in queue-----------------------------------------------------------------------------------------------------", datajson);
    try {
      var cachestr = sha235(JSON.stringify(datajson));
      var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
      if (cacheInfo && cacheInfo != 'undefined') {
        return {
          "status": 1,    //1代表成功，否则失败
          "msg": "已处理成功!",
          "data": "",
          "requestId": ""
        }
      }
      else {
        var rc = system.getObject("util.execClient");
        var requrl = this.icUrl + "/deliverybillCtl/findInfoByDeliverCode";
        var delInfo = await rc.execPost3({ "d": { "deliverNumber": datajson.actionBody.orderNum } }, requrl);
        console.log("jdelInfo---------------------------------------------" + delInfo.stdout);
        var jdelInfo = JSON.parse(delInfo.stdout);
        if (jdelInfo.status == 0) {
          return {
            "status": 1,    //1代表成功，否则失败
            "msg": "数据已存在",
            "data": "",
            "requestId": ""
          }
        }
        else {
          //获取分配的业务员信息
          var ConsultTypeName = "";
          if (datajson.actionBody.productTypeName && datajson.actionBody.productTypeName != 'undefined'){
            ConsultTypeName = datajson.actionBody.productTypeName.split("/")[2];
          }
          var salesmanInfo = await this.userService.getBizUserForDelivery(datajson.actionBody.orderSnapshot.contactsPhone, datajson.actionBody.servicerName, ConsultTypeName, datajson.actionBody.txPriceCode, datajson.actionBody.regionName);
          requrl = this.icUrl + "/deliverybillCtl/insertInfo";
          var params = {
            "deliverNumber": datajson.actionBody.orderNum,
            "servicerName": datajson.actionBody.servicerName,
            "serviceCode": datajson.actionBody.regionId,
            "serviceName": datajson.actionBody.regionName,
            "businessType": datajson.actionBody.productType,
            "businessName": ConsultTypeName,
            "skuCode": datajson.actionBody.txPriceCode,
            "deliveryInfo": {
              "txOrderNum": datajson.actionBody.txOrderNum,
              "isAdviser": "已分配",//是否分配顾问
              "contactsName": datajson.actionBody.orderSnapshot.contactsName,
              "contactsPhone": datajson.actionBody.orderSnapshot.contactsPhone,
              "payStatus": "待交付"
            },
            "companyInfo": {},
            "registeredInfo": {},
            "positionInfo": {},
            "regInfo": {},
            "express_info": {}
          }
          if (salesmanInfo && salesmanInfo != 'undefined') {
            params.clerkOpcode = salesmanInfo.opath,
              params.clerkId = salesmanInfo.userId,
              params.clerkName = salesmanInfo.userName,
              params.clerkPhone = salesmanInfo.mobile,
              params.costPrice = salesmanInfo.cost,
              params.servicerCode = salesmanInfo.compId
          }
          if (datajson.actionBody.orderSnapshot.needNum && datajson.actionBody.orderSnapshot.needNum != 'undefined') {
            params.businessMode = datajson.actionBody.orderSnapshot.needNum;//商机编号
          }
          if (datajson.actionBody.realTotalCost && datajson.actionBody.realTotalCost != 'undefined') {
            params.sellingPrice = datajson.actionBody.realTotalCost;//价格
          }
          if (datajson.actionBody.orderSnapshot.channelSource && datajson.actionBody.orderSnapshot.channelSource != 'undefined') {
            params.channelSource = datajson.actionBody.orderSnapshot.channelSource;//渠道名称
          }
          if (datajson.actionBody.orderSnapshot.channelNumber && datajson.actionBody.orderSnapshot.channelNumber != 'undefined') {
            params.channelNumber = datajson.actionBody.orderSnapshot.channelNumber;//渠道编码
          }
          if (datajson.actionBody.orderSnapshot.hasOwnProperty("isWhether")) {
            if (datajson.actionBody.orderSnapshot.isWhether) {
              params.deliveryInfo.isWhether = "是";//是否刻章
            }
            else {
              params.deliveryInfo.isWhether = "否";//是否刻章
            }
          }
          if (datajson.actionBody.orderSnapshot.financial && datajson.actionBody.orderSnapshot.financial != 'undefined') {
            params.deliveryInfo.financial = datajson.actionBody.orderSnapshot.financial;//财税服务
          }
          if (datajson.actionBody.orderSnapshot.officialSeal && datajson.actionBody.orderSnapshot.officialSeal != 'undefined') {
            params.deliveryInfo.officialSeal = datajson.actionBody.orderSnapshot.officialSeal;//公章扫描件
          }
          if (datajson.actionBody.orderSnapshot.businessLicense && datajson.actionBody.orderSnapshot.businessLicense != 'undefined') {
            params.deliveryInfo.businessLicense = datajson.actionBody.orderSnapshot.businessLicense;//营业执照扫描件
          }
          if (datajson.actionBody.orderSnapshot.taxpayerType && datajson.actionBody.orderSnapshot.taxpayerType != 'undefined') {
            params.deliveryInfo.taxpayerName = datajson.actionBody.orderSnapshot.taxpayerType;//纳税人类型名称
          }
          if (datajson.actionBody.orderSnapshot.buyDuration && datajson.actionBody.orderSnapshot.buyDuration != 'undefined') {
            params.deliveryInfo.buyDuration = datajson.actionBody.orderSnapshot.buyDuration;//购买时长
          }
          if (datajson.actionBody.orderSnapshot.buyTime && datajson.actionBody.orderSnapshot.buyTime != 'undefined') {
            params.deliveryInfo.buyTime = datajson.actionBody.orderSnapshot.buyTime;//购买时间
          }
          if (datajson.actionBody.orderSnapshot.isRenew && datajson.actionBody.orderSnapshot.isRenew != 'undefined') {
            params.deliveryInfo.isRenew = datajson.actionBody.orderSnapshot.isRenew;//是否自动续费
          }
          if (datajson.actionBody.orderSnapshot.memoInfo && datajson.actionBody.orderSnapshot.memoInfo != 'undefined') {
            params.deliveryInfo.memoInfo = datajson.actionBody.orderSnapshot.memoInfo;
          }
          if (datajson.actionBody.orderSnapshot.whetherType && datajson.actionBody.orderSnapshot.whetherType != 'undefined') {
            params.deliveryInfo.whetherType = datajson.actionBody.orderSnapshot.whetherType;//刻章类型
          }
          if (datajson.actionBody.orderSnapshot.hasOwnProperty("addressType")) {//注册地址类型
            if (datajson.actionBody.orderSnapshot.addressType) {
              params.deliveryInfo.addressType = "practical";
            }
            else {
              params.deliveryInfo.addressType = "virtual";
            }
          }
          if (datajson.actionBody.orderSnapshot.subjectType && datajson.actionBody.orderSnapshot.subjectType != 'undefined') {
            params.deliveryInfo.subjectType = datajson.actionBody.orderSnapshot.subjectType;//代理记账主体类型
          }
          if (datajson.actionBody.orderSnapshot.companyName && datajson.actionBody.orderSnapshot.companyName != 'undefined') {
            params.deliveryInfo.companyName = datajson.actionBody.orderSnapshot.companyName;//公司名称
            params.companyInfo.companyName = datajson.actionBody.orderSnapshot.companyName;
          }
          if (datajson.actionBody.orderSnapshot.companyProperties && datajson.actionBody.orderSnapshot.companyProperties != 'undefined') {
            params.companyInfo.companyPropertiesName = datajson.actionBody.orderSnapshot.companyProperties;//公司性质名称
          }
          if (datajson.actionBody.orderSnapshot.fullAddress && datajson.actionBody.orderSnapshot.fullAddress != 'undefined') {
            params.companyInfo.fullAddress = datajson.actionBody.orderSnapshot.fullAddress;//详细地址
          }
          if (datajson.actionBody.orderSnapshot.engagedIndustry && datajson.actionBody.orderSnapshot.engagedIndustry != 'undefined') {
            params.companyInfo.engagedIndName = datajson.actionBody.orderSnapshot.engagedIndustry;//从事行业名称
          }
          if (datajson.actionBody.orderSnapshot.businessScope && datajson.actionBody.orderSnapshot.businessScope != 'undefined') {
            params.companyInfo.businessScope = datajson.actionBody.orderSnapshot.businessScope;//经营范围
          }
          if (datajson.actionBody.orderSnapshot.operatingPeriod && datajson.actionBody.orderSnapshot.operatingPeriod != 'undefined') {
            params.companyInfo.operatingPeriod = datajson.actionBody.orderSnapshot.operatingPeriod;//经营期限
          }
          if (datajson.actionBody.orderSnapshot.registeredCapital && datajson.actionBody.orderSnapshot.registeredCapital != 'undefined') {
            params.companyInfo.registeredCapital = datajson.actionBody.orderSnapshot.registeredCapital;//注册资本
          }
          if (datajson.actionBody.orderSnapshot.creditCode && datajson.actionBody.orderSnapshot.creditCode != 'undefined') {
            params.companyInfo.creditCode = datajson.actionBody.orderSnapshot.creditCode;//统一社会信用代码
          }
          if (datajson.actionBody.orderSnapshot.establishedTime && datajson.actionBody.orderSnapshot.establishedTime != 'undefined') {
            params.companyInfo.establishedTime = datajson.actionBody.orderSnapshot.establishedTime;//成立时间
          }
          if (datajson.actionBody.orderSnapshot.shareholderName && datajson.actionBody.orderSnapshot.shareholderName != 'undefined') {
            params.companyInfo.shareholderName = datajson.actionBody.orderSnapshot.shareholderName;//法人代表
          }

          var rtn = await rc.execPost3({ "d": params }, requrl);
          var j = JSON.parse(rtn.stdout);
          console.log("rtn---------------------------------" + rtn.stdout);
          if (j.status == 0) {
            await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);
            return {
              "status": 1,    //1代表成功，否则失败
              "msg": "",
              "data": "",
              "requestId": ""
            }
          }
          else {
            return j;
          }
        }
      }
    }
    catch (error) {
      console.log("error-------------------------------------" + error);
      return system.getResultError(error);
    }
  }

  //关闭交付单处理
  async orderClose(datajson) {
    console.log("put in queue", datajson);
    try {
      var cachestr = sha235(JSON.stringify(datajson));
      var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
      if (cacheInfo && cacheInfo != 'undefined') {
        return {
          "status": 1,    //1代表成功，否则失败
          "msg": "已处理成功!",
          "data": "",
          "requestId": ""
        }
      }
      else {
        var rc = system.getObject("util.execClient");
        var requrl = this.icUrl + "/deliverybillCtl/updateStatusByDeliverCode";
        var params = {
          "d": {
            "deliverNumber": datajson.actionBody.orderNum,
            "deliverStatus": "closed",
            "statusReason": datajson.actionBody.refusalContent
          }
        }
        var rtn = await rc.execPost3(params, requrl);
        var j = JSON.parse(rtn.stdout);
        if (j.status == 0) {
          await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);
          return {
            "status": 1,    //1代表成功，否则失败
            "msg": "",
            "data": "",
            "requestId": ""
          }
        }
        else {
          return j;
        }
      }
    }
    catch (error) {
      return system.getResultError(error);
    }

  }
}

module.exports = new TxHandler();

// (async ()=>{
//   var task = new TxHandler();
//   var d = await task.userService.getBizUserForDelivery("16512345678","公司宝","公司注册","sv_business_registration_category_limited1","北京");
//   console.log("ddddddddddddd");
//   console.log(JSON.stringify(d));
//   console.log("dddddddddddddd");
// })()

