1.章节介绍

前一篇介绍了项目的表结构设计,这一篇编写后端API,需要的朋友可以拿去自己定制。:)

2.获取源码

源码是捐赠方式获取,详细请QQ联系我 :)!

3.项目截图

登录页

列表操作

动态图

后端接口设计

登录接口

@RestController
@RequestMapping("/api")
public class LoginController { @Autowired
private UserService userService; @PostMapping("/login")
public Result<LoginInfo> login(@RequestBody User user, HttpSession session){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("username",user.getUsername());
wrapper.eq("password",user.getPassword());
User entity = userService.getOne(wrapper); if (entity == null){
return ResultUtil.fail("用户名密码错误!");
}
else {
session.setAttribute("user",entity);
LoginInfo loginInfo = new LoginInfo(entity.getUsername(), entity.getNickname(), "eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE2MTAzNDg3MjYsImV4cCI6MTYxMDQzNTEyNn0");
return ResultUtil.ok(loginInfo);
}
} @GetMapping("logout")
public Result<String> logout(HttpServletRequest request){
request.getSession().removeAttribute("user");
return ResultUtil.ok("注销成功");
}
}

用户接口

@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private UserService userService; @GetMapping("/list")
public Result<IPage<User>> list(@RequestParam(required = false) String query,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(query)){
queryWrapper.like("username",query);
} Page<User> page = new Page<>(pageNo,pageSize); IPage<User> pageResult = userService.page(page, queryWrapper); // 设置总记录数
pageResult.setTotal(userService.count(queryWrapper)); return ResultUtil.ok(pageResult);
} @PostMapping("/removes")
public Result<String> remove(@RequestBody List<Integer> ids){
userService.removeByIds(ids);
return ResultUtil.ok();
} @PostMapping("/remove/{id}")
public Result<String> remove(@PathVariable Integer id){
userService.removeById(id);
return ResultUtil.ok();
} @PostMapping("/modify")
public Result<String> save(@RequestBody User entity){
userService.saveOrUpdate(entity);
return ResultUtil.ok();
} @GetMapping("/{id}")
public Result<User> get(@PathVariable Integer id){
return ResultUtil.ok(userService.getById(id));
} }

院系接口

@RestController
@RequestMapping("/api/dept")
public class DeptController {
@Autowired
private DeptService deptService; @GetMapping("/listAll")
public Result<List<Dept>> listAll(){
List<Dept> list = deptService.list(null);
return ResultUtil.ok(list);
} @GetMapping("/list")
public Result<IPage<Dept>> list(@RequestParam(required = false) String query,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(query)){
queryWrapper.like("dept_name",query);
} Page<Dept> page = new Page<>(pageNo,pageSize); IPage<Dept> pageResult = deptService.page(page, queryWrapper); // 设置总记录数
pageResult.setTotal(deptService.count(queryWrapper)); return ResultUtil.ok(pageResult);
} @PostMapping("/removes")
public Result<String> remove(@RequestBody List<Integer> ids){
deptService.removeByIds(ids);
return ResultUtil.ok();
} @PostMapping("/remove/{id}")
public Result<String> remove(@PathVariable Integer id){
deptService.removeById(id);
return ResultUtil.ok();
} @PostMapping("/modify")
public Result<String> save(@RequestBody Dept entity){
deptService.saveOrUpdate(entity);
return ResultUtil.ok();
} @GetMapping("/{id}")
public Result<Dept> get(@PathVariable Integer id){
return ResultUtil.ok(deptService.getById(id));
} }

专业接口

@RestController
@RequestMapping("/api/major")
public class MajorController {
@Autowired
private MajorService majorService; @GetMapping("/list")
public Result<IPage<Major>> list(@RequestParam(required = false) String query,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
QueryWrapper<Major> queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(query)){
queryWrapper.like("major_name",query);
} Page<Major> page = new Page<>(pageNo,pageSize); IPage<Major> pageResult = majorService.listPage(page, query); // 设置总记录数
pageResult.setTotal(majorService.count(queryWrapper)); return ResultUtil.ok(pageResult);
} @PostMapping("/removes")
public Result<String> remove(@RequestBody List<Integer> ids){
majorService.removeByIds(ids);
return ResultUtil.ok();
} @PostMapping("/remove/{id}")
public Result<String> remove(@PathVariable Integer id){
majorService.removeById(id);
return ResultUtil.ok();
} @PostMapping("/modify")
public Result<String> save(@RequestBody Major entity){
majorService.saveOrUpdate(entity);
return ResultUtil.ok();
} @GetMapping("/{id}")
public Result<Major> get(@PathVariable Integer id){
return ResultUtil.ok(majorService.getById(id));
}
}

