通知系统的设计(三)
对象设置和API
行为分析
管理员
1、发布公告
2、
系统
发起一个提醒,是由业务根据自己的情况产生的,产生的消息对应一个注册,至于发给全部(包括按标签)还是发给一个人(多个人),由业务自己确定。
1、保存提醒信息,save(Notice notice)
web
1、websocket接收通知,新消息弹出,同时修改新消息数量。
2、初始化,init(String uid),返回新消息总数,和最新的5条信息。
3、查询信息,query(String uid, String status,String type, int page)
4、显示信息,get(String id)
5、用户读(设置状态),status(String id, String status)
6、批量设置状态,batch(String fromStatus,String toStatus),把功能从未读->已读
7、列出所有订阅内容。getSubscribe
8、订阅(取消),subscribe(String uid, String subscribeId,int flag, int web, int weixin, int sm)
9、得到系统消息下所有分类 getNotifyCate
package
com.xx.common.notify
domain---数据库对象
bean---bean
utils--工具类
通用对象
domain
Bulletin--公告
Notice--提醒
Address-收信人
Subscribe--订阅
repsitory---db对象操作
NoticeDao
save(Bulletin)
save(Notice)
SubscribeDao
subscribe----订阅
unsubscribe---取消订阅
Web部分
WebPush
web推送到jms(activemq)的topic,web端通过activemq ajax 实现通知。这里不采用持久化订阅,只有在线的用户才能得到通知。因为第一次连接会调用init完成把之前没有得到的通知得到。
WebPull
web用户初始化时读取属性自己的信息公告信息。得到新消息总数,和最新的10条信息,更多信息通过get得到。
init(uid)---读取公告信息,插入到自己的信息表中。
get(uid)--读取私有信息。
微信部分
WeixinPush
完成微信的推送功能,使用jms来实现,设两个queue
queue 1:处理不指定用户的通知,订阅者完成微信的推送,需要先得到待发微信接收人,然后循环发送。对应方法:push(Bulletin bulletin)
queue 2:处理指定用户的通知,订阅者完成微信的推送。对应方法:push(Notice)
WeixinUtils
完成微信订阅功能,微信登录后,要记录最后登录时间和登录次数。
微信部分采用模板消息来实现。需要选择模板。
APP部分
todo