Springboot与vue实例讲解实现前后端分离的人事管理系统

目录
  • 一,项目简介
  • 二,环境介绍
  • 三,系统展示
  • 四,核心代码展示
  • 五,项目总结

一,项目简介

系统是前后端分离的项目,直接启动Springboot应用程序类后,再启动前端工程访问即可。主要实现了企业的人事管理功能,主要包含员工管理、薪资管理、职位管理、权限管理、网盘文件分享管理等模块。

系统亮点:使用REDIS进行数据缓存,优化查询性能;使用分布式文件系统进行文件存储服务;基于Springboot+vue实现前后端分离开发

二,环境介绍

语言环境:Java: jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat: tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:Element UI 、Vue、Axios、SpringBoot、MyBatis、MySQL、Redis、FastDFS(或OSS)、Tomcat8.5.31

三,系统展示

下面展示一下系统的基本功能:

用户登陆:

系统主界面:

员工管理:

高级搜索

员工奖惩管理

添加奖惩

工资套账(工资标准)管理

员工工资管理

系统管理—部门管理

系统管理--职位管理

系统管理—职称管理

文件管理:将文件存储在分布式文件服务Fastdfs或阿里云OSS上,可以在系统中自行配置

以上是本系统的基本功能功能展示,本系统所使用技术比较先进,功能比较完整,界面美观大方,适合毕业设计使用。

四,核心代码展示

