Files
webappserver1/Models/Users.cs
2026-05-19 21:55:48 +08:00

175 lines
4.7 KiB
C#

using MessagePack;
namespace WebAppServer1.Models
{
// 用户表
public class User
{
public int Id { get; set; }
public string Username { get; set; } = string.Empty;
public string Nickname { get; set; } = string.Empty; // 可修改,不唯一
public string Email { get; set; } = string.Empty;
public string PasswordHash { get; set; } = string.Empty;
public string AvatarUrl { get; set; } = string.Empty;
public string Signature { get; set; } = string.Empty;
public DateTime LastActive { get; set; }
public DateTime CreatedAt { get; set; }
public bool IsOnline { get; set; }
public ICollection<Friend> Friends { get; set; } = new List<Friend>();
public ICollection<Message> Messages { get; set; } = new List<Message>();
}
// 好友关系表
public class Friend
{
public int Id { get; set; }
public int UserId { get; set; }
public int FriendId { get; set; }
public FriendStatus Status { get; set; }
public DateTime CreatedAt { get; set; }
public User User { get; set; }
public User FriendUser { get; set; }
}
public enum FriendStatus
{
Pending,
Accepted,
Blocked
}
// 群聊表
public class Group
{
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public int OwnerId { get; set; }
public string AvatarUrl { get; set; } = string.Empty;
public DateTime CreatedAt { get; set; }
public User Owner { get; set; }
public ICollection<GroupMember> Members { get; set; } = new List<GroupMember>();
}
// 群成员表
public class GroupMember
{
public int Id { get; set; }
public int GroupId { get; set; }
public int UserId { get; set; }
public GroupRole Role { get; set; }
public DateTime JoinedAt { get; set; }
public Group Group { get; set; }
public User User { get; set; }
}
public enum GroupRole
{
Member,
Admin,
Owner
}
// 消息表
public class Message
{
public int Id { get; set; }
public int SenderId { get; set; }
public int? ReceiverId { get; set; } // 私聊
public int? GroupId { get; set; } // 群聊
public string Content { get; set; } = string.Empty;
public MessageType MessageType { get; set; }
public DateTime CreatedAt { get; set; }
public bool IsRead { get; set; }
public bool IsDeleted { get; set; }
public User Sender { get; set; }
public User Receiver { get; set; }
public Group Group { get; set; }
}
public enum MessageType
{
Text,
Image,
File,
Video,
Voice
}
// 通知表
public class Notification
{
public int Id { get; set; }
public int UserId { get; set; }
public NotificationType Type { get; set; }
public string Content { get; set; } = string.Empty;
public bool IsRead { get; set; }
public DateTime CreatedAt { get; set; }
public User User { get; set; }
}
public enum NotificationType
{
FriendRequest,
Message,
System
}
// 文件表
public class FileEntity
{
public int Id { get; set; }
public int UploaderId { get; set; }
public int MessageId { get; set; }
public string FileUrl { get; set; } = string.Empty;
public FileType FileType { get; set; }
public int Size { get; set; }
public DateTime UploadedAt { get; set; }
public User Uploader { get; set; }
public Message Message { get; set; }
}
public enum FileType
{
Image,
Video,
Document,
Audio
}
public class UserProfileHistory
{
public int Id { get; set; }
public int UserId { get; set; }
public string FieldName { get; set; } = string.Empty;
public string OldValue { get; set; } = string.Empty;
public string NewValue { get; set; } = string.Empty;
public DateTime ChangedAt { get; set; }
public string ChangedBy { get; set; } = string.Empty;
public User User { get; set; }
}
public class LoginRecord
{
public int Id { get; set; }
public int UserId { get; set; }
public DateTime LoginTime { get; set; }
public string IpAddress { get; set; } = string.Empty;
public string DeviceInfo { get; set; } = string.Empty;
public bool IsSuccess { get; set; }
public User User { get; set; }
}
}