Implementation Overview of a Seat Temporary Leave Management System (Spring Boot + Vue)

This article describes a seat‑temporary‑leave management system built with Java Spring Boot and Vue, detailing its front‑end and back‑end modules, technology stack, functional pages, and provides a representative controller code snippet illustrating the back‑end API design.

Java Captain
Java Captain
Java Captain
Implementation Overview of a Seat Temporary Leave Management System (Spring Boot + Vue)

Introduction

The system is divided into front‑end and back‑end pages. The front‑end provides home page, seat information, forum, announcements, personal center, and other user‑facing features, while the back‑end includes modules such as home, personal center, student management, teacher management, seat reservation, attendance, leave handling, credit scoring, forum, and system management.

Development language: Java Development tools: IDEA / Eclipse Database: MySQL 5.7 Frameworks: Spring Boot + Vue JDK version: JDK 1.8

System Implementation

Front‑end Functional Modules

Home

Seat Information

Forum

Announcements

Personal Center

Student Back‑end Modules

Home

Seat Reservation Management

Attendance Management

Attendance Management (duplicate section)

Administrator Back‑end Modules

System Management

Partial Code

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ZuoweizanliEntity;
import com.entity.view.ZuoweizanliView;

import com.service.ZuoweizanliService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;

/**
 * Seat Temporary Leave
 * Backend API
 */
@RestController
@RequestMapping("/zuoweizanli")
public class ZuoweizanliController {
    @Autowired
    private ZuoweizanliService zuoweizanliService;

    /** Backend list */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, ZuoweizanliEntity zuoweizanli, HttpServletRequest request){
        String tableName = request.getSession().getAttribute("tableName").toString();
        if(tableName.equals("xuesheng")) {
            zuoweizanli.setXuehao((String)request.getSession().getAttribute("username"));
        }
        EntityWrapper<ZuoweizanliEntity> ew = new EntityWrapper<>();
        PageUtils page = zuoweizanliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zuoweizanli), params), params));
        return R.ok().put("data", page);
    }

    /** Frontend list */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, ZuoweizanliEntity zuoweizanli, HttpServletRequest request){
        EntityWrapper<ZuoweizanliEntity> ew = new EntityWrapper<>();
        PageUtils page = zuoweizanliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zuoweizanli), params), params));
        return R.ok().put("data", page);
    }

    /** List */
    @RequestMapping("/lists")
    public R list(ZuoweizanliEntity zuoweizanli){
        EntityWrapper<ZuoweizanliEntity> ew = new EntityWrapper<>();
        ew.allEq(MPUtil.allEQMapPre(zuoweizanli, "zuoweizanli"));
        return R.ok().put("data", zuoweizanliService.selectListView(ew));
    }

    /** Query */
    @RequestMapping("/query")
    public R query(ZuoweizanliEntity zuoweizanli){
        EntityWrapper<ZuoweizanliEntity> ew = new EntityWrapper<>();
        ew.allEq(MPUtil.allEQMapPre(zuoweizanli, "zuoweizanli"));
        ZuoweizanliView zuoweizanliView = zuoweizanliService.selectView(ew);
        return R.ok("查询座位暂离成功").put("data", zuoweizanliView);
    }

    /** Backend detail */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ZuoweizanliEntity zuoweizanli = zuoweizanliService.selectById(id);
        return R.ok().put("data", zuoweizanli);
    }

    /** Frontend detail */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ZuoweizanliEntity zuoweizanli = zuoweizanliService.selectById(id);
        return R.ok().put("data", zuoweizanli);
    }

    /** Backend save */
    @RequestMapping("/save")
    public R save(@RequestBody ZuoweizanliEntity zuoweizanli, HttpServletRequest request){
        zuoweizanli.setId(new Date().getTime() + new Double(Math.floor(Math.random()*1000)).longValue());
        zuoweizanliService.insert(zuoweizanli);
        return R.ok();
    }

    /** Frontend save */
    @RequestMapping("/add")
    public R add(@RequestBody ZuoweizanliEntity zuoweizanli, HttpServletRequest request){
        zuoweizanli.setId(new Date().getTime() + new Double(Math.floor(Math.random()*1000)).longValue());
        zuoweizanliService.insert(zuoweizanli);
        return R.ok();
    }

    /** Update */
    @RequestMapping("/update")
    public R update(@RequestBody ZuoweizanliEntity zuoweizanli, HttpServletRequest request){
        zuoweizanliService.updateById(zuoweizanli);
        return R.ok();
    }

    /** Delete */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        zuoweizanliService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

    /** Reminder interface */
    @RequestMapping("/remind/{columnName}/{type}")
    public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
                         @PathVariable("type") String type, @RequestParam Map<String, Object> map) {
        map.put("column", columnName);
        map.put("type", type);
        if(type.equals("2")) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Calendar c = Calendar.getInstance();
            Date remindStartDate = null;
            Date remindEndDate = null;
            if(map.get("remindstart") != null) {
                Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
                c.setTime(new Date());
                c.add(Calendar.DAY_OF_MONTH, remindStart);
                remindStartDate = c.getTime();
                map.put("remindstart", sdf.format(remindStartDate));
            }
            if(map.get("remindend") != null) {
                Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
                c.setTime(new Date());
                c.add(Calendar.DAY_OF_MONTH, remindEnd);
                remindEndDate = c.getTime();
                map.put("remindend", sdf.format(remindEndDate));
            }
        }
        Wrapper<ZuoweizanliEntity> wrapper = new EntityWrapper<>();
        if(map.get("remindstart") != null) {
            wrapper.ge(columnName, map.get("remindstart"));
        }
        if(map.get("remindend") != null) {
            wrapper.le(columnName, map.get("remindend"));
        }
        String tableName = request.getSession().getAttribute("tableName").toString();
        if(tableName.equals("xuesheng")) {
            wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
        }
        int count = zuoweizanliService.selectCount(wrapper);
        return R.ok().put("count", count);
    }
}
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

JavaSpring BootVuemysqlREST APISeat Management
Java Captain
Written by

Java Captain

Focused on Java technologies: SSM, the Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading; occasionally covers DevOps tools like Jenkins, Nexus, Docker, ELK; shares practical tech insights and is dedicated to full‑stack Java development.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.