免费基于springboot的OA自动化办公系统,挺漂亮的

文章介绍了一个基于SpringBoot的OA办公自动化系统,该系统使用Maven管理,前端采用freemarker和Bootstrap,后端结合了jpa、mybatis等技术。登录检查代码展示了用户验证和权限控制的实现。此外,还提供了系统的部分界面代码和源码下载链接。
摘要由CSDN通过智能技术生成

大家好,我是锋哥,看到一个不错的springboot的OA自动化办公系统,分享下哈。

项目介绍

这是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。作为初学springboot的同学是一个很不错的项目,如果想在此基础上面进行OA的增强,也是一个不错的方案。

框架介绍

项目结构

前端

技术名称版本官网
freemarker模板引擎springboot1.5.6.RELEASE集成版本FreeMarker Java Template Engine
Bootstrap前端UI框架3.3.7Bootstrap中文网
Jquery快速的JavaScript框架1.11.3jQuery
kindeditorHTML可视化编辑器4.1.10在线HTML编辑器
My97 DatePicker时间选择器4.8 Beta4My97日期控件官方网站 My97 DatePicker

后端

技术名称版本官网
SpringBootSpringBoot框架1.5.6.RELEASESpring Boot
JPAspring-data-jpa1.5.6.RELEASESpring Data JPA
MybatisMybatis框架1.3.0mybatis – MyBatis 3 | Introduction
fastjsonjson解析包1.2.36GitHub - alibaba/fastjson: FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
pagehelperMybatis分页插件1.0.0MyBatis 分页插件 PageHelper

系统展示

 

部分代码

	/**
	 * 登录检查;
	 * 1、根据(用户名或电话号码)+密码进行查找
	 * 2、判断使用是否被冻结;
	 * @return
	 * @throws UnknownHostException 
	 */
	@RequestMapping(value="logins",method = RequestMethod.POST)
	public String loginCheck(HttpSession session,HttpServletRequest req,Model model) throws UnknownHostException{
		String userName=req.getParameter("userName").trim();
		String password=req.getParameter("password");
		String ca=req.getParameter("code").toLowerCase();
		String sesionCode = (String) req.getSession().getAttribute(CAPTCHA_KEY);
		model.addAttribute("userName", userName);
		if(!ca.equals(sesionCode.toLowerCase())){
			System.out.println("验证码输入错误!");
			model.addAttribute("errormess", "验证码输入错误!");
			req.setAttribute("errormess","验证码输入错误!");
			return "login/login";
		}
		/*
		 * 将用户名分开查找;用户名或者电话号码;
		 * */
		User user=uDao.findOneUser(userName, password);
		if(Objects.isNull(user)){
			System.out.println(user);
			System.out.println("账号或密码错误!");
			model.addAttribute("errormess", "账号或密码错误!");
			return "login/login";
		}
		System.out.println("是否被锁:"+user.getIsLock());
		if(user.getIsLock()==1){
			System.out.println("账号已被冻结!");
			model.addAttribute("errormess", "账号已被冻结!");
			return "login/login";
		}
		Object sessionId=session.getAttribute("userId");
		System.out.println(user);
		if(sessionId==user.getUserId()){
			System.out.println("当前用户已经登录了;不能重复登录");
			model.addAttribute("hasmess", "当前用户已经登录了;不能重复登录");
			session.setAttribute("thisuser", user);
			return "login/login";
		}else{
			session.setAttribute("userId", user.getUserId());
			Browser browser = UserAgent.parseUserAgentString(req.getHeader("User-Agent")).getBrowser();
			Version version = browser.getVersion(req.getHeader("User-Agent"));
			String info = browser.getName() + "/" + version.getVersion();
			String ip=InetAddress.getLocalHost().getHostAddress();
			/*新增登录记录*/
			ulService.save(new LoginRecord(ip, new Date(), info, user));
		}
		return "redirect:/index";
	}
<!-- 外部通讯录 -->
<!--盒子头-->
<div class="box-header">
	<h3 class="box-title">${(outtype)!'外部通讯录'}</h3>
	<a class="btn btn-sm btn-default thisrefresh" href="javascript:void(0);" title="刷新" style="padding: 5px;margin-top: -8px;"><span
			class="glyphicon glyphicon-refresh"></span></a>
	<div class="box-tools">
		<div class="input-group" style="width: 150px;">
			<input type="text" class="form-control input-sm baseKey" placeholder="查找..." value="${(baseKey)!''}"/>
			<div class="input-group-btn">
				<a class="btn btn-sm btn-default baseKeySumbit"> 
					<span class="glyphicon glyphicon-search"></span>
				</a>
			</div>
		</div>
	</div>
