• 基于springboot的通知反馈系统


    博主主页猫头鹰源码

    博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

    主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

    文末联系获取

    项目介绍: 

    该系统创作于2022年4月,包含详细数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面使用html,具有完整的业务逻辑,适合选题:通知、消息通知、通知反馈、部门信息收集等。

    项目功能:

    1. 系统共分为平台管理员,单位管理员,部门管理员,普通员工,四种角色,平台管理员由数据库内部预设,单位管理员新增员工的时候,可以新增不同角色,比如可以新增部门管理员,也可以新增普通员工
    2. 消息分为两种
    3. 1通知类消息(不需要回复和提交文件) 发布通知信息时要有标题、内容、发布时间、发布人、发送给的相关部门或小组;
    4. 2材料收集类消息(可以回复和提交文件)发布材料收集需求时要有标题、内容、发布时间、发布人、发送给的相关部门或小组、收集材料的名称和说明,截至提交时间;
    5. 平台管理员:
    6. 单位管理员管理:新增单位管理员(不能新增部门管理员),修改,查看,删除
    7. 单位管理:新建单位,删除,修改,查看
    8. 单位管理员:
    9. 个人信息管理:查看个人信息,修改
    10. 部门管理:新建,删除,修改,查看
    11. 部门管理员管理:新增部门管理员,删除部门管理员,修改,查看
    12. 通知类消息管理:发布消息,删除已发布消息,修改消息,查询消息(统计消息哪些人已读未读,并做统计)
    13. 材料收集类消息管理:发布消息,删除已发布消息,修改消息,查询消息
    14. 下载消息中提交的材料
    15. 部门管理员:
    16. 个人信息管理:查看个人信息,修改
    17. 小组管理:增加小组,删除小组,修改小组,查看小组
    18. 普通员工管理:增加本部门员工,修改员工(可以修改所在的小组),删除员工,查看员工列表
    19. 通知类消息管理:发布消息,删除已发布消息,修改消息,查询消息(统计消息哪些人已读未读,并做统计) 一个列表,谁读谁没读
    20. 材料收集类消息管理:发布消息,删除已发布消息,修改消息,查询消息
    21. 下载消息中提交的材料
    22. 普通员工:
    23. 个人信息管理:查看个人信息,部分信息修改(修改姓名年龄性别 不能修改所属部门、小组)
    24. 消息管理:查看(仅查看所属部门消息),材料收集类消息可以回复、上传文件

    数据模型:

    数据库表结构文档:

    系统包含技术:

    后端:springboot、mybatis
    前端:layui,js,css等,html页面
    开发工具:idea
    数据库:mysql 5.7
    JDK版本:jdk1.8

    部分截图说明:

    系统分为多个角色,下面是登录页面

    下面是平台管理员首页

     

    平台管理员可以对单位管理员管理

    平台管理员对单位管理

    部门管理员对部门管理

     部门管理员可以对小组进行管理

    员工管理

     

     部门管理员看通知消息

    部门管理员查看材料收集消息

    员工查看通知消息

     

    部分代码:

     拦截器

    1. @Override
    2. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    3. HttpSession session = request.getSession();
    4. if(session.getAttribute("userInfo") != null){
    5. return true;
    6. }
    7. // 不符合条件的给出提示信息,并转发到主页面
    8. request.setAttribute("msg", "您还没有登录,请先登录!");
    9. request.getRequestDispatcher("/logout").forward(request, response);
    10. //返回true通过,返回false拦截
    11. return false;
    12. }

    部门管理

    1. /**进入列表页面*/
    2. @GetMapping("/department")
    3. public String userIframe(Model model, HttpSession session){
    4. Organ organ = new Organ();
    5. String type = (String)session.getAttribute("type");
    6. if(type.equals("02")){
    7. OrganAdmin organAdmin = (OrganAdmin)session.getAttribute("userInfo");
    8. organ.setId(Integer.parseInt(organAdmin.getOid()));
    9. }
    10. List<Organ> organs = organService.selectByCondition(organ);
    11. model.addAttribute("organs",organs);
    12. return "DepartmentList";
    13. }
    14. /**列表数据*/
    15. @GetMapping("/list")
    16. @ResponseBody
    17. public PageResultVo findDepartment(Department department, Integer limit, Integer page, HttpSession session){
    18. String type = (String)session.getAttribute("type");
    19. if(type.equals("02")){
    20. OrganAdmin organAdmin = (OrganAdmin)session.getAttribute("userInfo");
    21. department.setOid(organAdmin.getOid());
    22. }
    23. PageHelper.startPage(page,limit);
    24. List<Department> departmentList = departmentService.selectByCondition(department);
    25. PageInfo<Department> pages = new PageInfo<>(departmentList);
    26. return JsonData.table(departmentList,pages.getTotal());
    27. }
    28. /**编辑详情*/
    29. @GetMapping("/edit")
    30. @ResponseBody
    31. public Department edit(Model model, String id){
    32. return departmentService.selectById(id);
    33. }
    34. /**编辑*/
    35. @PostMapping("/edit")
    36. @ResponseBody
    37. public JsonData edit(Department department){
    38. List<Department> all = departmentService.findAll();
    39. for(int i=0;i<all.size();i++){
    40. if(all.get(i).getName().equals(department.getName()) && all.get(i).getId()!=department.getId() && all.get(i).getOid().equals(department.getOid())){
    41. return JsonData.fail("部门名称重复,请重试!");
    42. }
    43. }
    44. int a = departmentService.updateById(department);
    45. if (a > 0) {
    46. return JsonData.success(null,"编辑成功!");
    47. } else {
    48. return JsonData.fail("编辑失败");
    49. }
    50. }
    51. /**删除*/
    52. @PostMapping("/del")
    53. @ResponseBody
    54. public JsonData del(String id){
    55. try{
    56. departmentService.deleteById(Integer.parseInt(id));
    57. }catch(Exception ex){
    58. JsonData.fail("出现错误");
    59. }
    60. return JsonData.success(null,"删除成功");
    61. }

    以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

    好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

  • 相关阅读:
    MySQL——库和表的增删改
    Spring源码深度解析(六):Spring事务传播机制详解
    产品周报第38期|阅读总数规则校验功能上线,热榜算法更新,付费问题退款支持原路返回……
    洛谷C++简单题小练习day11—字母转换,分可乐两个小程序
    WPF/C#:显示分组数据的两种方式
    西部数码云快照立大功-助力众多用户解决勒索病毒危机!
    python经典百题之删除指定字母
    测试工程师如何帮助开发域的质量变好
    5.16 加载内核映像文件(2)
    2.继承总结方法
  • 原文地址:https://blog.csdn.net/mtyedu/article/details/126671039