zoukankan      html  css  js  c++  java
  • 浅谈 “ 站内信 ” 的实现

         最近一直在写站内信模块,现在想好好总结一下。和大家一起学习交流。

         之前看过,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
        }
  • 相关阅读:
    第32章 数据库的备份和恢复
    Perl 打印关键字上下行
    mysql select * into OUTFILE 不会锁表
    独享表空间 ibdata1
    sql 使用单引号
    Oracle 维护常用SQL
    Mysql 独享表空间
    Mysql Perl unload表数据
    PLSQL 拼接SQL
    begin和declare
  • 原文地址:https://www.cnblogs.com/qinjian123/p/2533444.html
Copyright © 2011-2022 走看看