站内信设计总结在我的上一篇文章网站消息通知设计中提到了网站消息通知系统的组成,其中有个很重要的部分就是通知渠道,包括

恭喜你,你的【会员】成功升级到了【13级】由于你已经多次违反网站规定,现已经被封号【3个月】3.管理员发送

1.站内信的主语:某某某用户、系统、管理员,当然也可以不展示,不展示的一般就是系统。为了后文讨论方便,我们称之为主语。该变量是为了告知接受者是谁触发了通知。

站内信的内容模型可以用伪代码展示如下:

有时候用户对某种事件的站内信并不感兴趣,甚至讨厌。那站内信就要提供设置让用户有选择的接受站内信,当然了,系统的站内信肯定得必须接收。以下是知乎站内信设置的一部分:

本文的站内信内容模型中只需要以event和sonEntityType为维度设置是否接收消息、接收哪些人的消息,就能比较容易的实现消息通知的设置。

说了那么多,我想把自己的一些设计思路特别是站内信的生成、保存和获取功能展示在这里。给需要者一个参考:

站内信表:tbl_website_message,包含的字段大致如下:

站内信与用户关系表:tbl_user_message,包含的字段大致如下:

用户在登陆网站或者打开app的时候触发查询,从用户站内信表(tbl_user_message关联tbl_website_message)读取站内信list,比较简单。但有一点需要注意:如果是一对多的场景,即一个事件触发多人接收通知。并不需要将所有人需要接受站内通知放入tbl_user_message表,需要被通知的人在登陆获取站内信的时候按需去tbl_website_message中查询并出入到tbl_user_message。具体流程如下:

1.获取tbl_user_message中跟自己有关的最大max_message_id。2.去tbl_website_message中获取>max_message_id的所有记录。3.循环遍历判断记录是否与自己有关(根据业务逻辑,如果有关将关联关系插入到tbl_user_message即可(记得id也要保存到max_message_id字段中。4.更新最晚插入tbl_user_message那条记录中的max_message_id为新遍历的最大的website_message表id。防止下次重复遍历。一些问题站内信关联实体内容的动态获取前面设计的站内信内容模型保存的是关联实体的对象,在生成站内信内容的时候从模型中将关联的实体信息(例如标题)填充进去。如果在这之后关联实体的信息(如标题)发生改变,在消息中并不能体现出来。如果要动态获取关联内容也很简单,在模型中保存关联实体的id就可以了,在用户获取站内信的时候再去根据id获取关联实体内容组装成内容返回即可。动态获取关联实体内容可以保证实时性,但我觉得,非动态获取关联实体内容会更好,理由有四:

THE END
1.消息机制第一阶段: 消息发送 第二阶段: 动态方法解析 第三阶段: 消息转发 将消息转发给别人去实现; 如果经历过以上3个阶段objc_msgSend 找不到合适的方法进行调用,会报错unrecognized selector sent to instance; 注:元类对象是一种特殊的类对象; 二、objc_msgSend底层实现: https://www.jianshu.com/p/099ce2e51305
2.面向对象的基本概念面向对象的基本概念有对象、类、抽象、封装、继承、多态、接口、消息、组件、模式和复用等。 1.对象 对象是由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个封装,是构成系统的基本单位,采用计算机语言描述,对象是由一组属性和对这组属性进行操作的一组服务构成。 https://blog.csdn.net/faihung/article/details/76599778
3.java中kafka发消息返回结果kafka发消息写法一:发送的消息对象是字符串 1 创建项目 2 项目结构 3 application.yml 配置文件 4 生产者 KafkaProducerComponent 5 消费者 KafkaConsumerComponent 6 控制器(GET请求发送消息) 7 启动类 8 测试效果 写法二:发送复杂消息对象 1 创建项目 2 项目结构 https://blog.51cto.com/u_16213626/9284004
4.对象存储POST上传对象存储API文档用户除了可以用PUT直接上传对象外,还可以使用POST上传对象。 单次上传对象大小范围是[0, 5GB],如果需要上传超过5GB的大文件,需要通过多段操作来分段上传。 与PUT上传的区别 PUT上传中参数通过请求头域传递;POST上传则作为消息体中的表单域传递。 PUT上传需在URL中指定对象名;POST上传提交的URL为桶域名,无需指定对象https://ecloud.10086.cn/op-help-center/doc/article/64198
5.Java语言程序设计试卷6套A、可提供多种实现方法 B、清楚边界隐藏内部细节 C、分布性 D、有利于复杂对象管理 E、安全和可移植 F、消息驱动 3、Java语言的多态性可以体现在?(正确答案:ABCDF) A、函数的重载 B、不同数据类型之间的合理转换 C、抽象函数和抽象类 D、多个构造函数 E、多个父类 F、派生出不同子类 https://developer.aliyun.com/article/1431557
6.教你3步画好时序图,轻松掌握产品经理都在学的流程分析利器首先,选定要展开分析的用例或目标;接着,分析都有哪些对象、角色参与了实现过程;然后,将它们在实现目标过程中,彼此之间的交互动作,按照时间轴的顺序列出来。 再简单点,就是定目标、找对象、列消息三步走。 1、定目标 画时序图,与活动图一样,要指定某个用例,或目标展开。这些动态视图,是用来描述在静态视图(如用https://www.niaogebiji.com/article-78077-1.html
7.消息分类标准通知消息管理规则推送服务旅游出行类App 便捷生活类App 运动健康类App 音乐类App 游戏类App 摄影类App 版本更新说明 使用入门 开发准备 配置AppGallery Connect 集成HMS实时运动Bundle对象键值 基础能力支持的国家/地区 扩展能力支持的国家/地区 设备接入 说明 运动设备接入开发指南 运动设备接入 有氧健身器材接入 https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/message-classification-0000001149358835
8.面向对象数据模型中的基本概念,如对象消息类继承重载多态消息是对象之间相互请求或相互协作的唯一途径,一个对象必须通过向其他对象发送消息的形式使得其他对象提供各自所能实现的功能。在面向对象的数据模型中,消是对象之间唯一的通信形式,也就是外界能够引用对象操作及获取对象状态的唯一方式,消息分为公有和私有两类,属于同一个对象的消息,其中有些是可由其他对象https://zhidao.baidu.com/question/402910824616679605.html