管理员发送系统公告,每个用户登陆可查看自己的已读和未读状态的公告

  • 每个用户 看到的已读和未读状态的公告都不一样的,只有管理员可以发布及新增公告
  • 效果图
    在这里插入图片描述

准备工作

数据库表

  • 公告表,公告和员工的中间表,员工表(也就是后台登陆的用户)
    在这里插入图片描述

Qo部分

  • 配一个默认的当前用户作为属性,用于传入list控制器,每次访问公告,则更新使所有的公告内的当前用户属性为当前访问的用户,便于查询中间表
    在这里插入图片描述
    在这里插入图片描述

实体类部分

  • 公告表这边的currentUser属性,用于代表后台的当前用户
  • 为了查中间表用的
  • 是否已读 取决于中间表中的see_read 而不是此实体类的
    在这里插入图片描述

显示公告的控制器部分(list)

  • 这里主要是query(qo)
    在这里插入图片描述

查询公告的业务层方法

  • 在分页前,将所有公告表内的当前用户属性设为当前用户的id,便于后续查询中间表
    在这里插入图片描述
  • 将所有公告表内的当前用户属性设为当前用户的id 的sql语句
    在这里插入图片描述
  • 查询公告表 显示在页面的 sql语句
  • 这里的where 只需看第一行,其他都是过滤操作 可以不看
  • 这里使用到了连表,公告表的当前用户的id也就是中间表的员工id,公告表的id也就是中间表的公告id,那么就能查出所对应的see_read(是否可读状态)了
  • 中间表三个字段(公告表id,员工id,是否已读)
  • 这里将中间表的see_read 封装进公告表的 see_read里面,即可在页面显示出,当前用户是否已读
    在这里插入图片描述

点击查看按钮,则将未读设为已读

  • 当前用户是否已读,直接看中间表对应的see_read
  • 所以直接改中间表的see_read值为true即可
  • 这里查看按钮 嵌套了2个值,一个是公告表id,一个是当前用户的id,那么就能求出对应的中间表 并且将see_read(是否已读)的值进行改变了
    在这里插入图片描述
    在这里插入图片描述

所对应的控制器

  • 点击查看 将未读改为已读后 就跳转到查看的页面了
    在这里插入图片描述

所用到的sql语句

在这里插入图片描述

如何新增公告,并在中间表关联所有的用户id

  • 因为每个用户看公告的 已读和未读 都是不同的
  • 所以公告新增的时候,需要在中间表关联每一个用户id

在这里插入图片描述

  • 新增和编辑为同一个控制器
  • 这里主要看判断notice.getId 为空的业务逻辑(新增的时候)
  • 把数据库所有的用户id 放进集合里面,然后先新增公告,再新增中间表的关系
  • 注意这里必须先新增公告,新增公告完后,此公告对象才有所属的id值
  • 随后进行中间表新增关系的操作(传2个参数,一个是公告表id,一个是用户们的ids集合进去,在中间表则一波增加数据)

新增控制器部分

在这里插入图片描述

所用到的sql语句

  • 每次新增都讲see_read(是否已读)值 设为0 ,默认未读状态即可
    在这里插入图片描述

版权声明:本文为EDT777原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。