基于Java SpringBoot的前后端分离信息管理系统的设计和实现
前言
当今社会,随着科学技术的发展,以及市场经济的多元化,使人才的流动速度大大增加,因此也对党建工作的管理层面工作带来了空前且复杂的挑战, 从而使得如何高效的开展管理党建工作成为了亟待解决的问题。为此将高速发展的信息科学技术引入到党建工作管理的应用中,力求合理有效的提升全面各项工作的进展,实现以人为本的科学发展思想和意识,是一种高效可实现的方法。 java作为一种面向对象的、可以撰写跨平台应用软件的程序设计语言,其技术具有卓越的通用性、高效性、平台移植性以及安全性,如今已广泛应用于 pc、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等方面,大大方便了人们的生活、工作和娱乐。 而基于java技术的党建工作管理平台,结合了java技术,从而可起到规范党群业务流程,提高党群工作管理效率,对于党群工作定期提醒,以及完 成情况后的及时反馈,有效地提升党群工作管理的标准化程度的作用;进而实现党群工作的网上信息交流和交互办公,图片资料保存与共享等功能。
视频演示
基于java-springboot+vue的前后端分离信息管理系统.mp4
主要功能说明
用户登录、修改密码、首页介绍、数据可视化树状图展示、用户管理、菜单管理、权限控制、角色管理、部门管理、角色管理、组织架构管理、系统sql监控、日志管理、通知公告管理、要闻管理、组织风采管理、资料管理、查看、上传富文本等、和查看下载附件信息。组织发展管理、考试管理以及退出等
功能截图
登陆:根据用户角色权限进行登录、用户角色灵活控制。
系统主页:
用户管理:用户的模糊查询、添加、选择部门、角色和职位等信息、以及修改和删除等
职位管理:职位的模糊查询、添加、权限控制以及修改和删除等
菜单管理:菜单通过角色权限灵活控制、具体到按钮级别
sql监控:
切面日志管理:
组织架构: 组织架构的模糊查询、添加、权限控制以及修改和删除等
通知公告模块:通知公告的模糊查询、添加、权限控制以及修改和删除等。和富文本笔记内容
新闻模块:
组织风采模块:
资料管理模块:
组织发展模块:
在线考试模块:
修改密码模块
主要代码实现
用户登录验证
/** * 登录相关 * * @author lyy * */ @restcontroller public class syslogincontroller extends abstractcontroller { @autowired private sysuserservice sysuserservice; @autowired private sysusertokenservice sysusertokenservice; @autowired private syscaptchaservice syscaptchaservice; /** * 验证码 */ @getmapping("captcha.jpg") public void captcha(httpservletresponse response, string uuid)throws ioexception { response.setheader("cache-control", "no-store, no-cache"); response.setcontenttype("image/jpeg"); //获取图片验证码 bufferedimage image = syscaptchaservice.getcaptcha(uuid); servletoutputstream out = response.getoutputstream(); imageio.write(image, "jpg", out); ioutils.closequietly(out); } /** * 登录 */ @postmapping("/sys/login") public map<string, object> login(@requestbody sysloginform form)throws ioexception { boolean captcha = syscaptchaservice.validate(form.getuuid(), form.getcaptcha()); // if(!captcha){ // return r.error("验证码不正确"); // } //用户信息 sysuserentity user = sysuserservice.querybyusername(form.getusername()); //账号不存在、密码错误 if(user == null || !user.getpassword().equals(new sha256hash(form.getpassword(), user.getsalt()).tohex())) { return r.error("账号或密码不正确"); } //账号锁定 if(user.getstatus() == 0){ return r.error("账号已被锁定,请联系管理员"); } //生成token,并保存到数据库 r r = sysusertokenservice.createtoken(user.getuserid()); return r; } /** * 退出 */ @postmapping("/sys/logout") public r logout() { sysusertokenservice.logout(getuserid()); return r.ok(); }
shiro权限拦截放行:
/** * shiro配置 * * @author lyy */ @configuration public class shiroconfig { @bean("securitymanager") public securitymanager securitymanager(oauth2realm oauth2realm) { defaultwebsecuritymanager securitymanager = new defaultwebsecuritymanager(); securitymanager.setrealm(oauth2realm); securitymanager.setremembermemanager(null); return securitymanager; } @bean("shirofilter") public shirofilterfactorybean shirofilter(securitymanager securitymanager) { shirofilterfactorybean shirofilter = new shirofilterfactorybean(); shirofilter.setsecuritymanager(securitymanager); //oauth过滤 map<string, filter> filters = new hashmap<>(); filters.put("oauth2", new oauth2filter()); shirofilter.setfilters(filters); map<string, string> filtermap = new linkedhashmap<>(); filtermap.put("/webjars/**", "anon"); filtermap.put("/druid/**", "anon"); filtermap.put("/app/**", "anon"); filtermap.put("/sys/login", "anon"); filtermap.put("/swagger/**", "anon"); filtermap.put("/v2/api-docs", "anon"); filtermap.put("/swagger-ui.html", "anon"); filtermap.put("/swagger-resources/**", "anon"); filtermap.put("/captcha.jpg", "anon"); filtermap.put("/aaa.txt", "anon"); filtermap.put("/virtuel/**", "anon"); filtermap.put("/image/**", "anon"); filtermap.put("/**", "oauth2"); shirofilter.setfilterchaindefinitionmap(filtermap); return shirofilter; } @bean("lifecyclebeanpostprocessor") public lifecyclebeanpostprocessor lifecyclebeanpostprocessor() { return new lifecyclebeanpostprocessor(); } @bean public authorizationattributesourceadvisor authorizationattributesourceadvisor(securitymanager securitymanager) { authorizationattributesourceadvisor advisor = new authorizationattributesourceadvisor(); advisor.setsecuritymanager(securitymanager); return advisor; }
前端vue element登录:
<template> <div class="site-wrapper site-page--login"> <div class="site-content__wrapper"> <div class="site-content"> <div class="brand-info"> <h1 class="brand-info__text">信息管理系统</h1> </div> <div class="login-main"> <h3 class="login-title">系统登录</h3> <el-form :model="dataform" :rules="datarule" ref="dataform" @keyup.enter.native="dataformsubmit()" status-icon> <el-form-item prop="username"> <el-input v-model="dataform.username" placeholder="帐号"></el-input> </el-form-item> <el-form-item prop="password"> <el-input v-model="dataform.password" type="password" placeholder="密码"></el-input> </el-form-item> <el-form-item prop="captcha"> <el-row :gutter="20"> <el-col :span="14"> <el-input v-model="dataform.captcha" placeholder="验证码"> </el-input> </el-col> <el-col :span="10" class="login-captcha"> <img :src="captchapath" @click="getcaptcha()" alt=""> </el-col> </el-row> </el-form-item> <el-form-item> <el-button class="login-btn-submit" type="danger" @click="dataformsubmit()">登录</el-button> </el-form-item> </el-form> </div> </div> </div> </div> </template> <script> import { getuuid } from '@/utils' export default { data () { return { dataform: { username: '', password: '', uuid: '', captcha: '' }, datarule: { username: [ { required: true, message: '帐号不能为空', trigger: 'blur' } ], password: [ { required: true, message: '密码不能为空', trigger: 'blur' } ], captcha: [ { required: true, message: '验证码不能为空', trigger: 'blur' } ] }, captchapath: '' } }, created () { this.getcaptcha() }, methods: { // 提交表单 dataformsubmit () { this.$refs['dataform'].validate((valid) => { if (valid) { this.$http({ url: this.$http.adornurl('/sys/login'), method: 'post', data: this.$http.adorndata({ 'username': this.dataform.username, 'password': this.dataform.password, 'uuid': this.dataform.uuid, 'captcha': this.dataform.captcha }) }).then(({data}) => { if (data && data.code === 0) { this.$cookie.set('token', data.token) this.$router.replace({ name: 'home' }) } else { this.getcaptcha() this.$message.error(data.msg) } }) } }) }, // 获取验证码 getcaptcha () { this.dataform.uuid = getuuid() this.captchapath = this.$http.adornurl(`/captcha.jpg?uuid=${this.dataform.uuid}`) } } } </script> <style lang="scss"> .site-wrapper.site-page--login { position: absolute; top: 0; right: 0; bottom: 0; left: 0; //background-color: rgba(38, 50, 56, .6); overflow: hidden; &:before { position: fixed; top: 0; left: 0; z-index: -1; width: 100%; height: 100%; content: ""; background-image: url(~@/assets/img/login_bg.jpg); background-size: cover; } .site-content__wrapper { position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 0; margin: 0; overflow-x: hidden; overflow-y: auto; background-color: transparent; } .site-content { min-height: 100%; padding: 30px 500px 30px 30px; } .brand-info { margin: 220px 100px 0 90px; color: #fff; } .brand-info__text { margin: 0 100px 220px 200px; font-size: 100px; font-weight: 400; text-transform : uppercase; } .brand-info__intro { margin: 10px 0; font-size: 16px; line-height: 1.58; opacity: .6; } .login-main { position: absolute; top: 0; right: 0; padding: 150px 60px 180px; width: 470px; min-height: 100%; background-color: #fff; } .login-title { font-size: 16px; } .login-captcha { overflow: hidden; > img { width: 100%; cursor: pointer; } } .login-btn-submit { width: 100%; margin-top: 38px; } } </style>
主要数据表设计
数据库表结构文档
数据库名:renren-dangyuan
文档版本:v1.0.0
文档描述:数据库表设计描述
表dj_news
表exam
表 file
表inform
表sys_captcha (系统验证码)
表sys_config (系统配置信息表)
表sys_dept (部门管理)
表sys_log (系统日志)
表sys_menu (菜单管理)
表sys_oss (文件上传)
表sys_role (角色)
表sys_role_dept (角色与部门对应关系)
表sys_role_menu (角色与菜单对应关系)
表sys_user (系统用户)
表sys_user_role (用户与角色对应关系)
表sys_user_token (系统用户token)
表tb_user (用户)
以上就是基于java springboot的前后端分离信息管理系统的设计和实现的详细内容,更多关于java springboot 信息管理系统的资料请关注其它相关文章!
上一篇: 红米手机在哪关闭纯净模式?红米手机关闭纯净模式方法
下一篇: 荣耀X10对比魅族18X哪个好?