import type { PageParam, PageResult } from '..\..\..\packages\effects\request\src';

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

export namespace PayNotifyApi {
  /** 支付通知日志 */
  export interface NotifyLog {
    id?: number;
    status?: number;
    notifyTimes?: number;
    lastExecuteTime?: Date;
    createTime?: Date;
    response?: string;
  }

  /** 支付通知任务 */
  export interface NotifyTask {
    id: number;
    appId: number;
    appName: string;
    type: number;
    dataId: number;
    status: number;
    merchantOrderId: string;
    merchantRefundId?: string;
    merchantTransferId?: string;
    lastExecuteTime: Date;
    nextNotifyTime: Date;
    notifyTimes: number;
    maxNotifyTimes: number;
    createTime: Date;
    updateTime: Date;
    logs?: NotifyLog[];
  }
}

/** 获得支付通知明细 */
export function getNotifyTaskDetail(id: number) {
  return requestClient.get<PayNotifyApi.NotifyTask>(`/pay/notify/get-detail?id=${id}`);
}

/** 获得支付通知分页 */
export function getNotifyTaskPage(params: PageParam) {
  return requestClient.get<PageResult<PayNotifyApi.NotifyTask>>(
    '/pay/notify/page',
    {
      params,
    },
  );
}
