175 lines
4.7 KiB
C#
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; }
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|