Design and implementation of seckill system based on Spring Boot

Get the source code at the end
Development language: Java
Java development tools: JDK1.8
Backend framework: SpringBoot
Frontend: Vue
Database: Combination of MySQL5.7 and Navicat management tools
Server: Tomcat8.5
Development software: IDEA/Eclipse
Whether Maven project: Yes

Directory

1. Project introduction

2. System function

3. Screenshot of the system project

3.1 Front page

3.2 background management

4. Core code

4.1 Login related

4.2 File upload

4.3 Packaging


1. Project Introduction

The social development is changing with each passing day, and the use of computer applications to realize the data management function is considered to be very perfect. However, with the advent of the mobile Internet, the processing of information is no longer subject to geographical restrictions, and the processing of information is timely and efficient, which is loved by people. This time, a set of seckill system based on Spring Boot is developed. The administrator functions include personal center, user management, product type management, product information management, order management, and system management. Users can register and log in, view product information, and purchase flash sale products. Products that have ended the flash sale cannot be purchased, but they can view orders. The server of the seckill system based on Spring Boot is developed in Java, and the website background is developed with the Spring Boot framework. The database uses the MySQL database as data storage. In this way, users can use it conveniently and quickly, and all business processes are performed through the same background, and the background can be deployed according to the amount of concurrency, and hardware and software can be used to cooperate, satisfying the interactive processing of data, and allowing users to store data more efficiently. Safe, more convenient to get data.

2. System functions

The design and implementation of the seckill system based on Spring Boot mainly includes two functional modules, namely the user function module and the administrator function module.

(1) Administrator module: The core user in the system is the administrator. After the administrator logs in, the background system is managed by the administrator. The main functions are: personal center, user management, product type management, product information management, order management, system management.

(2) User: Users can register and log in, view product information, and purchase flash sale products. Products that have ended the flash sale cannot be purchased, but can view orders.

3. Screenshot of system project

3.1 Front Page

Users can view product information, purchase and add to shopping cart, as well as comment and bookmark.

After the user adds the product to the shopping cart, he can change and delete the product quantity in the shopping cart.

After the user clicks to confirm the order in the shopping cart, he will go to the following interface. This interface can modify the delivery address and perform payment operations.

The product information that the user has favorited can be checked and deleted in My Favorites.

3.2 Background Management

Administrators can add, modify, delete, and query user information.

The administrator can add, modify, delete, and query the product type information.

Administrators can add, modify, delete, and query product information.

Administrators can view paid orders and ship orders.

4. Core code

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("The 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();
    }
}

4.2 File upload

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
}

4.3 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 R ok() {
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 relevant knowledge. Java skill treeHomepageOverview 118804 people are studying systematically