package com.emotion.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户统计实体类
 * 
 * @author huazhongmin
 * @date 2025-07-23
 */
@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_user_stats")
public class UserStats extends BaseEntity {

    /**
     * 用户ID
     */
    @TableField("user_id")
    private String userId;

    /**
     * 统计类型
     */
    @TableField("stats_type")
    private String statsType;

    /**
     * 统计值
     */
    @TableField("value")
    private Double value;

    /**
     * 周期
     */
    @TableField("period")
    private String period;

    /**
     * 总对话数
     */
    @TableField("total_conversations")
    private Integer totalConversations;

    /**
     * 总消息数
     */
    @TableField("total_messages")
    private Integer totalMessages;

    /**
     * 总情绪记录数
     */
    @TableField("total_emotions_recorded")
    private Integer totalEmotionsRecorded;

    /**
     * 完成的课题数
     */
    @TableField("topics_completed")
    private Integer topicsCompleted;

    /**
     * 解锁的成就数
     */
    @TableField("achievements_unlocked")
    private Integer achievementsUnlocked;

    /**
     * 总积分
     */
    @TableField("total_points")
    private Integer totalPoints;

    /**
     * 连续使用天数
     */
    @TableField("consecutive_days")
    private Integer consecutiveDays;

    /**
     * 最大连续天数
     */
    @TableField("max_consecutive_days")
    private Integer maxConsecutiveDays;

    /**
     * 访问的地点数
     */
    @TableField("locations_visited")
    private Integer locationsVisited;

    /**
     * 创建的帖子数
     */
    @TableField("posts_created")
    private Integer postsCreated;

    /**
     * 评论数
     */
    @TableField("comments_made")
    private Integer commentsMade;

    /**
     * 收到的点赞数
     */
    @TableField("likes_received")
    private Integer likesReceived;

    /**
     * 社交互动数
     */
    @TableField("social_interactions")
    private Integer socialInteractions;
}