const system = require("../../../system");
const ServiceBase = require("../../sve.base")
const settings = require("../../../../config/settings")
const moment = require("moment");

class IborderbaseService extends ServiceBase {
  constructor() {
    super("order", ServiceBase.getDaoName(IborderbaseService));
    this.iborderSve = system.getObject("service.order.iborderSve");
    this.iborderdkSve = system.getObject("service.order.iborderdkSve");
    this.iborderdzSve = system.getObject("service.order.iborderdzSve");

    this.services = {
      "1000": this.iborderSve,   // 注册订单
      "1010": this.iborderdzSve, // 代开订单
      "1030": this.iborderdkSve, // 代账订单
      "1040": this.iborderSve,   // 增值服务
    }
  }


  getService(productType) {
    return this.services[productType];
  }

  /**
   * 创建基类订单
   * @param {*} params
   */
  async apiCreateOrder(params) {
    this.trimObject(params);
    // if(!params.productType){
    //   return system.getResult(null, `参数错误 产品类型错误`);
    // }
    // if(!params.productItems instanceof Array){
    //   return system.getResult(null, `参数错误 产品项目错误`);
    // }
    // if(!params.channelNo){
    //   return system.getResult(null, `参数错误 渠道名称错误`);
    // }
    // if(!params.thirdNo){
    //   return system.getResult(null, `参数错误 订单错误`);
    // }
    // if(!Number(params.price)<0){
    //   return system.getResult(null, `参数错误 订单价格错误`);
    // }
    // if(!params.payType){
    //   return system.getResult(null, `参数错误 支付方式错误`);
    // }
    // if(!params.legalName){
    //   return system.getResult(null, `参数错误 联系人不能为空`);
    // }
    // if(!params.legalMobile){
    //   return system.getResult(null, `参数错误 联系电话不能为空`);
    // }
    // if(!params.invoiceType){
    //   return system.getResult(null, `参数错误 发票类型错误`);
    // }

    let productType = this.trim(params.productTypes);
    let childSve = this.getService(productType);
    if(!childSve) {
      return system.getResult(null, `暂不支持此种产品类型：${productType}`);
    }

    try {
      params.channelNo = this.trim(params.channelNo);
      params.thirdNo = this.trim(params.thirdNo);
      params.notes = this.trim(params.notes);
      params.legalName = this.trim(params.legalName);
      params.legalMobile = this.trim(params.legalMobile);
      params.legalEmail = this.trim(params.legalEmail);
      params.payType = Number(params.payType || 1);
      params.productType = Number(params.productType || 1);
      params.price = Number(params.price || 0);
      let self = this;
      //1 保存基类的信息
      await this.db.transaction(async t => {
        //创建基类表
        let _baseOrder = await self.create(params, t);
        //将id 赋值
        params.id = _baseOrder.id;
        await childSve.createOrder(params, t);
      });
      return system.getResultSuccess();
    } catch (error) {
      return system.getResult(null, `系统错误 错误信息 ${error}`);
    }
  }

  /**
 * 完善信息
 * @param {*} params
  *   legalName 
  *   legalMobile 
  *   names 
  *   creditCode 
  *   isBank 
  *   businessScope
  */
  async completedOrder(params) {
    //1 检查个体户是否存在 （根据统一社会信用代码查个体工商户是否存在）
    this.trimObject(params);
    if(!params.legalName){return system.getResult(null,`参数错误 法人姓名不能为空`);}
    if(!params.legalMobile){return system.getResult(null,`参数错误 法人电话不能为空`);}
    if(!params.creditCode){return system.getResult(null,`参数错误 法人统一社会信用代码不能为空`);}
    if(!params.names){return system.getResult(null,`参数错误 个体户名称不能为空`);}
    if(!params.businessScope){return system.getResult(null,`参数错误 经营范围不能为空`);}
    
    //2 如果不存在添加保存个体户  
    //3 完善信息
  }

  async apiAdd(params) {
    try {
      let sve = this.getService(params.productType);
      if (!sve) {
        return system.getResult(null, `产品类型错误${params.productType}`);
      }
      return sve.addOrder(params);
    } catch (error) {
      console.log(error);
      return system.getResult(null, "接口异常");
    }
  }

  async apiSaveInfo() {
    try {
      let sve = this.getService(params.productType);
      if (!sve) {
        return system.getResult(null, `产品类型错误${params.productType}`);
      }
      return sve.saveInfo(params);
    } catch (error) {
      console.log(error);
      return system.getResult(null, "接口异常");
    }
  }
}

module.exports = IborderbaseService;
// var task=new UserService();
// task.getUserStatisticGroupByApp().then(function(result){
//   console.log((result));
// }).catch(function(e){
//   console.log(e);
// });