/**
 * @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;
}

/**
 * 用户浏览记录实体
 */
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 UserAchievement extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 成就ID */
  achievementID?: string;
  /** 获得时间 */
  achieveTime?: string;
}

/**
 * 成就实体
 */
export interface Achievement extends BaseDTO {
  /** 成就名称 */
  name?: string;
  /** 成就描述 */
  description?: string;
  /** 成就图标 */
  icon?: string;
  /** 成就类型 */
  type?: number;
  /** 获得条件 */
  condition?: string;
  /** 奖励积分 */
  rewardPoints?: number;
  /** 状态（0禁用 1启用） */
  status?: 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;
}
