通知系统的设计(三)

2016-10-24  本文已影响76人  贾老师和他的朋友们

对象设置和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

上一篇下一篇

猜你喜欢

热点阅读