import { requestClient } from '#/api/request';

export namespace CrmReportApi {
  /** 客户分析统计 */
  export interface CustomerAnalyze {
    totalCount: number;
    todayCount: number;
    dealCount: number;
    dealRate: number;
    lockCount: number;
    poolCount: number;
  }

  /** 商机分析统计 */
  export interface BusinessAnalyze {
    totalCount: number;
    todayCount: number;
    totalPrice: number;
    successCount: number;
    successPrice: number;
    successRate: number;
    processingCount: number;
    failCount: number;
  }

  /** 合同分析统计 */
  export interface ContractAnalyze {
    totalCount: number;
    todayCount: number;
    totalPrice: number;
    approveCount: number;
    approvePrice: number;
    processCount: number;
    receivablePrice: number;
    receivableRate: number;
  }

  /** 销售漏斗阶段 */
  export interface SalesFunnelStage {
    name: string;
    count: number | null;
    price: number;
    conversionRate: number;
  }

  /** 销售漏斗统计 */
  export interface SalesFunnel {
    stages: SalesFunnelStage[];
  }

  /** 销售业绩项 */
  export interface SalesPerformanceItem {
    userId: number;
    userName: string;
    deptName: string;
    contractCount: number;
    contractPrice: number;
    receivablePrice: number;
    businessCount: number;
    businessPrice: number;
  }

  /** 销售业绩统计 */
  export interface SalesPerformance {
    items: SalesPerformanceItem[];
  }
}

/** 获取客户分析统计 */
export function getCustomerAnalyze(startTime?: string, endTime?: string) {
  return requestClient.get<CrmReportApi.CustomerAnalyze>(
    '/crm/report/get-customer-analyze',
    { params: { startTime, endTime } },
  );
}

/** 获取商机分析统计 */
export function getBusinessAnalyze(startTime?: string, endTime?: string) {
  return requestClient.get<CrmReportApi.BusinessAnalyze>(
    '/crm/report/get-business-analyze',
    { params: { startTime, endTime } },
  );
}

/** 获取合同分析统计 */
export function getContractAnalyze(startTime?: string, endTime?: string) {
  return requestClient.get<CrmReportApi.ContractAnalyze>(
    '/crm/report/get-contract-analyze',
    { params: { startTime, endTime } },
  );
}

/** 获取销售漏斗统计 */
export function getSalesFunnel() {
  return requestClient.get<CrmReportApi.SalesFunnel>(
    '/crm/report/get-sales-funnel',
  );
}

/** 获取销售业绩统计 */
export function getSalesPerformance(startTime?: string, endTime?: string) {
  return requestClient.get<CrmReportApi.SalesPerformance>(
    '/crm/report/get-sales-performance',
    { params: { startTime, endTime } },
  );
}