全部已阅 PUT:/v1/read_all_messages
response 同上
删除、批量删除站内信:PUT /v1/delete_messages/:messageIds
response 同上
全部删除站内信:PUT /v1/delete_all_messages
response 同上
获取消息来源列表:GET /v1/module
response
{ "code": 200, "data": [ { "id": 1, "code": "worksheet", "name": "工单平台", "create_time": "2018-01-11 15:21:38", "update_time": "2018-01-11 15:21:38", "MessageTexts": null }, { "id": 2, "code": "cmdb", "name": "资源管理", "create_time": "2018-01-11 15:22:28", "update_time": "2018-01-11 15:22:28", "MessageTexts": null }, ... ], "msg": "OK"}七、测试注意点
1 发送站内信
- 纯接口
- 收件用户以逗号分割,真实性不做校验
- 收件用户有长度校验,50个字节
- title content 有长度校验,分别是45,150个字节
- module_name 是一个列表,必须从这里选一个
八、优化
- 未读列表可以加上粗体显示,已读则是普通字体
- 对站内信进行分类,打上不同纬度的标签,方便过滤、搜索、屏蔽
- 用户可以设置允许接收的站内信的消息来源
- 管理员可以对全站消息、全站人员、全站的消息属性进行增删改查,比如撤销某个站内信,让所有人都看不见
- 管理员可以统计站内信的发送数量、各产品的使用情况、消息被读的比例、消息被读的时间、消息被读的方式(点开还是批量操作),等
九、关键功能点设计
右上角的图标行为
1 点击图标,展示最近的N条未读消息
- 展示下拉框
- 实时获取最近N条未读消息
- N可以为5~10,具体数值取决于下拉框的高度限制
- 当未读数不足N时,下拉框能自适应高度
- 如果没有未读消息,展示”暂无新消息”
- 停止每10秒的获取未读消息数接口
- 向下滑动下拉框,展示更多未读消息(只获取id小于已展示消息列表里的最小id,即不获取点击图标后新来的消息)
- 下拉框不消失
- 依然停止每10秒的获取未读消息数接口
- 未读消息数减1
- 未读消息列表删除当前消息(slice)
- 展示弹出框
5 关闭弹出框或者点击外围:
- 弹出框消失
- 下拉框不消失
- 可以继续点击某一个未读消息
- 下拉框消失
- 清空已有的未读消息列表
- 恢复每10秒的获取未读消息数接口
阿里云的图标行为是:
- 刷新页面的时候才会请求一次未读消息数,之后不再定时刷新(当然也可能是刷新时间间隔比较长,没发现;又或者采用了 socket 的方式,建立了一个长链接)
- hover图标,即显示未读消息的下拉框
- 点击图标,进入站内信管理页面,默认是“未读消息”
文章插图
4 点击未读消息,新开一个Tab,展示该消息的详情(detail页面),原Tab内容不变,即没有未读数减一,也没从下拉框里删除刚点击的消息
5 最多展示5条消息,只要不刷新页面,就一直是这5条
6 没有滚动更多的功能,只有查看更多,点击进入站内信管理页面,默认是“未读消息”
- 和点击图标的区别是:点击图标直接当前页面跳转到站内信管理页面,点击“查看更多”会新建一个Tab
文章插图
隐藏浏览器进度条
每10秒的获取未读消息数接口,会触发浏览器展示进度条,导致分散用户注意力,要把这个进度条隐藏掉 。
其他刷新页面的行为不受影响 。
参考文档
《站内信需求背景及需求分析的全过程》
《站内信功能设计》
推荐阅读
- SSH工作过程
- 抖音很火的微信“农场”功能是如何实现的?
- 利用百度ai实现文本和图片审核
- 中国量子研究:光晶格中首次实现1250对原子高保真度纠缠态同步制备
- python 元类、实现ORM
- Redis数据持久化,及实现方式
- 六个热门项目助你实现财富自由 热门投资项目
- PHP五十个提升执行效率的小技巧,和常见问题
- PHP导出百万条数据方法
- PHP的TS和NTS有何区别,PHP在各环境下的伪静态是如何配置的