0


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

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

项目介绍

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

框架介绍

项目结构

前端
技术名称版本官网freemarker模板引擎springboot1.5.6.RELEASE集成版本FreeMarker Java Template EngineBootstrap前端UI框架3.3.7Bootstrap中文网Jquery快速的JavaScript框架1.11.3jQuerykindeditorHTML可视化编辑器4.1.10在线HTML编辑器My97 DatePicker时间选择器4.8 Beta4My97日期控件官方网站 My97 DatePicker
后端
技术名称版本官网SpringBootSpringBoot框架1.5.6.RELEASESpring BootJPAspring-data-jpa1.5.6.RELEASESpring Data JPAMybatisMybatis框架1.3.0mybatis – MyBatis 3 | Introductionfastjsonjson解析包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博客


本文转载自: https://blog.csdn.net/caoli201314/article/details/129131068
版权归原作者 java1234_小锋 所有, 如有侵权,请联系我们删除。

“免费基于springboot的OA自动化办公系统,挺漂亮的”的评论:

还没有评论