班级接口

@RestController
@RequestMapping("/api/grade")
public class GradeController {
@Autowired
private GradeService gradeService; @GetMapping("/listAll")
public Result<List<Grade>> listAll(){
return ResultUtil.ok(gradeService.list(null));
} @GetMapping("/list")
public Result<IPage<Grade>> list(@RequestParam(required = false) String query,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
QueryWrapper<Grade> queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(query)){
queryWrapper.like("grade_name",query);
} Page<Grade> page = new Page<>(pageNo,pageSize); IPage<Grade> pageResult = gradeService.listPage(page, query); // 设置总记录数
pageResult.setTotal(gradeService.count(queryWrapper)); return ResultUtil.ok(pageResult);
} @PostMapping("/removes")
public Result<String> remove(@RequestBody List<Integer> ids){
gradeService.removeByIds(ids);
return ResultUtil.ok();
} @PostMapping("/remove/{id}")
public Result<String> remove(@PathVariable Integer id){
gradeService.removeById(id);
return ResultUtil.ok();
} @PostMapping("/modify")
public Result<String> save(@RequestBody Grade entity){
gradeService.saveOrUpdate(entity);
return ResultUtil.ok();
} @GetMapping("/{id}")
public Result<Grade> get(@PathVariable Integer id){
return ResultUtil.ok(gradeService.getById(id));
} }

教师接口

@RestController
@RequestMapping("/api/teacher")
public class TeacherController {
@Autowired
private TeacherService teacherService; @GetMapping("/listAll")
public Result<List<Teacher>> listAll(){
List<Teacher> list = teacherService.list(null);
return ResultUtil.ok(list);
} @GetMapping("/list")
public Result<IPage<Teacher>> list(@RequestParam(required = false) String query,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(query)){
queryWrapper.like("teacher_name",query);
} Page<Teacher> page = new Page<>(pageNo,pageSize); IPage<Teacher> pageResult = teacherService.page(page, queryWrapper); // 设置总记录数
pageResult.setTotal(teacherService.count(queryWrapper)); return ResultUtil.ok(pageResult);
} @PostMapping("/removes")
public Result<String> remove(@RequestBody List<Integer> ids){
teacherService.removeByIds(ids);
return ResultUtil.ok();
} @PostMapping("/remove/{id}")
public Result<String> remove(@PathVariable Integer id){
teacherService.removeById(id);
return ResultUtil.ok();
} @PostMapping("/modify")
public Result<String> save(@RequestBody Teacher entity){
teacherService.saveOrUpdate(entity);
return ResultUtil.ok();
} @GetMapping("/{id}")
public Result<Teacher> get(@PathVariable Integer id){
return ResultUtil.ok(teacherService.getById(id));
}
}

学生接口

