[Open Source] Express management system based on Vue and SpringBoot

Insert image description here

Project number: S 007, get the source code at the end of the article. \color{red}{Project number: S007, get the source code at the end of the article. }Item name: S007, End of sentence is 获TORI Genka.


1. Abstract

1.1 Project introduction

An express delivery management system based on Vue+SpringBoot+MySQL, including all project source codes, database scripts, functional documents, proposal reports, literature reviews, foreign language translations, mid-term inspection reports, and PPT, project number S007.

The express management system includesexpress area module, express shelf module, express type module and express file module, and also includes the system's own User management, department management, role management, menu management, log management, data dictionary management, file management, chart display and other basic modules, the express management system is based on Role access control is used by courier administrators and courier staff. Permissions can be precise to the button level. You can customize roles and assign permissions. The system is suitable for designing precise permission constraint requirements.

  • Front edge : Vue 2.7.10

  • 后端:Spring Boot 3.1.10

  • Set of numbers : MySQL 8.0.31

1.2 Project screen recording

Source code download


2. Research content

The purpose of this project is to develop an express delivery management system that provides express delivery support for university teachers and students.

The express management system mainly uses JAVA programming language, adopts Vue development technology, and uses MYSQL database to support the data flow of the system.

This article will finally complete the design and implementation of the express delivery management system, and verify the quality of the system through complete functional testing and performance testing. The system needs to support the following functions.

  • Express packaging type management enables adding, deleting, modifying, conditional query, and importing express packaging types.
  • Express delivery management enables adding, deleting, modifying, conditional query, importing express delivery, and supports uploading express delivery pictures.
  • Express delivery area management, such as large express packaging, small express packaging, etc., enables adding, deleting, modifying, and conditional querying of express delivery areas.
  • Express shelf management enables adding, deleting, modifying, and conditionally querying express shelves.
  • User profile management enables the maintenance of end-user data.
  • Role management uses role-based access control to assign different menu permissions to express delivery administrators, warehouse managers, and customers.

The main problems to be solved are as follows:

  1. How to realize file management of express delivery area and express delivery, and archive of express delivery recovery records;
  2. How the system copes with high concurrent access from users and how to ensure the security of the express delivery management system.

The functional requirements of the express delivery management system mainly includedata center module, express packaging type module, express area module, express shelf module, and express file moduleFor these five modules, the system is based on the web management backend run by the browser. Each module is described in detail below.

2.1 Data Center Module

The data center module includes the basic system configuration of the express delivery management system, such as the management of logged-in users, the management of the operating company's organizational structure, the management of user menu permissions, the management of system logs, and the management of public file cloud disks.

Among them, the login user management module is responsible for the operation and maintenance work by the administrator. The administrator can add, delete, modify, and query login users.

Organizational structure refers to the organizational structure of the operating company. This module is suitable for managing the department levels of these organizational structures and the departmental affiliation of employees.

The user menu permission management module is used to manage the specific menu permissions of users with different permissions.

System log management is used to maintain records of users logging into the system to facilitate locating and tracking user operations.

The public cloud disk management module is used to uniformly maintain pictures in the express delivery management system, such as photos of express delivery orders, photos of express delivery areas, etc.

2.2 Express type module

Different express delivery has different express delivery types, which can be divided into large express delivery, small express delivery, fragile express delivery, urgent express delivery, etc. Different types of express delivery have different mode of transportation, so it is necessary to establish an express delivery type module to maintain express delivery type data. The fields include type name, status, sorting value, remarks, creator, creation time, updater, update time, etc. Express administrators can add, delete, modify, and conditionally query express types, and users can query the express types released by the administrator. .

2.3 Express area module

A courier company of a certain scale will have multiple courier areas, and each warehouse stores express delivery in different areas, such as area A. For express delivery within the province, Area B stores express delivery outside the province, so it is necessary to establish an express delivery area module to manage the regional data of the express delivery. The express delivery area information includes area name, status, sorting value, remarks, creator, creation time, and updater. , update time, etc., the express administrator can add, delete, modify, and conditionally query the express area, and the user can query the express area data released by the administrator.

2.4 Express shelf module

The express shelf module manages express storage shelf data. The fields of express shelves include shelf name, area, shelf status, remarks, creator, creation time, updater, update time, etc. Express administrators can add, delete, modify, and conditionally query express shelves, and users can query administrators Published express shelf data.

