import { ResponseDataEntity, baseFetch, customerFetch } from "./index";

export type PayConfigParams = {
  areaId: number;
  customerId: number;
};

export type PayTypeVo = {
  /** id */
  id: number;

  /** name */
  name: string;
};

export type PayConfig = {
  id: number;
  giveId: number; //赠送服务id
  giveMoney: number; // 赠送金额
  giveName: string; // 赠送服务名称
  rechargeMoney: number; // 充值金额
};

type PayConfigResponse = {
  isFirstRecharge: number;
  listPayList: PayTypeVo[];
  listRechargeConfDetail: PayConfig[];
};

export const fetchPayConfig = (
  params: PayConfigParams
): Promise<ResponseDataEntity<PayConfigResponse>> =>
  baseFetch({
    url: "/dcxy/api/paymentAndActiveConf/getRechargeConf",
    data: params
  });

export type RechargeOrderParams = {
  customerId: number;
  id: number;
  isFirstRecharge: number;
  rechargeType: string;
};

export const rechargeOrder = (
  params: RechargeOrderParams
): Promise<{
  canCall: number;
  code: number;
  msg: string;
  outTradeNo: string;
  payStr: string;
}> =>
  customerFetch({
    url: "/dcxy/app/rechargeOrder/rechargeOrder/smallProPay",
    method: "POST",
    data: { ...params, appId: "wxf2cac8f84183c8fc" }
  });

export const rechargeFromAppOrder = (
  params: RechargeOrderParams & { token: string; clientIp: string }
): Promise<{
  canCall: number;
  code: number;
  msg: string;
  outTradeNo: string;
  payStr: string;
}> =>
  customerFetch({
    url: "/dcxy/app/rechargeOrder/rechargeOrder/smallProPay",
    method: "POST",
    header: { token: params.token },
    data: { ...params, appId: "wxf2cac8f84183c8fc" }
  });

type CreditInfo = {
  amount: number;
  areaId: number;
  operateId: number;
  showType: string;
};

export const fetchCreditDeposites = (params: {
  areaId: number;
}): Promise<ResponseDataEntity<CreditInfo>> =>
  baseFetch({
    url: "/dcxy/api/creditDeposits",
    data: params
  });

export const fetchOperationMode = (params: {
  areaId: number;
}): Promise<ResponseDataEntity<{
  mode: string;
}>> =>
  baseFetch({
    url: "/dcxy/api/operationModeConf",
    data: params
  });