package com.me.controller;
import com.me.pojo.Department;
import com.me.pojo.RespBean;
import com.me.service.DepartmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class DepartmentController {
    @Autowired
    DepartmentService departmentService;
    @GetMapping("/dep/deps")
    public RespBean getAllDepartments() {
        List<Department> list = departmentService.getAllDepartments();
//        for (Department department : list) {
//            System.out.println(department);
//        }
        return RespBean.ok("AllDepartments", list);
    }
    @PostMapping("/dep/add")
    public RespBean addDep(@RequestBody Department dep) {
        System.out.println(dep);
        departmentService.addDep(dep);
        if (dep.getResult() == 1) {
            return RespBean.ok("添加成功", dep);
        }
        return RespBean.error("添加失败");
    }
    @DeleteMapping("/dep/{id}")
    public RespBean deleteDepById(@PathVariable Integer id) {
        Department dep = new Department();
        dep.setId(id);
        departmentService.deleteDepById(dep);
        if (dep.getResult() == -2) {
            return RespBean.error("该部门下有子部门,删除失败");
        } else if (dep.getResult() == -1) {
            return RespBean.error("该部门下有员工,删除失败");
        } else if (dep.getResult() == 1) {
            return RespBean.ok("删除成功");
        }
        return RespBean.error("删除失败");
    }
}
package com.me.controller;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.me.pojo.*;
import com.me.service.DepartmentService;
import com.me.service.EmployeeService;
import com.me.service.JobLevelService;
import com.me.service.PositionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
@RestController
public class EmpController {
    @Autowired
    EmployeeService employeeService;
    @Autowired
    PositionService positionService;
    @GetMapping("/emp/query")
    public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, Employee employee,  Date[] beginDateScope) {
//        System.out.println(employee);
        return employeeService.getEmployeeByPage(page, size, employee, beginDateScope);
    }
    @PostMapping("/emp/add")
    public RespBean addEmp(@RequestBody Employee employee) {
//        System.out.println(employee);
        if (employeeService.addEmp(employee) == 1) {
            return RespBean.ok("添加成功!");
        }
        return RespBean.error("添加失败!");
    }
    @PutMapping("/emp/update")
    public RespBean updateEmp(@RequestBody Employee employee) {
//        System.out.println(employee);
        if (employeeService.updateEmp(employee) == 1) {
            return RespBean.ok("更新成功!");
        }
        return RespBean.error("更新失败!");
    }
    @DeleteMapping("/emp/delete/{id}")
    public RespBean deleteEmpByEid(@PathVariable Integer id) {
        if (employeeService.deleteEmpByEid(id) == 1) {
            return RespBean.ok("删除成功!");
        }
        return RespBean.error("删除失败!");
    }
    @GetMapping("/emp/getAllPositions")
    public RespBean getAllPositions() {
        return RespBean.ok("positions-",positionService.getAllPositions()) ;
    }
    @GetMapping("/emp/nations")
    public RespBean getAllNations() {
        return RespBean.ok("nations-",employeeService.getAllNations());
    }
    @GetMapping("/emp/politicsstatus")
    public RespBean getAllPoliticsstatus() {
        return RespBean.ok("politicsss-",employeeService.getAllPoliticsstatus()) ;
    }
    @Autowired
    private JobLevelService jobLevelService;
    @GetMapping("/emp/joblevels")
    public RespBean getAllJobLevels() {
        return RespBean.ok("joblevels-",jobLevelService.getAllJobLevels());
    }
    @Autowired
    private DepartmentService departmentService;
    @GetMapping("/emp/deps")
    public RespBean getAllDepartments() {
        List<Department> list = departmentService.getAllDepartments();
//        for (Department department : list) {
//            System.out.println(department);
//        }
        return RespBean.ok("AllDepartments", list);
    }
}
package com.me.controller;
import com.me.pojo.Employee;
import com.me.pojo.Employeeec;
import com.me.pojo.RespBean;
import com.me.pojo.RespPageBean;
import com.me.service.EmployeeecService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
public class EmployeeecController {
    @Autowired
    EmployeeecService employeeecService;
    @GetMapping("/ec/{keyword}")
    public RespBean selectByNameOrWorkId(@PathVariable String keyword){
        System.out.println(keyword);
        return RespBean.ok("获取到-",employeeecService.selectByNameOrWorkId(keyword));
    }
    @DeleteMapping("/ec/{id}")
    public RespBean deleteById(@PathVariable int id){
        System.out.println(id);
        if(employeeecService.deleteById(id)==1){
            return RespBean.ok("删除成功");
        }
        return RespBean.error("失败");
    }
    @PostMapping("/ec/add")
    public RespBean add(@RequestBody Employeeec employeeec){
        System.out.println(employeeec);
        if(employeeecService.insertEc(employeeec)==1){
            return RespBean.ok("添加成功");
        }
        return RespBean.error("失败");
    }
    @PutMapping("/ec/update")
    public RespBean put(@RequestBody Employeeec employeeec){
        System.out.println(employeeec);
        if(employeeecService.updateEc(employeeec)==1){
            return RespBean.ok("添加成功");
        }
        return RespBean.error("失败");
    }
}
package com.me.controller;
import com.me.pojo.RespBean;
import com.me.service.FileService;
import com.me.util.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@RestController
public class FileController {
    @Autowired
    FileService fileService;
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @PostMapping("/file/upload")
    public RespBean updateFile(MultipartFile file,int id) {
        System.out.println(id);
        System.out.println(MD5Util.getMultiFileMd5(file));
        if(fileService.uploadFile(file,id)){
            return RespBean.ok("上传成功");
        }
        return RespBean.error("图片过大或者格式不对");
    }
    @DeleteMapping("/file/{id}")
    public RespBean deleteById(@PathVariable int id){
//        System.out.println(id);
        if(fileService.deleteById(id)){
            return RespBean.ok("删除成功");
        }
        return RespBean.error("删除失败");
    }
    @GetMapping("/file/getAll/{id}")
    public RespBean getAll(@PathVariable String id){
        return RespBean.ok("files-",fileService.getAllHrFiles(id));
    }
    @GetMapping("/file/getLoginHrId")
    public RespBean getHrId(HttpServletRequest request){
        String token = request.getHeader("token");
        String s = stringRedisTemplate.opsForValue().get("id"+token);
        return RespBean.ok("获取到用户id",s);
    }
}
package com.me.controller;
import com.me.pojo.Hr;
import com.me.pojo.RespBean;
import com.me.service.HrService;
import org.csource.fastdfs.StorageClient1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@RestController
public class HrController {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Autowired
    private HrService hrService;
    @GetMapping("/hr/getLoginUser")
    public RespBean getLoginUser(HttpServletRequest request){
        String token = request.getHeader("token");
        String s = stringRedisTemplate.opsForValue().get(token);
//        System.out.println("getLoginUser"+s);
        Hr hr = hrService.loadUserByUsername(s);
        return RespBean.ok("获取到用户",hr);
    }
    @PutMapping("/hr/pass")
    public RespBean updateHrPasswd(@RequestBody Map<String, Object> info,HttpServletRequest request) {
        String oldpass = (String) info.get("oldpass");
        String pass = (String) info.get("pass");
        Integer hrid = (Integer) info.get("hrid");
        System.out.println(hrid+pass);
        if (hrService.updateHrPasswd(oldpass, pass, hrid)) {
            //修改密码后需要重新登录
            String token = request.getHeader("token");
            Boolean b = stringRedisTemplate.delete(token);
            return RespBean.ok("更新成功!请重新登录!");
        }
        return RespBean.error("更新失败!");
    }
    @PutMapping("/hr/info")
    public RespBean updateHr(@RequestBody Hr hr) {
        if (hrService.updateHr(hr) == 1) {
            return RespBean.ok("更新成功!");
        }
        return RespBean.error("更新失败!");
    }
    @PostMapping("/hr/userface")
    public RespBean updateHrUserface(MultipartFile file, Integer id) {
        System.out.println("face    "+id);
       if(hrService.updateHrUserface(file,id)){
           return RespBean.ok("更新成功!");
       }
       return RespBean.error("图片过大或者格式不对");
    }
}