2.5 Express file module

Express delivery is the core business of the express packaging service system, so it is necessary to establish an express file module. The express fields include the type of express delivery, the shelf to which it belongs, the recipient, the receiving phone number, and the receiving address. The express delivery administrator can add, delete, modify, and conditionally query the express delivery address, sender, delivery phone number, and delivery address. Users can query the express delivery data released by the administrator, and can also add new express delivery data.

Insert image description here

3. Interface display

3.1 Log in and register

Insert image description here

<Form ref="usernameLoginForm" :model="form" :rules="usernameLoginFormRules" class="form">
    <FormItem prop="username" class="loginInput">
        <Row>
            <Input v-model="form.username" size="large" clearable placeholder="登录账号" autocomplete="off">
            <Icon class="iconfont icon-yonghu" slot="prefix" style="line-height:50px" />
            </Input>
        </Row>
    </FormItem>
    <FormItem prop="password">
        <Input style="height:50px;line-height:50px" type="password" v-model="form.password" size="large" placeholder="请输入登录密码" password autocomplete="off">
        <Icon class="iconfont icon-mima1" slot="prefix" style="line-height:50px" />
        </Input>
    </FormItem>
    <FormItem prop="imgCode">
        <Row type="flex" justify="space-between" style="align-items: center;overflow: hidden;">
            <Input v-model="form.imgCode" size="large" clearable placeholder="请输入验证码" :maxlength="10" class="input-verify" />
            <div class="code-image" style="position:relative;font-size:12px;">
                <Spin v-if="loadingCaptcha" fix></Spin>
                <img :src="captchaImg" @click="getCaptchaImg" alt="验证码加载失败" style="width:110px;cursor:pointer;display:block" />
            </div>
        </Row>
    </FormItem>
</Form>

Insert image description here

Insert image description here

3.2 Types of express delivery

Insert image description here

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询快递包装类型")
public Result<IPage<PackageType>> getByPage(@ModelAttribute PackageType packageType ,@ModelAttribute PageVo page){
    
    
    QueryWrapper<PackageType> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(packageType.getTitle())) {
    
    
        qw.like("title",packageType.getTitle());
    }
    if(!ZwzNullUtils.isNull(packageType.getStatus())) {
    
    
        qw.eq("status",packageType.getStatus());
    }
    IPage<PackageType> data = iPackageTypeService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<PackageType>>().setData(data);
}

Insert image description here

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增快递包装类型")
public Result<PackageType> insert(PackageType packageType){
    
    
    if(Objects.equals(0,packageType.getSortOrder().compareTo(BigDecimal.ZERO))) {
    
    
        packageType.setSortOrder(BigDecimal.valueOf(iPackageTypeService.count() + 1L));
    }
    iPackageTypeService.saveOrUpdate(packageType);
    return new ResultUtil<PackageType>().setData(packageType);
}

3.3 Express delivery area

Insert image description here

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询快递区域")
public Result<IPage<ExpressArea>> getByPage(@ModelAttribute ExpressArea expressArea ,@ModelAttribute PageVo page){
    
    
    QueryWrapper<ExpressArea> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(expressArea.getTitle())) {
    
    
        qw.like("title",expressArea.getTitle());
    }
    if(!ZwzNullUtils.isNull(expressArea.getStatus())) {
    
    
        qw.like("status",expressArea.getStatus());
    }
    IPage<ExpressArea> data = iExpressAreaService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ExpressArea>>().setData(data);
}

Insert image description here

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增快递区域")
public Result<ExpressArea> insert(ExpressArea expressArea){
    
    
    if(Objects.equals(0,expressArea.getSortOrder().compareTo(BigDecimal.ZERO))) {
    
    
        expressArea.setSortOrder(BigDecimal.valueOf(iExpressAreaService.count() + 1L));
    }
    iExpressAreaService.saveOrUpdate(expressArea);
    return new ResultUtil<ExpressArea>().setData(expressArea);
}

3.4 Express shelves

