在介绍系统之前,先说一下技术栈吧。后端用到的是Springboot框架,前端使用的是layui框架,然后前端服务器使用的是nginx,数据库使用的是mysql,利用redis作为缓存服务。在这两大框架基础之上,又引入了shiro作为权限登录校验,使用websocket实现消息的实时推送和接收。
这里,我再顺便介绍一下HelpDesk系统。百度上说:HelpDesk是指IT专业技术人员为了保障IT桌面能够提供正常的功能和服务,而对其进行的一系列的维护活动。它包括对IT桌面的硬件层、基础软件层和应用软件层的维护,主要包括安装、配置、升级、故障诊断和排除等活动。简单的来说就是IT部门分为硬件和软件部分,办公人员的桌面软件或者电脑硬件出现了使用故障,就可以通过HelpDesk向指定的解决人来反馈相关的问题。
现在正式开始介绍系统:
如图所示啊,是一个问题提交的页面,用于提问人向解决人发出问题。由于初始化的时候,加载了许多个人信息,所以我这边做了涂鸦处理。这个页面没什么好说的,除了一个ueditor富文本控件。这个ueditor是百度推出的一款富文本编辑器,支持丰富的处理方式:单图、多图上传,多附件上传等等。之前将layui放在springboot的resource目录下的时候,坑不多。但是一做前后分离,就莫名踩了很多坑。不过结局是美好的[呲牙]。
图二收到问题(处理问题)
如图所示,收到问题和处理问题用的页面几乎一样,所以此处就用一个页面表示。这个页面显示问题的各种信息。比如提交人是谁,解决人是谁,问题进展得怎么样了等等。这边再介绍一个layui的开源插件tableSelect,用于在文本框内显示多个筛选条件,逗号隔开(图中的系统别和问题状态都有用到tableSelect控件)。我觉得这个插件非常不错,解决了checkBox占页面元素过多的问题,一个文本框就能涵盖多个状态了。我个人非常推荐。(PS:如果有更好的不妨说出来一起学习)
图三处理问题
如图所示,点击图二的详情,就能出现弹出层,显示问题的具体信息,然后可以对问题进行回复。此处的答复控件依然选择的是ueditor控件。由于回复的信息要立马通知到对方,所以,此处又引入了websocket知识。可以看到图上我的问题和收到问题的右边都有角标,表示是否有新消息的通知。但是,此处的websocket的控制做的不是太好,可能是我学得太浅了,一直找不到如何解决刷新页面就断开socket连接的问题。这个我后期再修修改改吧。(PS:如果嫌websocket不合适,可以试试ajax轮询,前提是你的规模要小,不然用户一多,服务器开销就太大了)。
图四菜单维护
图五角色维护
图四和图五是画面权限的控制。由于剩下涉及到的知识点的没什么好说的,都是些增删改查、五表权限以及数据库同步等等,这里就不再细说。我唯一要说的一点是关于redis,这个项目中,redis唯一的用处是在于登录的时候存放token。其实这个完全可以放进数据库,而且此项目对加载性能要求并不高,此处只是为了redis而redis,全当我为了学习redis而使用redis(请原谅我以前真的对redis理解不深)。这不禁让我想起现在的微服务,有很多真的是为了微服务而微服务。所以到底哪个合适,还是要自己去研究一遍才清楚。
总结一下吧,这个系统同大多数CMS系统一样,没有什么花里胡哨的东西在里面。唯一的区别是,框架什么的都是自己搭建的,遇到的坑都是实打实的坑,自己一个个解决的,所以也算成长了不少。目前系统还在完善中,等系统完善了,我会发布源码到开源社区。希望对还在学习的朋友有帮助吧(毕竟也是吃了很多他人的免费的软饭[看])。