namespace QYZH.InteractiveMagazine.Models.Dto;

/// <summary>
/// Users查询输入DTO
/// </summary>
public class UsersQueryInput : PageQueryModel
{
    /// <summary>
    /// 微信用户ID
    /// </summary>
    public string? WxUserId { get; set; }
}

/// <summary>
/// Users输出DTO (基本信息)
/// </summary>
public class UsersOutput
{
    /// <summary>
    /// 主键ID
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// 微信用户ID
    /// </summary>
    public string WxUserId { get; set; } = string.Empty;

    /// <summary>
    /// 昵称
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 头像地址
    /// </summary>
    public string? AvatarUrl { get; set; }

    /// <summary>
    /// 积分余额
    /// </summary>
    public int Points { get; set; }

    /// <summary>
    /// 用户类型
    /// </summary>
    public string Type { get; set; } = string.Empty;

    /// <summary>
    /// 状态
    /// </summary>
    public string Status { get; set; } = string.Empty;

    /// <summary>
    /// 当前成长值
    /// </summary>
    public int GrowthPoints { get; set; }
}

/// <summary>
/// 用户详情输出DTO（仅基本信息）
/// </summary>
public class UserDetailOutput
{
    /// <summary>
    /// 用户基本信息
    /// </summary>
    public UsersOutput BasicInfo { get; set; } = new();
}

/// <summary>
/// 用户期刊项输出DTO
/// </summary>
public class UserJournalItemOutput
{
    /// <summary>
    /// 绑定记录Id
    /// </summary>
    public long BindId { get; set; }

    /// <summary>
    /// 期刊Id
    /// </summary>
    public long JournalId { get; set; }

    /// <summary>
    /// 期刊标题
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 期刊封面
    /// </summary>
    public string? CoverImageUrl { get; set; }

    /// <summary>
    /// 绑定类型: Read, Favorite, Subscribe
    /// </summary>
    public string Type { get; set; } = string.Empty;

    /// <summary>
    /// 绑定状态
    /// </summary>
    public string Status { get; set; } = string.Empty;

    /// <summary>
    /// 绑定时间
    /// </summary>
    public DateTime CreatedAt { get; set; }
}

/// <summary>
/// 更新用户状态输入DTO
/// </summary>
public class UpdateUserStatusInput
{
    /// <summary>
    /// 用户状态: 1-启用, 2-冻结
    /// </summary>
    public int Status { get; set; }
}
