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

之前看过,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}

转载于:https://www.cnblogs.com/qinjian123/archive/2012/06/04/2533444.html

浅谈 “ 站内信 ” 的实现相关推荐

  1. 基于workerman实现的web消息推送站内信功能

    流程说明 使用 web-msg-sender 作为 服务器监听程序. 客户端(浏览器)通过websocket连接 服务器监听程序. 服务器应用程序(后端) 通过curl访问 服务器监听程序,将需要推送 ...

  2. 单系统站内信数据库设计思路

    第一版设计 需求 :单用户之间通信(融合了用户反馈需求) 数据库设计:Message内容和收发者存在一张表中 message表: 这里一条Message存两次,类似邮件服务. status:已读.未读 ...

  3. ASP.NET 实现站内信功能(点对点发送,管理员群发)

    正好这段时间在研究这个功能,还是得感谢这位大神,没有他的引路,我就不可能把站内信做出来. http://www.cnblogs.com/grenet/archive/2010/03/08/168065 ...

  4. 开源 免费 java CMS - FreeCMS2.1 会员站内信

    项目地址:http://www.freeteam.cn/ 站内信 1.1.1 写信 从左側管理菜单点击写信进入. 输入收信人.标题.内容后点击发送button. 1.1.2 收件箱 从左側管理菜单点击 ...

  5. 单系统站内信设计概述(满足百万级信息)

    基本功能 点到点的消息传送: 用户给用户 管理员给用户 点到面的消息传送 管理员给用户群 少量用户(10-999) 对于用户非常少的情况,没有必要深入的考虑数据库的优化,采用简单的表设计: 如表mes ...

  6. 使用Notification实现站内信

    1 创建notification php artisan make:notification PostPublished 此时app\Notifications目录中有PostPublished.ph ...

  7. mysql群发消息_百万级用户量的站内信群发数据库设计

    随着WEB2.0的发展,用户之间的信息交互也变得十分庞大,而且实时性要求越来越高.现在很多SNS网站和一部分CMS网站都广泛地应用了站内信这一模块,这个看似简单的东西其实背后隐藏着很多需要设计师重视的 ...

  8. mysql群发消息_分享网站群发站内信数据库表设计

    本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...

  9. 有关Amazon站内信邮件类别处理

    在做amazon站内信的时候;需要对邮件进行分类; 如: 亚马逊买家邮件 ; 亚马逊系统邮件 ; 亚马逊Q&A问答 等分类;记录一下amazon的邮箱类别; /*** 处理邮件类型** @pa ...

最新文章

  1. 分享我如何在7年时间里成长为阿里Java架构师(附学习路线图)
  2. 采集Nginx日志的几种方式
  3. 计算机网络试题大连工业大学,2016大连工业大学计算机网络考研大纲
  4. 从表到里学习JVM实现
  5. 分布式从mysql查数据_技术分享 | 从库数据的查找和参数 slave_rows_search_algorithms...
  6. MVC扩展控制器工厂,通过继承DefaultControllerFactory来决定使用哪个接口实现,使用Ninject...
  7. httpclient妙用一 httpclient作为客户端调用soap webservice(转)
  8. SAP CRM IBASE头部字段valid from和valid to的填充逻辑
  9. iOS GorupBy
  10. linux中如何改IP
  11. 可编程控制器是计算机,可编程控制器的工作原理!与我们PC有什么区别呢?
  12. mysql面向对象例子_PHP 面向对象实例:获取数据库用户数据
  13. 详解Cookie 【转】
  14. 大数据平台搭建技术底座 掘金移动互联等行业
  15. 螺栓预紧力与拧紧力矩的计算方法
  16. Bad Request This combination of host and port requires TLS
  17. Shapefile属性操作之改
  18. 鸿蒙车载智慧屏评测,首款鸿蒙OS新机 荣耀智慧屏全面评测:这就是电视的未来...
  19. CPU使用率较低但负载较高怎么处理?
  20. python对笔记本电脑的要求-适合编程的笔记本

热门文章

  1. 使用格式刷重复复制格式
  2. NVIDIA GeForce Go 6100 for Wndows 7 (笔记本)
  3. openfire安装配置
  4. Unity实现幸运大转盘
  5. ROS基础系列(七):机器人的建模与仿真(中)
  6. GLUT教程 - glutPostRedisplay函数
  7. 工业大数据漫谈4:工业大数据的作用
  8. 百度优化客服电话搜索
  9. windows下安装miniconda详细教程
  10. 使用Spring 定时器 + selenium打卡