Design and implementation of new coronavirus close contact tracking system based on SpringBoot

Table of Contents

Preface

1. Technology stack

2. Introduction to system functions

Administrator function implementation

Nucleic acid testing management

Announcement information management

Announcement type management

3. Core code

1. Login module

2. File upload module

3. Code encapsulation


Foreword

Information data has been undergoing changes from tradition to contemporary times. The sudden emergence of the Internet has given traditional information management a revolutionary dawn, because traditional information management has failed in terms of timeliness, security, and operability. Only when we encountered the Internet era did we realize that we could make up for the shortcomings from ancient times and effectively improve management efficiency and business level. In the traditional management model, the longer the time, the more content is managed, and more people are needed to organize the data. Moreover, the efficiency of data summary query is also extremely low, and data security can never be guaranteed. Combined with the various shortcomings of data content management, it can be effectively supplemented in the Internet era. Combined with advanced Internet technology, we develop software that meets the needs, so that data content management can achieve the highest accuracy in terms of timeliness of entry, timeliness of viewing, and timeliness of summary analysis, making management more scientific and convenient. The new coronavirus close contact tracking system developed this time realizes dictionary management, location management, announcement information management, user trajectory management, accounting and testing management, mask management, mask reservation management, medical staff management, vaccine management, vaccine appointment management, and user management , administrator management and other functions. The system uses MySql, the king of relational databases, as the database of the system, which effectively securely stores data, provides effective backup, and ensures data reliability. Moreover, the program also has all the functions required by the program, which greatly improves the operability and safety, allowing the new coronavirus close contact tracking system to move from concept to reality, and truly allows people to improve information processing efficiency.

1. Technology stack

Get the source code at the end
SpringBoot + Vue + JS + jQuery + Ajax…

2. Introduction to system functions

Administrator function implementation

Nucleic acid testing management

This page allows administrators to manage nucleic acid testing data. The nucleic acid testing management page is shown in the figure below. This page mainly implements the functions of adding, modifying, deleting, and viewing nucleic acid detection.

Announcement Information Management

The functional operations provided by the announcement information management page include: adding announcements, modifying announcements, and deleting announcements. The picture below is the announcement information management page.

Announcement type management

The announcement type management page displays all announcement types. On this page, administrators can add new announcement information types and edit and update existing announcement type information. Invalid announcement type information can also be quickly deleted by administrators. The picture below is the announcement type management page.

3. Core code

1. Login module

package com.controller;
 
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * Login related
 */
@RequestMapping("users")
@RestController
public class UserController{
\t
@Autowired
private UserService userService;
\t
@Autowired
private TokenService tokenService;
 
/**
\t * Log in
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("Account or password is incorrect");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
\t
/**
\t * register
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
    if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    return R.error("User already exists");
    }
        userService.insert(user);
        return R.ok();
    }
 
/**
\t * quit
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("Exit successfully");
}
\t
/**
     * reset Password
     */
    @IgnoreAuth
@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    if(user==null) {
    return R.error("Account does not exist");
    }
    user.setPassword("123456");
        userService.update(user,null);
        return R.ok("Password has been reset to: 123456");
    }
\t
/**
     * list
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
/**
     * list
     */
    @RequestMapping("/list")
    public R list(UserEntity user){
       EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      ew.allEq(MPUtil.allEQMapPre( user, "user"));
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * information
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * Get the user's session user information
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * save
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
    if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    return R.error("User already exists");
    }
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * Revise
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
        userService.updateById(user);//Update all
        return R.ok();
    }
 
    /**
     * delete
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

2. File upload module

package com.controller;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
 
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
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 org.springframework.web.multipart.MultipartFile;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;
 
/**
 * Upload file mapping table
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
@Autowired
    private ConfigService configService;
/**
\t * upload files
*/
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("The uploaded file cannot be empty");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime() + "." + fileExt;
File dest = new File(upload.getAbsolutePath() + "/" + fileName);
file.transferTo(dest);
FileUtils.copyFile(dest, new File("C:\Users\Desktop\jiadian\springbootl7own\src\main\resources\static\upload" + "/" + fileName));
if(StringUtils.isNotBlank(type) & amp; & amp; type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
\t
/**
\t * download file
*/
@IgnoreAuth
@RequestMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam String fileName) {
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = new File(upload.getAbsolutePath() + "/" + fileName);
if(file.exists()){
/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
getResponse().sendError(403);
}*/
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
} catch (IOException e) {
e.printStackTrace();
}
return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
}
\t
}

3. Code packaging

package com.utils;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * Return data
 */
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
\t
public R() {
put("code", 0);
}
\t
public static R error() {
return error(500, "Unknown exception, please contact the administrator");
}
\t
public static R error(String msg) {
return error(500, msg);
}
\t
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
 
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
\t
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
\t
public static Rok() {
return new R();
}
 
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}

The knowledge points of the article match the official knowledge files, and you can further learn related knowledge. Java Skill TreeHomepageOverview 137997 people are learning the system