80 lines
3.1 KiB
C#
80 lines
3.1 KiB
C#
using MiaoJiZhang.Domain.Enums;
|
||
|
||
namespace MiaoJiZhang.Domain.Entities;
|
||
|
||
/// <summary>
|
||
/// 用户。当前仅用户名+密码注册登录;
|
||
/// Email/Phone/微信等字段为预留(决策 2026-07-18),暂不启用。
|
||
/// </summary>
|
||
public class User
|
||
{
|
||
public long Id { get; set; }
|
||
public string Username { get; set; } = null!;
|
||
public string PasswordHash { get; set; } = null!;
|
||
public string? Nickname { get; set; }
|
||
public string? AvatarUrl { get; set; }
|
||
|
||
// ---- 预留:快捷登录(暂不启用,仅建表占位) ----
|
||
public string? Email { get; set; }
|
||
public bool EmailVerified { get; set; }
|
||
public string? Phone { get; set; }
|
||
public bool PhoneVerified { get; set; }
|
||
public string? WeChatOpenId { get; set; }
|
||
public string? WeChatUnionId { get; set; }
|
||
public string? AppleUserId { get; set; }
|
||
|
||
// ---- 模式与 AI 伙伴设置 ----
|
||
public AppMode AppMode { get; set; } = AppMode.Normal;
|
||
public AiCompanionSetting? AiCompanion { get; set; }
|
||
|
||
public bool IsBanned { get; set; }
|
||
public int AuthVersion { get; set; }
|
||
public int AiChatLimit { get; set; } = 50;
|
||
public AiQuotaPeriod AiChatPeriod { get; set; } = AiQuotaPeriod.Day;
|
||
public int AiChatUsed { get; set; }
|
||
public DateTime AiChatWindowStartedAt { get; set; }
|
||
public DateTime? AccountClosureRequestedAt { get; set; }
|
||
public DateTime? AccountClosureScheduledAt { get; set; }
|
||
public DateTime CreatedAt { get; set; }
|
||
public DateTime? LastLoginAt { get; set; }
|
||
|
||
public List<Ledger> Ledgers { get; set; } = [];
|
||
public List<UserFeaturePermission> FeaturePermissions { get; set; } = [];
|
||
public List<PushDevice> PushDevices { get; set; } = [];
|
||
public List<UserPushPreference> PushPreferences { get; set; } = [];
|
||
}
|
||
|
||
/// <summary>AI 伙伴设置(形象/昵称/性格/滑杆),1:1 User</summary>
|
||
public class UserFeaturePermission
|
||
{
|
||
public long Id { get; set; }
|
||
public long UserId { get; set; }
|
||
public User User { get; set; } = null!;
|
||
public string PermissionKey { get; set; } = null!;
|
||
public bool IsEnabled { get; set; }
|
||
public DateTime CreatedAt { get; set; }
|
||
public DateTime UpdatedAt { get; set; }
|
||
}
|
||
|
||
public class AiCompanionSetting
|
||
{
|
||
public long Id { get; set; }
|
||
public long UserId { get; set; }
|
||
public User User { get; set; } = null!;
|
||
|
||
/// <summary>形象 key:cat / dog / robot(后台形象库可扩展)</summary>
|
||
public string AvatarKey { get; set; } = "cat";
|
||
/// <summary>用户给 AI 起的名字;空则用形象默认名</summary>
|
||
public string? CustomName { get; set; }
|
||
/// <summary>性格 key,对应后台性格库</summary>
|
||
public string PersonaKey { get; set; } = "sassy_cat";
|
||
|
||
/// <summary>吐槽力度 0-100</summary>
|
||
public int RoastLevel { get; set; } = 60;
|
||
/// <summary>表情包频率 0-100</summary>
|
||
public int StickerFrequency { get; set; } = 70;
|
||
/// <summary>主动提醒频率 0-100(映射:关/每周/每天/实时)</summary>
|
||
public int ProactiveLevel { get; set; } = 40;
|
||
}
|
||
|