/**
 * @description 基础数据传输对象类型定义
 * @author yslg
 * @since 2025-10-06
 */

/**
 * 基础DTO - 包含所有实体的公共字段
 */
export interface BaseDTO {
  /** 主键ID */
  id?: string;
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
  /** 删除时间 */
  deleteTime?: string;
  /** 是否删除 */
  deleted?: boolean;
}

/**
 * 分页参数
 */
export interface PageParam {
  /** 当前页码 */
  page: number;
  /** 每页条数 */
  size: number;

  /** 总页数 */
  totalPages?: number;
  /** 总记录数 */
  totalElements?: number;
  /** 排序字段 */
  orderBy?: string;
  /** 排序方向 asc/desc */
  orderDirection?: 'asc' | 'desc';
}

/**
 * 分页结果
 */
export interface PageDomain<T> {
  pageParam: PageParam;
  /** 数据列表 */
  dataList?: T[];
}
export interface PageRequest<T> {
  pageParam: PageParam;
  filter: T;
}

/**
 * 统一返回结果
 */
export interface ResultDomain<T> {
  /** 状态码 */
  code: number;
  /** 返回消息 */
  message: string;
  /** 操作是否成功 */
  success: boolean;
  /** 是否登录 */
  login: boolean;
  /** 是否有权限 */
  auth: boolean;
  /** 返回数据 */
  data?: T;
  /** 返回数据列表 */
  dataList?: T[];
  /** 分页参数 */
  pageParam?: PageParam;
  /** 分页信息 */
  pageDomain?: PageDomain<T>;
}

