// /utils/wxsUtil.wxs

// 分隔字符串
var split = function (input, sep) {
  sep === undefined && (sep = ',')
  return input.toString().split(sep)
}

/**
 *  计算汇总价格
 * @param price 项目价格
 * @param selectCardId  选中需要购买的会员卡ID
 * @param memberCard  会员卡对象
 * @param currentDiscount 勾选了会员折扣（字段定义比较奇怪，猜测会员折扣是直接抵扣）0 选择  1 选择
 * @param currentChangeCoupon 优惠券对象
 * @param productData 项目耗材
 * @returns
 */
var calculateOrderPayMoney = function (
  price,
  selectCardId,
  memberCard,
  currentDiscount,
  currentChangeCoupon,
  productData
) {
  var payMoney = price ? parseFloat(price) : 0
  // 勾选了购买会员卡
  if (selectCardId) {
    var memberCardSaveMoney = memberCard.save_money
      ? parseFloat(memberCard.save_money)
      : 0
    var memberCardPrice = memberCard.price ? parseFloat(memberCard.price) : 0
    payMoney -= memberCardSaveMoney
    payMoney += memberCardPrice
  }

  // 勾选了会员折扣（字段定义比较奇怪，猜测会员折扣是直接抵扣）
  if (currentDiscount == 0) {
    payMoney = 0
  }
  // 选择了优惠券
  if (currentChangeCoupon) {
    // 类型，1抵扣券，2满减券，3全额券
    var couponType = currentChangeCoupon.type
    var couponMoney = payMoney
    if (couponType == 1) {
      couponMoney = currentChangeCoupon.price
        ? parseFloat(currentChangeCoupon.price)
        : 0
    } else if (couponType == 2) {
      couponMoney = currentChangeCoupon.full_price
        ? parseFloat(currentChangeCoupon.full_price)
        : 0
    }
    payMoney -= couponMoney
  }
  // 存在其他项的价格（升级产品不支持优惠券和会员）
  if (productData) {
    payMoney += parseFloat(productData.price ? productData.price : 0.0)
  }
  payMoney = payMoney >= 0 ? payMoney.toFixed(2) : '0.00'
  console.log('calculateOrderPayMoney===', payMoney)
  return payMoney
}

/**
 * 计算合计金额
 * @param args
 * @returns
 */
var calculateMoney = function (args) {
  var sum = 0.0
  var argsList = args.toString().split(',')
  for (var i = 0; i < argsList.length; i++) {
    if (argsList[i]) {
      sum += parseFloat(argsList[i])
    }
  }
  sum = sum >= 0 ? sum.toFixed(2) : '0.00'
  console.log('calculateMoney===', sum)
  return sum
}

/**
   * 两点之间距离计算
   * @param {*} lat1 
   * @param {*} lng1 
   * @param {*} lat2 
   * @param {*} lng2 
   */
  var getDistance = function (lat1, lng1, lat2, lng2) {
    lat1 = lat1 || 0;
    lng1 = lng1 || 0;
    lat2 = lat2 || 0;
    lng2 = lng2 || 0;

    var rad1 = lat1 * Math.PI / 180.0;
    var rad2 = lat2 * Math.PI / 180.0;
    var a = rad1 - rad2;
    var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
    var r = 6378137;
    var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
    // console.log(distance)
    return (distance/1000).toFixed(1);
  }

  
/* 封装一个格式转换的方法(购物车价格小数点前后大小) */
 var formatValue = function (value, type) {
  if (typeof value === 'string') {
    if (value.match('¥')) {
      /* 使用getRegExp函数处理正则表达式 start */
      var reg = getRegExp('¥', 'g')
      value = value.replace(reg, '')
      /* 使用getRegExp函数处理正则表达式 end */
    }
  }
  var result = value
  switch (type) {
    case 'split': /* 分割 */
      result = ('' + result).split('.')
      break
    case 'price': /* 普通价格 */
      /* ...... 完整代码见文章末尾的github分支 */
      break
    case 'sold': /* 已售*/
      /* ...... 完整代码见文章末尾的github分支 */
      break
    case 'commission': /* 佣金 */
      /* ...... 完整代码见文章末尾的github分支 */
      break
    case 'coupon': /* 优惠券 */
      /* ...... 完整代码见文章末尾的github分支 */
      break
    }
  return result
}


module.exports = {
  split: split,
  calculateOrderPayMoney: calculateOrderPayMoney,
  calculateMoney: calculateMoney,
  getDistance:getDistance,
  formatValue:formatValue
}
