import Taro from '@tarojs/taro';

// 经纬度计算距离
export function calculateDistance(
  la1: number,
  lo1: number,
  la2: number,
  lo2: number,
): any {
  var radLat1 = (la1 * Math.PI) / 180.0;
  var radLat2 = (la2 * Math.PI) / 180.0;
  var a = radLat1 - radLat2;
  var b = (lo1 * Math.PI) / 180.0 - (lo2 * Math.PI) / 180.0;
  var s =
    2 *
    Math.asin(
      Math.sqrt(
        Math.pow(Math.sin(a / 2), 2) +
          Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2),
      ),
    );
  s = s * 6378.137;
  s = Math.round(s * 10000) / 10000;
  return s.toFixed(2) + 'km';
}

// 将角度转换为弧度
function toRadians(degrees: number): number {
  return (degrees * Math.PI) / 180;
}

// url转对象
interface UrlParams {
  type?: string;
  gid?: string;
  bid?: string;
}
export function parseQueryString(url: string) {
  const queryString = url.split('?')[1];

  if (!queryString) {
    return {};
  }

  const keyValuePairs = queryString.split('&');

  const result: UrlParams = {};

  keyValuePairs.forEach(keyValue => {
    const [key, value] = keyValue.split('=');
    result[key] = decodeURIComponent(value);
  });

  return result;
}

// 格式化时间
export function formatTime(time: number): string {
  const date = new Date(time);
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hour = date.getHours();
  const minute = date.getMinutes();
  const second = date.getSeconds();

  return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}

// 字符串脱敏
export function maskString(str: string, start: number, end: number): string {
  const maskLength = Math.min(str.length, end) - Math.max(0, start);
  const maskedPart = '*'.repeat(maskLength);
  const beginning = str.slice(0, Math.max(0, start));
  const endPart = str.slice(end);
  return beginning + maskedPart + endPart;
}

// tips
export function showTips(msg: string) {
  Taro.showToast({
    title: msg,
    icon: 'none',
  });
}