@RestController
@RequestMapping("/api/student")
public class StudentController {
@Autowired
private StudentService studentService; @Autowired
private GradeService gradeService; @GetMapping("/list")
public Result<IPage<Student>> list(@RequestParam(required = false) String query,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(query)){
queryWrapper.like("student_name",query);
} Page<Student> page = new Page<>(pageNo,pageSize); IPage<Student> pageResult = studentService.listPage(page, query); // 设置总记录数
pageResult.setTotal(studentService.count(queryWrapper)); return ResultUtil.ok(pageResult);
} @PostMapping("/removes")
public Result<String> remove(@RequestBody List<Integer> ids){
studentService.removeByIds(ids);
return ResultUtil.ok();
} @PostMapping("/remove/{id}")
public Result<String> remove(@PathVariable Integer id){
studentService.removeById(id);
return ResultUtil.ok();
} @PostMapping("/modify")
public Result<String> save(@RequestBody Student entity){
studentService.saveOrUpdate(entity);
return ResultUtil.ok();
} @GetMapping("/{id}")
public Result<Student> get(@PathVariable Integer id){
return ResultUtil.ok(studentService.getById(id));
} //接受文件上传
@RequestMapping("/upload")
@ResponseBody
public Result<String> uploadFile(MultipartFile file, HttpServletResponse response) {
//解析excel文件
List<ArrayList<String>> rows = ExcelUtil.analysis(file);
List<Student> list = new ArrayList<>();
if(rows.size()>0){
//2.插入数据
Student entity = null;
int size=0;
String gradeName; // 班级名称
Integer gradeId;
for (int i = 0;i<rows.size();i++){
entity = new Student();
List<String> row = rows.get(i);
size = row.size(); // 不足9个列的 补全
for (int j = size; j < 9; j++) {
row.add("");
} // 学号
entity.setStudentNo(row.get(0));
// 姓名
entity.setStudentName(row.get(1));
entity.setGender(row.get(2).equals("女")?"F":"M");
entity.setIdno(row.get(3));
entity.setPhone(row.get(4));
entity.setAddress(row.get(5));
gradeName = row.get(6);
gradeId = getGradeIdByName(gradeName);
if(gradeId == null){
continue;
}
entity.setGradeId(gradeId);
entity.setEnrollDate(DateUtil.format(row.get(7),"yyyy-MM-dd"));
entity.setRemark(row.get(8)); list.add(entity);
}
} studentService.saveBatch(list); return ResultUtil.ok("导入成功!");
} /**
* 导出
* @param response
* @throws Exception
*/
@GetMapping("/export")
public void export(HttpServletResponse response) throws Exception{
// 创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建sheet
HSSFSheet sheet = workbook.createSheet("sheet1");
String fileName = "学生列表.xls"; // 设置要导出的文件的名字
// 获取数据集合
List<Student> list = studentService.list(null);
// 生成标题行
HSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("序号");
row.createCell(1).setCellValue("学号");
row.createCell(2).setCellValue("姓名");
row.createCell(3).setCellValue("性别");
row.createCell(4).setCellValue("身份证");
row.createCell(5).setCellValue("联系方式");
row.createCell(6).setCellValue("家庭地址");
row.createCell(7).setCellValue("班级");
row.createCell(8).setCellValue("入学日期");
row.createCell(9).setCellValue("备注"); Student entity=null;
for (int i = 0; i < list.size(); i++) {
entity = list.get(i);
row = sheet.createRow(i+1); // 从第2行开始填充数据
// 序号
row.createCell(0).setCellValue(String.valueOf(i+1));
row.createCell(1, CellType.STRING).setCellValue(entity.getStudentNo());
row.createCell(2,CellType.STRING).setCellValue(entity.getStudentName());
row.createCell(3).setCellValue(entity.getGender().equals("F")?"女":"男");
row.createCell(4).setCellValue(entity.getIdno());
row.createCell(5).setCellValue(entity.getPhone());
row.createCell(6).setCellValue(entity.getAddress());
row.createCell(7,CellType.STRING).setCellValue(getGradeNameById(entity.getGradeId()));
row.createCell(8,CellType.STRING).setCellValue(DateUtil.format(entity.getEnrollDate(),"yyyy-MM-dd"));
row.createCell(9).setCellValue(entity.getRemark());
} response.setContentType("application/octet-stream");
response.setHeader("Content-disposition",
"attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
response.flushBuffer(); workbook.write(response.getOutputStream());
} private Integer getGradeIdByName(String gradeName){
QueryWrapper<Grade> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("grade_name", gradeName);
Grade one = gradeService.getOne(queryWrapper);
if(one == null){
return null;
}else{
return one.getId();
}
} private String getGradeNameById(Integer gradeId){
Grade one = gradeService.getById(gradeId);
if(one == null){
return null;
}else{
return one.getGradeName();
}
} }

