const system = require("../../../system");
const Dao = require("../../dao.base");

class MediaaggregationDao extends Dao {
  constructor() {
    super(Dao.getModelName(MediaaggregationDao));
    this.redisClient = system.getObject("util.redisClient");
  }

  /**
   * 服务列表
   */
  async productList(req) {
    var params = {
      product_type_code: req.actionBody.product_type_code
    };
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount from mc_product  where deleted_at is null and product_type_code = :product_type_code and is_enabled = 1 order by sequence desc";
    var sql = "select * from mc_product  where deleted_at is null and product_type_code = :product_type_code and is_enabled = 1 order by sequence desc";
    var optionType = "get";
    var functionName = "productList";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName, params);
    return returnRes;
  }

  /**
   * 轮播图
   */
  async rotationChartList(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount from mc_rotation_chart where deleted_at is null and pic_type = 2  and is_enabled = 1  order by sequence desc";
    var sql = "select * from mc_rotation_chart where deleted_at is null and pic_type = 2 and is_enabled = 1  order by sequence desc";
    var optionType = "get";
    var functionName = "rotationChartList";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }

  /**
   * 列表头图
   */
  async tablePicList(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };

    var countSql = "select count(1) as dataCount from mc_rotation_chart where deleted_at is null and pic_type = 1  and is_enabled = 1  order by sequence desc";
    var sql = "select * from mc_rotation_chart where deleted_at is null and pic_type = 1 and is_enabled = 1  order by sequence desc";
    var optionType = "get";
    var functionName = "tablePicList";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }

  /**
   * 留资表单产品
   */
  async needProductList(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount from mc_second_level_need_config where deleted_at is null  ";
    var sql = "select * from mc_second_level_need_config where deleted_at is null  ";
    var optionType = "get";
    var functionName = "needProductList";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }

  /**
   * 热门推荐
   */
  async popularRecommendationList(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };

    var countSql = "select count(1) as dataCount from mc_popular_recommendation where deleted_at is null and  is_enabled = 1  ";
    var sql = "select * from mc_popular_recommendation where deleted_at is null  and  is_enabled = 1 ";
    var optionType = "get";
    var functionName = "popularRecommendationList";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }

  /**
   * 产品分类一类
   */
  async productTypeFirst(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount from mc_product_type  where deleted_at is null and p_id = 0  order by sequence desc";
    var sql = "select * from mc_product_type  where deleted_at is null and p_id = 0  order by sequence desc";
    var optionType = "get";
    var functionName = "productTypeFirst";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }

  /**
   * 产品分类二类
   */
  async productTypeSecend(req) {
    var params = {
      p_code: req.actionBody.p_code
    };
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount from mc_product_type where  deleted_at is null and  p_code = :p_code  order by sequence desc";
    var sql = "select * from  mc_product_type where  deleted_at is null and p_code = :p_code  order by sequence desc";
    var optionType = "get";
    var functionName = "productTypeSecend";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName, params);
    return returnRes;
  }
  /**
   * 获取产品详情
   */
  async productDetail(req) {
    var params = {
      code: req.actionBody.code
    };
    var countSql = "select count(1) as dataCount from mc_product where deleted_at is null and is_enabled = 1 and  code = :code  ";
    var sql = "select * from mc_product where deleted_at is null and is_enabled = 1 and  code = :code  ";
    var optionType = "get";
    var functionName = "productDetail";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName, params);
    return returnRes;
  }

  /**
  * 吸底菜单
  */
  async bottomMenuConfig(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount  from mc_bottom_menu_config  where deleted_at is null ";
    var sql = "select * from mc_bottom_menu_config  where deleted_at is null ";
    var optionType = "get";
    var functionName = "bottomMenuConfig";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }

  /**
   * 周期产品
   */
  async cycleProduct(req) {
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var countSql = "select count(1) as dataCount  from mc_cycle_product  where deleted_at is null  order by sequence desc";
    var sql = "select * from mc_cycle_product  where deleted_at is null  order by sequence desc";
    var optionType = "get";
    var functionName = "cycleProduct";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName);
    return returnRes;
  }


  /**
     * 二级留资页热门推荐
     */
  async secondLevelNeedConfig(req) {
    var params = {
      code: req.actionBody.code
    };
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };

    var countSql = "select count(1) as dataCount  from mc_second_level_need_config  where deleted_at is null and code = :code ";
    var sql = "select * from mc_second_level_need_config  where deleted_at is null and code = :code";
    var optionType = "get";
    var functionName = "secondLevelNeedConfig"
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName, params);
    return returnRes;
  }


  /**
   * 二类产品资质选项(选取数据线索的数据)、留资表单产品列表(我需要)
   */
  async clueMaintenance(req) {
    var params = {
      code: req.actionBody.code,
    };
    var apiType = req.actionBody.apiType;
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };

    if (apiType && apiType == '1') {//二类产品资质选项(选取数据线索的数据)
      var countSql = "select count(1) as dataCount  from mc_clue_maintenance  where deleted_at is null";
      var sql = "select clue_info from mc_clue_maintenance  where deleted_at is null";
      var functionName = "clueMaintenance";
    }
    if (apiType && apiType == '2') {//留资表单产品列表(我需要)
      var countSql = "select count(1) as dataCount  from mc_clue_maintenance  where deleted_at is null and code = :code ";
      var sql = "select clue_info from mc_clue_maintenance  where deleted_at is null and code = :code ";
      var functionName = "clueMaintenanceCode";
    }
    var optionType = "get";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName, params);
    return returnRes;
  }


  /**
   *周期产品二类 
   */
  async cycleProductSecend(req) {
    var params = {
      cycle_type: req.actionBody.cycle_type
    };
    var returnRes = {
      total: 0,//总记录条数
      rows: []
    };
    var functionName;
    var sql = "select * from mc_cycle_product where deleted_at is null and cycle_type = :cycle_type";
    var countSql = "select count(1) as dataCount from mc_cycle_product where deleted_at is null and cycle_type = :cycle_type ";

    switch (req.actionBody.cycle_type) {
      case "1":
        functionName = "cycleProductSecend1";
        break;
      case "2":
        functionName = "cycleProductSecend2";
        break;
      case "3":
        functionName = "cycleProductSecend3";
        break;
    }

    var optionType = "get";
    var returnRes = this.redisInfo(sql, countSql, optionType, functionName, params);


    return returnRes;
  }


  async redisInfo(sql, countSql, optionType, functionName, params = "") {
    let rtnObj = {
      total: 0,//总记录条数
      rows: []
    };
    var list = await this.customQuery(sql);
    var dataCount = await this.customQuery(countSql);
    rtnObj.rows = list;
    rtnObj.total = dataCount && dataCount.length > 0 ? dataCount[0].dataCount : 0;
    return rtnObj;
    // var template = "mediaaggregation";
    // let shaStr;         // 将linkObj转为字符串并计算出sha256的值
    // let rtn;            // 根据shaStr从redis库中查询返回的值。
    // let rtnObj = {
    //   total: 0,//总记录条数
    //   rows: []
    // };
    // // shaStr = await sha256(JSON.stringify(params));
    // // shaStr = template + "_" + shaStr + "_" + functionName;
    // shaStr = template + "_" + functionName;
    // // rtn = await this.redisClient.get(shaStr);
    // if (params) {
    //   var list = await this.customQuery(sql, params);
    //   var dataCount = await this.customQuery(countSql, params);
    // } else {
    //   var list = await this.customQuery(sql);
    //   var dataCount = await this.customQuery(countSql);
    // }
    // if (optionType == "get") {
    //   if (rtn) {
    //     rtnObj.rows = JSON.parse(rtn);
    //     rtnObj.total = dataCount && dataCount.length > 0 ? dataCount[0].dataCount : 0;
    //     return rtnObj;
    //   } else {
    //     rtnObj.rows = list;
    //     rtnObj.total = dataCount && dataCount.length > 0 ? dataCount[0].dataCount : 0;
    //     await this.redisClient.set(shaStr, JSON.stringify(rtnObj));
    //     rtn = await this.redisClient.get(shaStr);
    //     if (rtn) {
    //       return rtnObj;
    //     }
    //   }
    // }
    // if (optionType == "del") {
    //   await this.redisClient.delete(shaStr);
    // }
  }
}
module.exports = MediaaggregationDao;