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. Oracle Preinstall 调优参数的学习

    Oracle Preinstall 调优参数的学习 背景 学习是一个痛苦并快乐的过程. 之前自己手工安装过很多套Oracle数据库,也总结过很多 但是很多都是比较皮毛的. 最近遇到了一些问题. 才发现 ...

  2. vim工具极简总结

    vim工具总结 背景 很多操作记不住. 想着总结当笔记使用. 备忘 基本总结 vim somefile 打开/新建文件 i/a/insert按键 进入插入模式 insert 连续两次 进入替换模式 e ...

  3. 【转帖】3.JVM内存结构概述

    目录 1.JVM内存结构 1.JVM内存结构 在JVM系列的第一篇文章中已经给出了JVM内存结构的简图,下面是JVM内存结构更加详细的图. 同样,JVM的内存结构可以分为上中下3层. 上层主要是类加载 ...

  4. [转帖]一文浅析Nginx线程池!

    https://zhuanlan.zhihu.com/p/616500765     Nginx通过使用多路复用IO(如Linux的epoll.FreeBSD的kqueue等)技术很好的解决了c10k ...

  5. 【转帖】FIO磁盘性能测试工具

    https://www.jianshu.com/p/70b8c7d5d217 FIO工具介绍 FIO 工具是一款用于测试硬件存储性能的辅助工具,兼具灵活性.可靠性从而从众多性能测试工具中脱颖而出.磁盘 ...

  6. [转帖]关于winrm远程ps登录执行出现中文乱码和?乱码问题及其解决办法

    https://segmentfault.com/a/1190000040566946?utm_source=sf-similar-article python的winrm库提供了命令行远程连接的功能 ...

  7. ESXi6.7安装Win11的方法

    背景 公司里面要进行新的操作系统验证了. 之前Win10 Win7 Win8 都比较简单. 就是现在Win11有了TPM非常繁琐. 今天必须得搞一把了,就简单搜索了下. 发现还是可以解决的. 然后记录 ...

  8. Windows 堆管理机制 [2] Windows 2000 – Windows XP SP1版本

    2.Windows 2000 – Windows XP SP1 2.1 环境准备 环境 环境准备 虚拟机 32位Windows 2000 SP4 调试器 OllyDbg.WinDbg 编译器 VC6. ...

  9. git checkout switch restore

    前言 在 Git 术语中,"checkout"是在目标实体的不同版本之间切换的行为.该命令对三个不同的实体进行操作:文件.提交和分支.除了"checkout"的 ...

  10. pywin32 实现寻找窗体并模拟按键

    import win32api import win32gui, win32con import win32clipboard import re import time class cWindow: ...