import request from "@/utils/request";

const dataBoard_BASE_URL = "/api/v1/dataBoard";

const dataBoardApi = {
  /** 获取数据看板总计信息 */
  getRealTimeData() {
    return request<any, PageResult<DataBoardRealTimeVO[]>>({
      url: `${dataBoard_BASE_URL}/realTimeData`,
      method: "get",
    });
  },
  /** 获取数据看板今日实时数据 */
  getTodayRealTimeData() {
    return request<any, PageResult<DataBoardTodayVO[]>>({
      url: `${dataBoard_BASE_URL}/todayData`,
      method: "get",
    });
  },

  /** 所有站点充电度数时段对比 */
  getChargePowerTrend(queryParams?: ChargePowerTrendRequest) {
    return request<any, PageResult<ChargePowerTrendVO[]>>({
      url: `${dataBoard_BASE_URL}/chargePowerTrend`,
      method: "get",
      params: queryParams,
    });
  },

  /** 历史营业数据 */
  getHistoryBusinessData(queryParams?: historyBusinessDataRequest) {
    return request<any, PageResult<HistoryBusinessDataVO[]>>({
      url: `${dataBoard_BASE_URL}/historyBusinessData`,
      method: "get",
      params: queryParams,
    });
  },

  /**获取站点排名表格数据*/
  getStationRankData(queryParams?: StationRankDataRequest) {
    return request<any, PageResult<StationRankListVO[]>>({
      url: `${dataBoard_BASE_URL}/stationRankData`,
      method: "get",
      params: queryParams,
    });
  },

  /**获取用户流失率统计*/
  getUserChurnRate() {
    return request<any, PageResult<UserChurnRateVO[]>>({
      url: `${dataBoard_BASE_URL}/userChurnRate`,
      method: "get",
    });
  },

  /**导出指定用户流失率统计表*/
  exportUserChurnRate(queryParams?: UserChurnRateRequest) {
    return request<any, PageResult<UserChurnRateVO[]>>({
      url: `${dataBoard_BASE_URL}/churnUsers/export`,
      method: "get",
      responseType: "blob",
      params: queryParams,
    });
  },
};

export default dataBoardApi;

/**返回数据*/
export interface DataBoardRealTimeVO {
  /**
   * 总实付金额
   */
  totalActualPayAmount?: number;
  /**
   * 总充电金额
   */
  totalChargeAmount?: number;
  /**
   * 总充电度数
   */
  totalChargePower?: number;
  /**
   * 总分销佣金
   */
  totalCommissionAmount?: number;
  /**
   * 总优惠券减免
   */
  totalCouponAmount?: number;
  /**
   * 总抵扣券金额
   */
  totalDiscountPurchaseAmount?: number;
  /**
   * 总企业专享价减
   */
  totalFirmDiscountAmount?: number;
  /**
   * 总首单金额
   */
  totalFirstOrderAmount?: number;
  /**
   * 总退款金额
   */
  totalRefundAmount?: number;
  /**
   * 总服务费金额
   */
  totalServiceFeeAmount?: number;
  [property: string]: any;
}
export interface DataBoardTodayVO {
  /**
   * 今日实付金额
   */
  todayActualPayAmount?: number;
  /**
   * 今日充电金额
   */
  todayChargeAmount?: number;
  /**
   * 今日充电度数
   */
  todayChargePower?: number;
  /**
   * 今日分销佣金
   */
  todayCommissionAmount?: number;
  /**
   * 今日优惠券减免
   */
  todayCouponAmount?: number;
  /**
   * 今日抵扣券金额
   */
  todayDiscountAmount?: number;
  /**
   * 今日企业专享价减
   */
  todayFirmDiscountAmount?: number;
  /**
   * 今日首单金额
   */
  todayFirstOrderAmount?: number;
  /**
   * 今日退款金额
   */
  todayRefundAmount?: number;
  /**
   * 今日服务费金额
   */
  todayServiceFeeAmount?: number;
  [property: string]: any;
}
export interface ChargePowerTrendVO {
  /**
   * 对比日数据
   */
  compareData?: number[];
  /**
   * 对比日期
   */
  compareDate?: string;
  /**
   * 时段列表（0-23小时）
   */
  hours?: number[];
  /**
   * 今日数据
   */
  todayData?: number[];
  [property: string]: any;
}
export interface HistoryBusinessDataVO {
  /**
   * 数据类型：chargePower-充电度数，chargeAmount-充电金额，validOrders-有效订单，registerUsers-注册用户
   */
  dataType?: string;
  /**
   * 日期/时间标签列表
   */
  labels?: string[];
  /**
   * 时间维度：day-日趋势，month-月趋势
   */
  timeDimension?: string;
  /**
   * 数据值列表
   */
  values?: number[];
  [property: string]: any;
}
export interface StationRankListVO {
  /**
   * 统计时间范围
   */
  dateRange?: string;
  /**
   * 波动充电站列表
   */
  fluctuationStations?: StationRankVO[];
  /**
   * 热门充电站列表
   */
  hotStations?: StationRankVO[];
  [property: string]: any;
}
export interface UserChurnRateVO {
  /**
   * 近1个月流失率（百分比）
   */
  oneMonthChurnRate?: number;
  /**
   * 近七天流失率（百分比）
   */
  sevenDayChurnRate?: number;
  /**
   * 近3个月流失率（百分比）
   */
  threeMonthChurnRate?: number;
}
/**
 * 数据看板-站点排名VO
 */
export interface StationRankVO {
  /**
   * 充电度数
   */
  chargePower?: number;
  /**
   * 波动幅度（百分比）
   */
  fluctuation?: number;
  /**
   * 波动方向：up-上升，down-下降
   */
  fluctuationDirection?: string;
  /**
   * 序号
   */
  rank?: number;
  /**
   * 站点ID
   */
  stationId?: number;
  /**
   * 电站名称
   */
  stationName?: string;
  [property: string]: any;
}

/**请求参数*/
export interface ChargePowerTrendRequest {
  /**
   * 对比日期（格式：yyyy-MM-dd）
   */
  compareDate?: string;
}
export interface historyBusinessDataRequest {
  /**
   * 数据类型：chargePower-充电度数，chargeAmount-充电金额，validOrders-有效订单，registerUsers-注册用户
   */
  dataType?: string;
  /**
   * 时间维度：day-日趋势，month-月趋势
   */
  timeDimension?: string;
  /**
   * 年月（格式：yyyy-MM，月趋势时使用）
   */
  yearMonth?: string;
}
export interface StationRankDataRequest {
  /**
   * 结束日期（自定义时间范围时使用，格式：yyyy-MM-dd）
   */
  endDate?: string;
  /**
   * 开始日期（自定义时间范围时使用，格式：yyyy-MM-dd）
   */
  startDate?: string;
  /**
   * 统计类型：chargePower-按充电度数，validOrders-按有效订单数
   */
  statisticType?: string;
  /**
   * 时间范围：today-今天，week-近7天，month-近30天，custom-自定义
   */
  timeRange?: string;
}
export interface UserChurnRateRequest {
  /**
   * 时段类型：7d-近7天，1m-近1个月，3m-近3个月 时段类型：7d-近7天，1m-近1个月，3m-近3个月
   */
  periodType: string;
}
