浅谈 “ 站内信 ” 的实现
生活随笔
收集整理的這篇文章主要介紹了
浅谈 “ 站内信 ” 的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近一直在寫站內信模塊,現在想好好總結一下。和大家一起學習交流。
之前看過,AlphaThink寫的 “兩年后 再議站內信”。個人感覺寫的很不錯的。但是我們的網站沒有那么多的訪問量,所以,群發采用的是全部持久化到數據庫。站內信發送類型包括 分為 ①點到點 ②點到局部 ③點到全部。
我們的網站采用的是領域驅動設計,下面我主要介紹應用層DTO 和提供的Service 設計
LetterDTO
/// <summary>
/// 站內信標識。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 站內信標題。
/// </summary>
public string Title { get; set; }
/// <summary>
/// 站內信內容。
/// </summary>
public string Content { get; set; }
/// <summary>
/// 發信人。
/// </summary>
public Guid SenderId { get; set; }
/// <summary>
/// 發件人關聯用戶實體。
/// </summary>
public UserDTO Sender { get; set; }
/// <summary>
/// 站內信類別。
/// </summary>
public LetterAppTypes LetterAppType { get; set; }
/// <summary>
/// 發件人是否刪除。
/// </summary>
public bool IsDelete { get; set; }
/// <summary>
/// 站內信是否置頂。
/// </summary>
public bool IsTop { get; set; }
/// <summary>
/// 收件人集合。
/// </summary>
public List<LetterReceiverDTO> Receivers{ get; set; }
/// <summary>
/// 發送時間。
/// </summary>
public DateTime SendTime { get; set; }
LetterReceiverDTO
/// <summary>
/// 收件人標識。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 收件人關聯站內信標識。
/// </summary>
public Guid LetterId { get; set; }
/// <summary>
/// 收件人Id。
/// </summary>
public Guid ReceiverId { get; set; }
/// <summary>
/// 收件人關聯用戶實體。
/// </summary>
public UserDTO Receiver { get; set; }
/// <summary>
/// 收件人是否讀取。
/// </summary>
public bool IsRead { get; set; }
/// <summary>
/// 收件人是否刪除。
/// </summary>
public bool IsDelete { get; set; }
LetterAppTypes (User 是用戶間的站內信,System 是管理員發的站內性能(局部) Top 是管理員發給所有用戶的站內信 (業務需要 全部置頂))
/// <summary>
/// 站內信類型枚舉
/// </summary>
[Flags]
public enum LetterAppTypes
{
/// <summary>
/// 用戶站內信
/// </summary>
User = 1,
/// <summary>
/// 系統站內信
/// </summary>
System = 2,
/// <summary>
/// 置頂站內信
/// </summary>
Top = 4
}
總結
以上是生活随笔為你收集整理的浅谈 “ 站内信 ” 的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 垃圾回收与内存管理
- 下一篇: POJ2828 Buy Ticket