import type { PageParam, PageResult } from '@vben/request';

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

export namespace AftersalesVisitApi {
  /** 回访记录 */
  export interface Visit {
    id?: number;
    ticketId?: number;
    visitType?: number;
    visitorUserId?: number;
    visitorUserName?: string;
    content?: string;
    satisfied?: boolean;
    recurred?: boolean;
    visitTime?: string;
    remark?: string;
    creator?: string;
    createTime?: string;
    /** 附件列表（详情返回） */
    attachmentList?: { id: number; name?: string; url?: string }[];
  }

  /** 登记回访入参 */
  export interface CreateVisit {
    ticketId: number;
    visitType: number;
    content?: string;
    satisfied: boolean;
    recurred: boolean;
    remark?: string;
    /** 附件 blobId 列表（保存时传入） */
    blobIds?: number[];
  }
}

/** 登记售后回访 */
export function createVisit(data: AftersalesVisitApi.CreateVisit) {
  return requestClient.post<number>('/aftersales/visit/create', data);
}

/** 获取回访详情 */
export function getVisit(id: number) {
  return requestClient.get<AftersalesVisitApi.Visit>(
    `/aftersales/visit/get?id=${id}`,
  );
}

/** 获取某工单的回访记录列表 */
export function getVisitListByTicketId(ticketId: number) {
  return requestClient.get<AftersalesVisitApi.Visit[]>(
    `/aftersales/visit/list?ticketId=${ticketId}`,
  );
}

/** 分页查询回访记录 */
export function getVisitPage(params: PageParam) {
  return requestClient.get<PageResult<AftersalesVisitApi.Visit>>(
    '/aftersales/visit/page',
    { params },
  );
}