Insert image description here

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询快递货架")
public Result<IPage<ExpressShelf>> getByPage(@ModelAttribute ExpressShelf expressShelf ,@ModelAttribute PageVo page){
    
    
    QueryWrapper<ExpressShelf> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(expressShelf.getAreaId())) {
    
    
        qw.eq("area_id",expressShelf.getAreaId());
    }
    if(!ZwzNullUtils.isNull(expressShelf.getTitle())) {
    
    
        qw.like("title",expressShelf.getTitle());
    }
    if(!ZwzNullUtils.isNull(expressShelf.getStatus())) {
    
    
        qw.eq("status",expressShelf.getStatus());
    }
    IPage<ExpressShelf> data = iExpressShelfService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ExpressShelf>>().setData(data);
}

Insert image description here

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增快递货架")
public Result<ExpressShelf> insert(ExpressShelf expressShelf){
    
    
    if(Objects.equals(0,expressShelf.getSortOrder().compareTo(BigDecimal.ZERO))) {
    
    
        expressShelf.setSortOrder(BigDecimal.valueOf(iExpressAreaService.count() + 1L));
    }
    ExpressArea area = iExpressAreaService.getById(expressShelf.getAreaId());
    if(area == null) {
    
    
        return ResultUtil.error("区域不存在");
    }
    expressShelf.setAreaName(area.getTitle());
    iExpressShelfService.saveOrUpdate(expressShelf);
    return new ResultUtil<ExpressShelf>().setData(expressShelf);
}

3.5 Express File

Insert image description here

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询快递")
public Result<IPage<Express>> getByPage(@ModelAttribute Express express ,@ModelAttribute PageVo page){
    
    
    QueryWrapper<Express> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("id",currUser.getId());
    userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '496138616573952' OR role_id = '1635124217320181760')");
    if(iUserService.count(userQw) < 1L) {
    
    
        userQw.and(wrapper -> wrapper.eq("send_mobile", currUser.getMobile()).or().eq("receiving_mobile",currUser.getMobile()));
    }
    if(!ZwzNullUtils.isNull(express.getShelfId())) {
    
    
        qw.eq("shelf_id",express.getShelfId());
    }
    if(!ZwzNullUtils.isNull(express.getAreaId())) {
    
    
        qw.eq("area_id",express.getAreaId());
    }
    if(!ZwzNullUtils.isNull(express.getReceivingUser())) {
    
    
        qw.like("receiving_user",express.getReceivingUser());
    }
    if(!ZwzNullUtils.isNull(express.getSendUser())) {
    
    
        qw.like("send_user",express.getSendUser());
    }
    IPage<Express> data = iExpressService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Express>>().setData(data);
}

Insert image description here

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增快递")
public Result<Express> insert(Express express){
    
    
    ExpressShelf shelf = iExpressShelfService.getById(express.getShelfId());
    if(shelf == null) {
    
    
        return ResultUtil.error("货架不存在");
    }
    express.setShelfName(shelf.getTitle());
    express.setAreaId(shelf.getAreaId());
    express.setAreaName(shelf.getAreaName());
    iExpressService.saveOrUpdate(express);
    return new ResultUtil<Express>().setData(express);
}

3.6 System basic modules

The user management module is shown in the figure below.

Insert image description here
The file management module is shown in the figure below.

Insert image description here
The log management module is shown in the figure below.

Insert image description here
The personal center module is shown in the figure below.

Insert image description here


4. Disclaimer

  • This project is for personal study only. For commercial authorization, please contact the blogger, otherwise you will be responsible for the consequences.
  • The blogger owns all content and independent intellectual property rights of the application system built by this software, and has the final right of interpretation.
  • If you have any questions, please leave a message in the warehouse Issue. We will reply as soon as possible after seeing it. Relevant opinions will be considered as appropriate, but there is no promise or guarantee that they will be adopted.

Users who download this system code or use this system must agree to the following content, otherwise please do not download!

  1. You use/develop this software voluntarily, understand the risks of using this software, and agree to bear the risks of using this software.
  2. Any information content of the website built using this software and any resulting copyright disputes, legal disputes and consequences have nothing to do with the blogger, and the blogger does not bear any responsibility for this.
  3. Under no circumstances will the blogger be liable for any loss that is difficult to reasonably predict (including but not limited to loss of commercial profits, business interruption, and loss of business information) resulting from the use or inability to use this software.
  4. You must understand the risks of using this software. The blogger does not promise to provide one-on-one technical support or use guarantee, nor does it assume any responsibility for unforeseen problems caused by this software.

Guess you like

Origin blog.csdn.net/yangyin1998/article/details/134726570