import {
  AUTH_STATUS_TYPE,
  PAY_TYPE,
  PERSONAL_CER_TYPE,
  COMPANY_CER_TYPE,
  V_CODE_SEND_TYPE,
  INVOICE_TYPE,
  INVOICE_STATUS_TYPE,
} from "../constants";
export interface ListResult<T extends Record<string, any>> {
  total: number;
  page: number;
  list: T[];
}

export interface ResultBody<T> {
  code: number;
  msg: string;
  data: T;
}

export type ResultPromise<T> = Promise<ResultBody<T>>;
export type ResultListPromise<T> = Promise<ResultBody<ListResult<T>>>;

/** 登陆 Body */
export interface LoginRequestBody {
  /** 用户名 */
  user_name: string;
  /** 密码 */
  password: string;
}

/** 登录成功结果 */
export interface UserLoginResult {
  console_url: string;
  token: string;
  plus_token: string;
}

export interface UserInfo {
  /** 电子邮箱 */
  email: string;
  /** 手机号 */
  phone: string;
  /** 上次登录时间 */
  last_login_time: string;
  /** 企业名称 */
  company_name: string;
  /** 注册时间 */
  register_time: string;
  /** 个人认证状态 0.未认证 1.已认证 */
  user_authentication: AUTH_STATUS_TYPE;
  /** 企业认证状态 0.未认证 1.已认证 */
  company_authentication: AUTH_STATUS_TYPE;
  /** 联系地址 */
  contact_address: string;
}

/** 账单 */
export interface CostItem {
  id: string;
  date: string;
  transaction_type: string;
  transaction_source: string;
  transaction_money: number;
  account_balance: number;
}

/** 账户余额信息 */
export interface AccountMoneyInfo {
  /** 账户余额 */
  balance: number;
  /** 本月消费合计 */
  monthly_bill_money: number;
}

/** 创建订单 */
export interface CreateOrderRequestBody {
  /** 充值金额 */
  money: number;
  /** 支付方式 1.支付宝 2.微信 */
  pay_type: PAY_TYPE;
}

export interface CreateOrderInfo {
  /** 支付地址 */
  url: string;
  /** 订单 ID */
  order_num: string;
}

/** 个人用户认证请求参数 */
export class PersonalAuthRequestBody {
  /** 真实姓名 */
  real_name: string;
  /** 证件类型 */
  certificates_type: PERSONAL_CER_TYPE;
  /** 证件号 */
  id_cart: string;
  /** 验证码 */
  code: string;
}

/** 企业用户认证请求参数 */
export class CompanyAuthRequestBody {
  /** 企业名称 */
  company_name: string;
  /** 企业证件类型 */
  certificates_type: COMPANY_CER_TYPE;
  /** 法定代表人 */
  legal_person: string;
  /** 上传企业证件附件 */
  certificates_url: string;
  /** 法定代表人身份证号 */
  legal_id_card: string;
  /** 法定代表人手机号码 */
  legal_phone: number;
  /** 验证码 */
  code: number;
}

/** 发送验证码 */
export class SendCodeRequestBody {
  /** 手机号 */
  phone: string;
  /** 发送类型 */
  send_type: V_CODE_SEND_TYPE;
}

/** 合同申请 */
export class ApplyContractRequestBody {
  /** 手机号 */
  phone: number;
  /** 备注 */
  desc: string;
}

/** 申请发票 */
export type ApplyInvoiceRequestBody = Omit<InvoiceItem, "id" | "status">;

/** 发票 */
export interface InvoiceItem {
  /** 发票 ID */
  id: string;
  /** 状态 */
  status: INVOICE_STATUS_TYPE;
  /** 发票抬头 */
  title: string;
  /** 发票类型 1.增值税普通发票 */
  type: INVOICE_TYPE;
  /** 收件人姓名 */
  address_name: string;
  /** 邮寄地址 */
  address: string;
  /** 联系方式 */
  phone: string;
  /** 发票备注 */
  desc: string;
}

/** 忘记密码 */
export interface ForgotPasswordRequestBody {
  /** 验证码 */
  code: number;
  password: string;
  phone: string;
}

/** 获取订单信息 */
export interface GetOrderInfoRequestBody {
  /** 订单号 */
  order_num: string;
}
export interface GetOrderInfoResult {
  /** 支付是否成功 */
  pay_status: boolean;
}