</div>
<!--盒子身体-->
<div class="box-body no-padding">
	<div class="table-responsive">
		<table class="table table-hover table-striped">
			<tr>
				<th scope="col">分类</th>
				<th scope="col">所属公司</th>
				<th scope="col">头像</th>
				<th scope="col">姓名</th>
				<th scope="col">性别</th>
				<th scope="col">Tel</th>
				<th scope="col">E-mail</th>
				<th scope="col">操作</th>
			</tr>
			<#if directors?size gt 0>
			<#list directors as d>
			<tr>
				<#if d.catelog_name?? & d.catelog_name!="">
					<td><span>${(d.catelog_name)!'外部通讯录'}</span></td>
				<#else>
					<td><span>外部通讯录</span></td>
				</#if>
				
				<td><span>${(d.companyname)!''}</span></td>
				<td><a href="#"> <img src="/image/${(d.image_path)!'/timg.jpg'}" class="img-circle"
						style="width: 25px; height: 25px;">
				</a></td>
				<td><span>${(d.user_name)!''}</span></td>
				<td><span>
				<#if d.sex=="男">
					<img src="images/male.png" alt="男" style="width: 20px;height: 20px" />
				<#else>
					<img src="images/female.png" alt="女" style="width: 20px;height: 20px" />
				</#if>
				</span></td>
				<td><span>${d.phone_number}</span></td>
				<td><span>${(d.email)!''}</span></td>
				<td style="width: 252px;">
					<a href="javascript:void(0);" class="label xinzeng thisshare" directorId="${d.director_id}"> 
						<span class="glyphicon glyphicon-new-window"></span> 分享
					</a> 
					<a href="javascript:void(0);" director="${d.director_id}" class="label xiugai outlookthis">
						<span class="glyphicon glyphicon-search"></span> 查看
					</a> 
					<a did="${d.director_users_id}"  href="javascript:void(0);" class="label shanchu thisdelete">
						<span class="glyphicon glyphicon-remove"></span> 删除
					</a>
					<#if userId==d.user_id>
					<a title="修改" did="${d.director_id}" href="javascript:void(0);" class="label xiugai thischange">
						<span class="glyphicon glyphicon-edit"></span> 修改
					</a> 
					<#else>
					<a title="移动" 
					thisdid="${(d.director_id)!''}" 
					thisuserName="${(d.user_name)!''}" 
					thisimgpath="images/touxiang/${(d.image_path)!'timg.jpg'}"
					 thisphoneNumber="${d.phone_number}"
					 thissex="${d.sex}"
					 thisemail="${(d.email)!''}"
					 thiscompany="${(d.companyname)!''}"
					   href="javascript:void(0);" class="label sheding thismove">
						<span class="glyphicon glyphicon-retweet"></span> 移动
					</a>
					</#if>
				</td>
			</tr>
			</#list>
			<#else>
				<tr>
					<td colspan="7" style="text-align: center;background: #eee;">没能找到联系人~~~</td>
				</tr>
			</#if>
		</table>
	</div>
</div>
<!--盒子尾-->
<#include "/common/pagingmybatis.ftl"/>
<#include "/address/sharemodal.ftl"/>

源码下载

0积分免费下载:SpringBoot OA源码下载地址
 

热门推荐

免费分享一套 SpringBoot + Vue + ElementUI 的人力资源管理系统,挺漂亮的_java1234_小锋的博客-CSDN博客

免费分享一个SpringBoot鲜花商城管理系统,很漂亮的_java1234_小锋的博客-CSDN博客

我写了一套SpringBoot+SpringSecurity+Vue权限系统 实战课程,免费分享给CSDN的朋友们_springboot2+springsecurity+vue项目实战_java1234_小锋的博客-CSDN博客

我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们_java1234_小锋的博客-CSDN博客

springboot+vue前后端音乐网系统,挺漂亮的_简单的音乐播放前后端_java1234_小锋的博客-CSDN博客

免费分享一个springboot+vue校园宿舍管理系统,挺漂亮的_java1234_小锋的博客-CSDN博客

免费分享一个SSM商城管理系统,很漂亮的_java1234_小锋的博客-CSDN博客

  • 40
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值