邮箱核心业务场景:
- 发邮件
- 收邮件
- 查看邮件
邮箱业务我们关注的核心信息
- 草稿箱
- 收件箱
- 已发送邮件
- 未读邮件
- 重要邮件
- 垃圾邮件
- 已删除邮件
核心领域模型文字版
共2个模型,如下:
邮件(Mail,聚合根):
- ID
- 标题
- 内容
- 附件
- 是否重要:是、否
- 发送人邮箱地址
- 收件人邮箱地址列表(支持多个,逗号隔开)
- 创建时间
- 最后更新时间
- 发送时间
- 状态:草稿、已发送
支持场景:创建邮件存为草稿、发送邮件、查看草稿邮件、查看已发送邮件、删除邮件
=================================================
已接收邮件(ReceivedMail,聚合根):
- ID
- 标题
- 内容
- 附件
- 发件人邮箱地址
- 收件人邮箱地址(单个收件人)
- 原始收件人邮箱地址列表(发送邮件时填写的收件人列表,逗号隔开,该信息只用于信息查看,当我们要查看这封邮件是发送给哪些人的时候用)
- 是否已读:是、否
- 是否重要:是、否
- 是否删除:是、否
- 是否垃圾邮件:是、否
- 接收时间
支持场景:接收邮件、删除邮件、标记邮件各种属性、查看邮件:已接收、是否已读、是否重要、是否删除、是否垃圾邮件
关于邮件投递过程
除了发送邮件、接收邮件外,应该还有一个投递邮件的过程。投递邮件可以由一个独立的投递服务来完成。投递服务负责将当前邮件按照收件人邮箱地址,一个个进行投递,每个收件人邮箱都会收到一个邮件的消息,该消息包含了已发送邮件的所有信息。邮件接收服务可以为每个收件邮箱接收邮件,针对每个接收邮箱地址,new一个ReceivedMail聚合根对象,持久化即可。