/**
 * @description 资源相关类型定义
 * @author yslg
 * @since 2025-10-15
 */

import { BaseDTO } from '../base';

/**
 * 资源实体
 */
export interface Resource extends BaseDTO {
  /** 资源ID */
  resourceID?: string;
  /** 资源标题 */
  title?: string;
  /** 资源内容 */
  content?: string;
  /** 资源简介 */
  summary?: string;
  /** 封面图片 */
  coverImage?: string;
  /** 分类ID */
  categoryID?: string;
  /** 作者 */
  author?: string;
  /** 来源 */
  source?: string;
  /** 来源URL */
  sourceUrl?: string;
  /** 浏览次数 */
  viewCount?: number;
  /** 点赞次数 */
  likeCount?: number;
  /** 收藏次数 */
  collectCount?: number;
  /** 状态（0草稿 1已发布 2下架） */
  status?: number;
  /** 是否推荐 */
  isRecommend?: boolean;
  /** 是否轮播 */
  isBanner?: boolean;
  /** 发布时间 */
  publishTime?: string;
  /** 创建者 */
  creator?: string;
  /** 更新者 */
  updater?: string;
  
  /** 标签列表 */
  tags?: Tag[];
  /** 是否允许评论 */
  allowComment?: boolean;
  /** 是否置顶 */
  isTop?: boolean;
}

/**
 * Banner实体
 */
export interface Banner extends BaseDTO {
  /** Banner标题 */
  title?: string;
  /** Banner图片URL */
  imageUrl?: string;
  /** 链接类型（1资源 2课程 3外部链接） */
  linkType?: number;
  /** 关联ID（资源ID或课程ID） */
  linkID?: string;
  /** 外部链接URL */
  linkUrl?: string;
  /** 排序号 */
  orderNum?: number;
  /** 状态（0禁用 1启用） */
  status?: number;
  /** 创建者 */
  creator?: string;
  /** 更新者 */
  updater?: string;
}

/**
 * 资源分类实体
 */
export interface ResourceCategory extends BaseDTO {
  /** 分类唯一标识 */
  categoryID?: string;
  /** 分类名称 */
  name?: string;
  /** 父分类ID */
  parentID?: string;
  /** 分类描述 */
  description?: string;
  /** 分类图标 */
  icon?: string;
  /** 排序号 */
  orderNum?: number;
  /** 创建者 */
  creator?: string;
  /** 更新者 */
  updater?: string;
}

/**
 * 资源标签实体
 */
export interface ResourceTag extends BaseDTO {
  /** 资源ID */
  resourceID?: string;
  /** 标签ID */
  tagID?: string;
}

/**
 * 标签实体
 */
export interface Tag extends BaseDTO {
  /** 标签ID */
  tagID?: string;
  /** 标签名称 */
  name?: string;
  /** 标签描述 */
  description?: string;
  /** 标签颜色 */
  color?: string;
  /** 排序号 */
  orderNum?: number;
  /** 状态（0禁用 1启用） */
  status?: number;
}

export interface ResourceVO extends BaseDTO{
  resource: Resource;
  category: ResourceCategory;
  tags: Tag[];
}
export interface tagVO extends BaseDTO{
  /** 标签ID */
  tagID?: string;
  /** 标签名称 */
  tagName?: string;
  /** 标签描述 */
  description?: string;
  /** 标签颜色 */
  tagColor?: string;
  resourceID?: string;
}

/**
 * 资源推荐实体
 */
export interface ResourceRecommend extends BaseDTO {
  /** 资源ID */
  resourceID?: string;
  /** 推荐类型（1首页推荐 2分类推荐） */
  recommendType?: number;
  /** 排序号 */
  orderNum?: number;
  /** 状态（0禁用 1启用） */
  status?: number;
}

/**
 * 数据采集配置实体
 */
export interface DataCollectionConfig extends BaseDTO {
  /** 配置名称 */
  name?: string;
  /** 采集来源 */
  source?: string;
  /** 采集频率（天/周） */
  frequency?: string;
  /** 采集规则 */
  rules?: string;
  /** 状态（0禁用 1启用） */
  status?: number;
}

/**
 * 数据采集日志实体
 */
export interface DataCollectionLog extends BaseDTO {
  /** 配置ID */
  configID?: string;
  /** 采集时间 */
  collectTime?: string;
  /** 采集数量 */
  collectCount?: number;
  /** 采集状态（0失败 1成功） */
  status?: number;
  /** 错误信息 */
  errorMessage?: string;
}

/**
 * 资源搜索参数
 */
export interface ResourceSearchParams {
  /** 关键词 */
  keyword?: string;
  /** 分类ID */
  categoryID?: string;
  /** 状态 */
  status?: number;
  /** 是否推荐 */
  isRecommend?: boolean;
  /** 是否轮播 */
  isBanner?: boolean;
  /** 作者 */
  author?: string;
  /** 开始时间 */
  startTime?: string;
  /** 结束时间 */
  endTime?: string;
  /** 页码 */
  page?: number;
  /** 每页条数 */
  size?: number;
}

/**
 * 资源统计信息
 */
export interface ResourceStatistics {
  /** 总资源数 */
  totalResources?: number;
  /** 今日新增 */
  todayNew?: number;
  /** 已发布 */
  published?: number;
  /** 草稿 */
  draft?: number;
  /** 下架 */
  offline?: number;
  /** 总浏览量 */
  totalViews?: number;
  /** 总点赞数 */
  totalLikes?: number;
  /** 总收藏数 */
  totalCollections?: number;
}