五,项目总结

项目采用springboot+vue实现前后端分离的项目开发,功能简洁大方,另外使用了redis缓存数据库和oss分布式文件存储服务,是项目的一大亮点。

到此这篇关于Springboot与vue实例讲解实现前后端分离的人事管理系统的文章就介绍到这了,更多相关Springboot人事管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java实战之酒店人事管理系统的实现

    目录 一.项目运行 二.效果图 三.核心代码 用户管理注册登录控制层 房间管理控制层 订单管理控制层 角色管理控制层 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax 等等 二.效果图 三.核心代码 用户管理

  • Springboot与vue实例讲解实现前后端分离的人事管理系统

    目录 一,项目简介 二,环境介绍 三,系统展示 四,核心代码展示 五,项目总结 一,项目简介 系统是前后端分离的项目,直接启动Springboot应用程序类后,再启动前端工程访问即可.主要实现了企业的人事管理功能,主要包含员工管理.薪资管理.职位管理.权限管理.网盘文件分享管理等模块. 系统亮点:使用REDIS进行数据缓存,优化查询性能:使用分布式文件系统进行文件存储服务:基于Springboot+vue实现前后端分离开发 二,环境介绍 语言环境:Java: jdk1.8 数据库:Mysql:

  • Vue结合Springboot实现用户列表单页面(前后端分离)

    目录 用户列表页面开发 项目介绍 1.前端html页面编写 2.springboot框架搭建 2.1.项目创建 2.2.连接数据库 2.3.项目完整依赖 3.编写entity层 4.查询用户信息 4.1.后端代码编写 4.2.前端代码编写 5.添加用户信息 5.1.后端代码编写 5.2.前端代码编写 6.修改用户信息 6.1.后端代码 6.2.前端代码 7.删除用户信息 7.1.后端代码 7.2.前端代码 用户列表页面开发 项目介绍 用户列表页面开发,可以实现简单的查询,删除,修改,和添加用户信

  • SpringBoot+JSON+AJAX+ECharts+Fiddler实现前后端分离开发可视化

    目录 0x01 新建SpringBoot项目 1. 新建maven工程 2. 编写代码 3. 代码讲解 0x02 JSON与AJAX结合 1. 编写html界面 2. 编写访问界面方法 3. 代码讲解 0x03 意外惊喜 1. 是彩蛋啊 2. 是又一个彩蛋啊 0xFF 总结 0x01 新建SpringBoot项目 1. 新建maven工程 ps:在上一教程的基础上操作,就不用新建项目了,请参考文章:SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇) 2. 编写代码

  • 如何利用Python+Vue实现简单的前后端分离

    目录 准备工作 前端 后端 数据库 总结 准备工作 安装Node环境 安装Python环境 注意:项目整个过程需要从后往前,即先数据库->后端->前端:启动流程也是先启动后端项目,再启动前端项目 前端 开发工具:Visual Studio Code(推荐).WebStorm 打开cmd,安装Vue脚手架,命令如下: npm install -g @vue/cli 创建Vue2项目,名为vue-axios vue create vue-axios 选择Manually select featur

  • 详解vue.js+UEditor集成 [前后端分离项目]

    首先,谈下这篇文章中的前后端所涉及到的技术框架内容. 虽然是后端的管理项目,但整体项目,是采用前后端分离的方式完成,这样做的目的也是产品化的需求: 前端,vue+vuex+vue router+webpack+elementUI的方案完成框架的搭建,其中用到了superUI来作为后端登陆之后的主页面框架,中间集成vue的大型单页应用: 后端,springboot+spring+springmvc+spring serurity+mybatis+maven+redis+dubbo +zookeep

  • vue+mock.js实现前后端分离

    之前都是介绍在普通项目中使用mock.js,那么本次就来介绍一下在vue中使用mock.js实现前后端分离. 安装: npm install mockjs 这里先写个小案例介绍一下具体使用,写法不规范,仅供参考. 然后案例讲完后我们讲具体的规范使用 那么一起来看看这个案例吧: <script> import Mock from "mockjs" export default { name: "FunctionsDbSource", methods:{ /

  • 详解Vue微信授权登录前后端分离较为优雅的解决方案

    微信授权登录是一个非常常见的场景,利用微信授权登录,我们可以很容易获取用户的一些信息,通过用户对公众号的唯一openid从而建立数据库绑定用户身份. 微信授权登录的机制这里不做详述,微信官方文档已有详述,简述就是通过跳转微信授权的页面,用户点击确认后,微信会跳到回调页面,此时回调页面url上会携带code参数,通过code参数,后端可以拿code换取拥护openid,或者用户信息 在vue项目中,通常是一个SPA应用,即所有的页面都是同一个html,通常现在开发也是前后端彻底分离的,vue打包后

  • nginx+vue.js实现前后端分离的示例代码

    1.nginx 是一个高性能的HTTP和反向代理服务器,常用于分布式服务器管理. 它常用于做负载均衡(通过调用多台服务器达到此目的) 静态资源输出更快,可以对资源实现gzip压缩后输出(这也是本文为什么用它做静态资源访问的一个重要原因) 适合解决跨域问题和反向代理(因为谁也不想看到在本域名下看到访问其他域名的情况发生,跨域可导致csrf攻击,这是本文用它的第二个原因) 占用内存少,秒启,能快速切换结点,防止宕机 2.es6 是ECMAScript的第六个版本,如果想要学好vue.js等js框架,

  • FastApi+Vue+LayUI实现前后端分离的示例代码

    目录 前言 项目设计 后端 前端 运行项目 Q&A 前言 在前面的Api开发中,我们使用FastApi已经可以很好的实现.但是实际使用中,我们通常建议前后端项目分离.今天我们就使用FastApi+Vue+LayUI做一个前后端分离的Demo. 项目设计 后端 后端我们采用FastApi在新的test视图中,定义一个路由,并将其注册到app中,并且在test视图中定义一个接口,实现模拟从数据库读取数据供前端调用渲染. 代码 test.py from fastapi import FastAPI,D

  • SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法

    当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异.笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方案,希望这个系列能够给小伙伴一些帮助.本系列文章并不是手把手的教程,主要介绍了核心思路并讲解了核心代码,完整的代码小伙伴们可以在GitHub上star并clone下来研究.另外,原本计划把项目跑起来放到网上供小伙伴们查看,但是之前买服务器为了省钱,内存只有512M,两个应用跑不起来(已经有一个V部落开

随机推荐