/**
 * @description 用户中心相关类型定义
 * @author yslg
 * @since 2025-10-15
 */

import { BaseDTO } from '../base';
import { CollectionType } from '../enums';
/**
 * 用户收藏实体
 */
export interface UserCollection extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 收藏类型（1资源 2课程） */
  collectionType?: CollectionType;
  /** 收藏对象ID */
  collectionID?: string;
  /** 是否新增收藏（1是 -1否） */
  collectionValue?: number;
}

/**
 * 用户收藏VO - 扁平化收藏信息和关联资源/课程详情
 */
export interface UserCollectionVO extends BaseDTO {
  // ========== 收藏基本信息 ==========
  /** 用户ID */
  userID?: string;
  /** 收藏类型（1资源 2课程） */
  collectionType?: CollectionType;
  /** 收藏对象ID */
  collectionID?: string;
  /** 是否新增收藏（1是 -1否） */
  collectionValue?: number;
  /** 收藏时间 */
  collectionTime?: string;
  
  // ========== 资源详情（collectionType=1时有效） ==========
  /** 资源ID */
  resourceID?: string;
  /** 资源标题 */
  title?: string;
  /** 资源内容 */
  content?: string;
  /** 资源简介 */
  summary?: string;
  /** 封面图片 */
  coverImage?: string;
  /** 标签ID */
  tagID?: string;
  /** 作者 */
  author?: string;
  /** 来源 */
  source?: string;
  /** 浏览次数 */
  viewCount?: number;
  /** 点赞次数 */
  likeCount?: number;
  /** 收藏次数 */
  collectCount?: number;
  /** 资源状态 */
  status?: number;
  /** 发布时间 */
  publishTime?: string;
  
  // ========== 课程详情（collectionType=2时有效） ==========
  /** 课程ID */
  courseID?: string;
  /** 课程名称 */
  courseName?: string;
  /** 课程描述 */
  description?: string;
  /** 课程时长（分钟） */
  duration?: number;
  /** 授课老师 */
  teacher?: string;
  /** 课程状态 */
  courseStatus?: number;
  /** 学习人数 */
  learnCount?: number;
}

/**
 * 用户浏览记录实体
 */
export interface UserBrowseRecord extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 浏览类型（1资源 2课程） */
  browseType?: number;
  /** 浏览对象ID */
  browseID?: string;
  /** 浏览时长（秒） */
  duration?: number;
  /** 浏览时间 */
  browseTime?: string;
}

/**
 * 用户积分实体
 */
export interface UserPoints extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 积分余额 */
  balance?: number;
  /** 总获得积分 */
  totalEarned?: number;
  /** 总消费积分 */
  totalConsumed?: number;
}

/**
 * 积分记录实体
 */
export interface PointsRecord extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 积分变动 */
  points?: number;
  /** 变动类型（1获得 2消费） */
  type?: number;
  /** 变动原因 */
  reason?: string;
  /** 关联对象ID */
  relatedID?: string;
  /** 关联对象类型 */
  relatedType?: number;
}

/**
 * 个人中心统计信息
 */
export interface UserCenterStatistics {
  /** 收藏数量 */
  collectionCount?: number;
  /** 浏览记录数量 */
  browseCount?: number;
  /** 学习时长 */
  learningDuration?: number;
  /** 完成任务数 */
  completedTasks?: number;
  /** 获得积分 */
  earnedPoints?: number;
  /** 获得成就数 */
  achievementCount?: number;
}

/**
 * 学习记录图表数据
 */
export interface LearningChartData {
  /** 日期 */
  date?: string;
  /** 学习时长（分钟） */
  duration?: number;
  /** 学习资源数 */
  resourceCount?: number;
}

/**
 * 资源学习统计
 */
export interface ResourceLearningStats {
  /** 资源ID */
  resourceID?: string;
  /** 资源标题 */
  resourceTitle?: string;
  /** 学习次数 */
  learnCount?: number;
  /** 学习时长 */
  learnDuration?: number;
}