Vue+SpringBoot+ElementUI实战学生管理系统-4.后端API编写的更多相关文章

  1. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑

    (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...

  2. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(一): 搭建基本环境、整合 Swagger、MyBatisPlus、JSR303 以及国际化操作

    相关 (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y- ...

  3. Vue+SpringBoot项目实战(一) 搭建环境

    GitHub 地址: https://github.com/dongfanger/sprint-backend https://github.com/dongfanger/sprint-fronten ...

  4. vue.js+element-ui

    git地址:https://github.com/jerry9022/LitAdmin vue.js+element-ui 做后台管理系统 太方便了

  5. vue+springboot前后端分离实现单点登录跨域问题处理

    最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的.因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统.那就意味着做单点登 ...

  6. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  7. Vue + Element-ui实现后台管理系统(2)---项目搭建 + ⾸⻚布局实现

    项目搭建 + ⾸⻚布局实现 上篇对该项目做了个总述 :Vue + Element-ui实现后台管理系统(1) --- 总述 这篇主要讲解 项目搭建 + 后台⾸⻚布局实现 : 整体效果 后台首页按布局一 ...

  8. Vue Springboot (包括后端解决跨域)实现登录验证码功能详细完整版

    利用Hutool 基于Vue.ElementUI.Springboot (跨域)实现登录验证码功能 前言 一.Hutool是什么? 二.下面开始步入正题:使用步骤 1.先引入Hutool依赖 2.控制 ...

  9. .Net Core+Vue.js+ElementUI 实现前后端分离

    .Net Core+Vue.js+ElementUI 实现前后端分离 Tags: Vue 架构 前端采用:Vue.js.Element-UI.axios 后端采用:.Net Core Mvc 本项目是 ...

  10. 【笔记】vue+springboot前后端分离实现token登录验证和状态保存的简单实现方案

    简单实现 token可用于登录验证和权限管理. 大致步骤分为: 前端登录,post用户名和密码到后端. 后端验证用户名和密码,若通过,生成一个token返回给前端. 前端拿到token用vuex和lo ...

随机推荐

  1. 【面试题精讲】JavaOptional用法

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Java 8 引入了 Option ...

  2. [转帖]Redis重大版本整理(Redis2.6-Redis7.0)

    Redis借鉴了Linux操做系统对于版本号的命名规则:node 版本号第二位若是是奇数,则为非稳定版本(例如2.7.2.9.3.1),若是是偶数,则为稳定版本(例如2.6.2.8.3.0.3.2). ...

  3. [转帖]oracle 审计日志清理

    https://www.cnblogs.com/bangchen/p/7268086.html   --进入审计日志目录: cd $ORACLE_BASE/admin/$ORACLE_SID/adum ...

  4. [转帖]Oracle JDBC中的语句缓存

    老熊 Oracle性能优化 2013-09-13 在Oracle数据库中,SQL解析有几种: 硬解析,过多的硬解析在系统中产生shared pool latch和library cache liatc ...

  5. [转帖]Shell if 条件判断

      Shell  语言中的if条件 一.if的基本语法: if [ command ];then    符合该条件执行的语句 elif [ command ];then    符合该条件执行的语句 e ...

  6. [转帖]etcd网络模块解析

    https://www.cnblogs.com/luohaixian/p/17509742.html 1. RaftHttp模块介绍 在etcd里raft模块和网络模块是分开的,raft模块主要负责实 ...

  7. [转帖]JVM——内存区域:运行时数据区域详解

    https://www.jianshu.com/p/cded765cfd1b 关注:CodingTechWork,一起学习进步. 引言   我们经常会被问到一个问题是Java和C++有何区别?我们除了 ...

  8. Docker 安装Oracle12c的镜像修改字符集 并且进行启动的简单过程

    学习来自 昨天晚上转帖的文章 这里面添加一些自己的内容 首先获取配置文件 git clone https://github.com/oracle/docker-images.git 获取之后比较容易了 ...

  9. SQLSERVER 标准版与企业版的版本标识区别

    1.  windows 标准版  sqlserver 标准版 2. Windows 数据中心版 sqlserver 企业版 3. Win10 之后 服务器版本缩减的很厉害 只有两个版本了 如图示 4. ...

  10. echarts设置暂无数据

    场景描述 我们在项目中,很多时候都会使用echarts进行数据展示. 当没有数据的时候,echarts的展示就会特别的难看. 这个时候我们就会优化界面的显示,在echarts中展示暂无数据. 有很多中 ...