小东Freeman + 关注

签名:我们爱我们的倒霉工作,也爱这千疮百孔的世界。

网站通知系统开发详解

发表于 2个月前   502次查看    4评论  11 赞

QQ图片20181010183757.png

Fun言网在过去的日子里一直没有通知系统,随着用户量的增加,有用户反映这一问题,所以针对这一问题做出了改善,推出了Fun言通知系统1.0bate,下面把具体开发过程与大家分享一下

需求分析

1、用户评论文章后,作者可以收到通知


2、用户回复评论后,被回复者可以收到通知


3、关注用户后,被关注者可以收到通知


4、留言通知


暂时就是这些通知,其他的等以后慢慢添加。


开发过程

一、数据库

通知表(notice):


nid(主键id)

ncontent(通知内容)

bnotice(需要通知的人)

creatTime(时间)

haveRead(是否已读)


表sql:

1
2
3
4
5
6
7
8
CREATE TABLE `notice` (
  `nid` int(11) NOT NULL AUTO_INCREMENT,
  `ncontent` text,
  `creatTime` datetime DEFAULT NULL,
  `bnotice` varchar(255) DEFAULT NULL,
  `haveRead` int(11) DEFAULT NULL,
  PRIMARY KEY (`nid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;



二、后端开发(以评论为例)

1、评论时向数据库增加一条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                // 发送通知
        // 被评论用户名
        String username = 获取的被评论用户名
        Integer aid = 文章id
        User user = (User) session.getAttribute("userInf");
        String nicheng = 评论人昵称
        int id = 评论人的id(用于进入个人主页)
        notice.setBnotice(username);
        notice.setCreatTime(new Date());
        //设置通知内容,用html代码编写,效果如文章开头所示
        notice.setNcontent("<a href=\"/tourist/" + id + ".html\">" + nicheng
                "</a>&nbsp;回复了你的评论:&nbsp;<a href=\"/p/" + aid
                ".html\">点击查看</a>");
            //设置未读
        notice.setHaveRead(2);
        //sql操作
        relationService.review_notice(notice);
sql
1
insert into notice(ncontent,creatTime,bnotice,haveRead) values(#{ncontent},#{creatTime},#{bnotice},#{haveRead})


2、用户获取通知

分析:需要用户在登录后提示有通知,点击通知后标记为已读,然后在刷新任何页面时再有通知时接着提醒,所以我们需要用到拦截器,在每次页面打开前获取该用户的通知总数,大于0,就提醒,否则不提醒

1
2
3
4
5
6
7
8
9
10
//登录和刷新页面的操作
int notice_count = relationService
        .find_notice_count(users);
if (notice_count > 0) {
//如果有通知设置前端效果,因为我是小红点,所以让他们显示就可以
    session.setAttribute("notice""block");
else {
//如果有通知设置前端效果,因为我是小红点,所以让他们不显示就可以
    session.setAttribute("notice""none");
}
sql语句
1
select count(*) from notice where bnotice=#{username} and haveread=2


3、标记为已读

分析:用户点击完后就把状态update就可以了

sql语句
1
update notice set haveRead=1 where bnotice=#{bnotice}


三、前端开发

这个就不一一赘述了,根据个人页面需求来,只要用户能知道有通知即可。


这样一个完整的网站通知系统就差不多可以了,并不是很难,但是主要要针对自己的系统进行开发,其中可能会遇到各种问题,有不懂的欢迎在下方进行留言。

11人已赞


本文由Fun言网 – 小东Freeman创作,转载请务必附上本文链接和出处,欢迎参与我们的付费投稿计划


你还没有登录,请先 登录注册!
文章评论4