70 lines
2.1 KiB
C#
70 lines
2.1 KiB
C#
using System.ComponentModel.DataAnnotations;
|
||
using System.ComponentModel.DataAnnotations.Schema;
|
||
|
||
namespace FutureMailAPI.Models
|
||
{
|
||
public class SentMail
|
||
{
|
||
[Key]
|
||
public int Id { get; set; }
|
||
|
||
[Required]
|
||
[MaxLength(200)]
|
||
public string Title { get; set; } = string.Empty;
|
||
|
||
[Required]
|
||
public string Content { get; set; } = string.Empty;
|
||
|
||
[Required]
|
||
public int SenderId { get; set; }
|
||
|
||
// 收件人类型: 0-自己, 1-指定用户, 2-公开时间胶囊
|
||
[Required]
|
||
public int RecipientType { get; set; }
|
||
|
||
// 如果是指定用户,存储用户ID
|
||
public int? RecipientId { get; set; }
|
||
|
||
// 发送时间
|
||
public DateTime SentAt { get; set; } = DateTime.UtcNow;
|
||
|
||
// 创建时间
|
||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||
|
||
// 投递时间
|
||
[Required]
|
||
public DateTime DeliveryTime { get; set; }
|
||
|
||
// 邮件状态: 0-草稿, 1-已发送(待投递), 2-投递中, 3-已送达
|
||
[Required]
|
||
public int Status { get; set; } = 0;
|
||
|
||
// 触发条件类型: 0-时间, 1-地点, 2-事件
|
||
[Required]
|
||
public int TriggerType { get; set; } = 0;
|
||
|
||
// 触发条件详情(JSON格式存储)
|
||
public string? TriggerDetails { get; set; }
|
||
|
||
// 附件路径(JSON数组格式)
|
||
public string? Attachments { get; set; }
|
||
|
||
// 是否加密
|
||
public bool IsEncrypted { get; set; } = false;
|
||
|
||
// 加密密钥(如果使用端到端加密)
|
||
public string? EncryptionKey { get; set; }
|
||
|
||
// 邮件主题/胶囊皮肤
|
||
[MaxLength(50)]
|
||
public string? Theme { get; set; }
|
||
|
||
// 导航属性
|
||
[ForeignKey("SenderId")]
|
||
public virtual User Sender { get; set; } = null!;
|
||
|
||
public virtual User? Recipient { get; set; }
|
||
|
||
public virtual TimeCapsule? TimeCapsule { get; set; }
|
||
}
|
||
} |