快递物流仓库管理系统java项目springboot和vue的前后端分离系统java课程设计java毕业设计

文章目录

  • 快递物流仓库管理系统
    • 一、项目演示
    • 二、项目介绍
    • 三、部分功能截图
    • 四、部分代码展示
    • 五、底部获取项目源码(9.9¥带走)

快递物流仓库管理系统

一、项目演示

快递物流仓库管理系统

二、项目介绍

语言: Java 数据库:MySQL 前后端分离
前端技术 : Vue2 + ElementUl
后端技术 : SpringBoot2 + MyBatisPlus

登录注册

基础管理:商品管理、员工管理、仓库管理

销售管理:销售开票、销售记录

配送管理:申请配送、配送列表

运输管理:车辆资料、驾驶员资料

图表分析:入库分析、出库分析

系统管理:安全设置、操作员管理、权限列表

日志管理:登录日志、操作日志

三、部分功能截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、部分代码展示

package com.example.api.controller;import com.example.api.exception.AccountAndPasswordError;
import com.example.api.model.dto.LoginDto;
import com.example.api.model.entity.Admin;
import com.example.api.model.entity.LoginLog;
import com.example.api.model.enums.Role;
import com.example.api.model.support.ResponseResult;
import com.example.api.repository.AdminRepository;
import com.example.api.service.AdminService;
import com.example.api.service.LoginLogService;
import com.example.api.utils.JwtTokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/admin")
@Slf4j
public class AdminController {//获取日志对象Logger logger = LoggerFactory.getLogger(AdminController.class);@Resourceprivate AdminService adminService;@Resourceprivate AdminRepository adminRepository;@Resourceprivate LoginLogService loginLogService;@GetMapping("hasInit")public boolean hasInit() {return adminRepository.existsAdminByRoles(Role.ROLE_SUPER_ADMIN.getValue());}@PostMapping("/init")public Admin init(@RequestBody Admin admin) throws Exception {admin.setRoles(Role.ROLE_SUPER_ADMIN.getValue());return adminService.save(admin);}@GetMapping("")@PreAuthorize("hasAnyRole('ROLE_SUPER_ADMIN' ,'ROLE_ADMIN')")public List<Admin> findAll() {return adminService.findAll();}@DeleteMapping("")@PreAuthorize("hasAnyRole('ROLE_SUPER_ADMIN' ,'ROLE_ADMIN')")public void delete(String id) {adminService.delete(id);}@PostMapping("")@PreAuthorize("hasAnyRole('ROLE_SUPER_ADMIN' ,'ROLE_ADMIN')")public Admin save(@RequestBody Admin admin) throws Exception {return adminService.save(admin);}@PostMapping("/login")public Map<String, Object> loginByEmail(String type, @RequestBody LoginDto dto, HttpServletRequest request) throws Exception {Map<String, Object> map = new HashMap<>();Admin admin = null;String token = null;try {admin = type.equals("email") ? adminService.loginByEmail(dto) : adminService.loginByPassword(dto);token = adminService.createToken(admin,dto.isRemember() ? JwtTokenUtil.REMEMBER_EXPIRATION_TIME : JwtTokenUtil.EXPIRATION_TIME);}catch (Exception e){throw new Exception("邮箱或密码错误");}finally {loginLogService.recordLog(dto,admin,request);}map.put("admin", admin);map.put("token", token);return map;}@GetMapping("/sendEmail")public ResponseResult sendEmail(String email) throws Exception {Boolean flag = adminService.sendEmail(email);ResponseResult res = new ResponseResult();if (flag){res.setMsg("发送成功,请登录邮箱查看");}else {res.setMsg("发送验证码失败,请检查邮箱服务");}res.setStatus(flag);return res;}}
package com.example.api.controller;import com.example.api.model.entity.Inventory;
import com.example.api.model.entity.InventoryRecord;
import com.example.api.model.vo.CommodityChartVo;
import com.example.api.service.InventoryRecordService;
import com.example.api.service.InventoryService;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.List;@RestController
@RequestMapping("/api/inventory")
public class InventoryController {@Resourceprivate InventoryService inventoryService;@Resourceprivate InventoryRecordService recordService;@GetMapping("")public List<Inventory> findAll() {return inventoryService.findAll();}@GetMapping("analyze")public List<CommodityChartVo> analyze(Integer type) {return recordService.analyzeCommodity(type);}//指定仓库id//查询某个仓库的库存情况@GetMapping("/warehouse/{id}")public List<Inventory> findByWarehouse(@PathVariable String id) {return inventoryService.findByWarehouseId(id);}//指定商品id//查询某个商品在所有仓库的库存@GetMapping("/commodity/{id}")public List<Inventory> findByCommodity(@PathVariable String id) {return inventoryService.findByCommodityId(id);}//指定仓库id//查询某个仓库库内商品的出库入库记录@GetMapping("/record/warehouse/{id}")public List<InventoryRecord> findRecordByWarehouse(@PathVariable String id) {return recordService.findAllByWarehouseId(id);}//指定商品id//查询某个商品在所有仓库出库入库记录@GetMapping("/record/commodity/{id}")public List<InventoryRecord> findRecordByCommodity(@PathVariable String id) {return recordService.findAllByCommodityId(id);}@PostMapping("/in")public InventoryRecord in(@RequestBody InventoryRecord record) throws Exception {return recordService.in(record);}@PostMapping("/out")public InventoryRecord out(@RequestBody InventoryRecord record) throws Exception {return recordService.out(record);}}
package com.example.api.service.impl;import com.example.api.exception.AccountAndPasswordError;
import com.example.api.model.dto.LoginDto;
import com.example.api.model.entity.Admin;
import com.example.api.model.entity.LoginLog;
import com.example.api.repository.AdminRepository;
import com.example.api.repository.LoginLogRepository;
import com.example.api.service.AdminService;
import com.example.api.service.EmailService;
import com.example.api.utils.DataTimeUtil;
import com.example.api.utils.JwtTokenUtil;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.Date;
import java.util.List;@Service
public class AdminServiceImpl implements AdminService {@Resourceprivate AdminRepository adminRepository;@Resourceprivate EmailService emailService;@Overridepublic Admin save(Admin admin) throws Exception {if (admin.getEmail().length() < 8 || admin.getPassword().length() < 5) throw new Exception("请求参数异常");admin.setCreateAt(DataTimeUtil.getNowTimeString());return adminRepository.save(admin);}@Overridepublic Admin findById(String id) {return adminRepository.findById(id).orElse(null);}@Overridepublic boolean sendEmail(String email) throws Exception {Admin admin = adminRepository.findAdminByEmail(email);if (admin == null) throw new Exception("不存在的邮箱账户");return emailService.sendVerificationCode(email);}@Overridepublic Admin loginByPassword(LoginDto dto) throws Exception {Admin one = adminRepository.findAdminByEmailAndPassword(dto.getEmail(), dto.getPassword());if (one == null) {throw new Exception("邮箱或密码错误");}return one;}@Overridepublic Admin loginByEmail(LoginDto dto) throws Exception {boolean status = emailService.checkVerificationCode(dto.getEmail(), dto.getCode());if (!status) throw new Exception("验证码错误");return adminRepository.findAdminByEmail(dto.getEmail());}@Overridepublic List<Admin> findAll() {return adminRepository.findAll();}@Overridepublic String createToken(Admin admin, long exp) {String rolesString = admin.getRoles();String[] roles = rolesString != null ? rolesString.split(";") : null;return JwtTokenUtil.createToken(admin.getEmail(), roles, exp);}@Overridepublic void delete(String id) {adminRepository.deleteById(id);}}

五、底部获取项目源码(9.9¥带走)

有问题,或者需要协助调试运行项目的也可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔安装rabbitMQ实战

服务器环境说明 阿里云服务器、宝塔、centos7 一、下载erlang 原因&#xff1a;RabbitMQ服务端代码是使用并发式语言Erlang编写的&#xff0c;安装Rabbit MQ的前提是安装Erlang。 下载地址&#xff1a;http://www.erlang.org/downloads 下载对应的版本&…

山东省著名烈士孙善师孙善帅故居布展喜添新篇

人海信息网山东讯&#xff08;张春兄、冯爱云&#xff09; “……他们以钢铁般的意志&#xff0c;坚守共产党员的使命&#xff0c;他们就是泺口九烈士的孙善师孙善帅兄弟&#xff01;”6月28日&#xff0c;对于山东省著名烈士孙善师孙善帅故居来说&#xff0c;又是一个不平凡的…

LabVIEW电压电流实时监测系统

开发了一种基于LabVIEW和研华&#xff08;Advantech&#xff09;数据采集卡的电压电流实时监测系统&#xff0c;通过高效的数据采集和处理&#xff0c;为工业和科研用户提供高精度、实时的电压电流监测解决方案。系统采用研华USB-4711A数据采集卡&#xff0c;结合LabVIEW编程环…

AI论文速读 | 2024[KDD]自适应时空图神经网络中图中奖彩票的预训练识别

题目&#xff1a;Pre-Training Identification of Graph Winning Tickets in Adaptive Spatial-Temporal Graph Neural Networks 作者&#xff1a;Wenying Duan, Tianxiang Fang, Hong Rao, Xiaoxi He 机构&#xff1a;南昌大学&#xff0c;澳门大学 arXiv网址&#xff1a;h…

Python数据分析-股票分析和可视化(深证指数)

一、内容简介 股市指数作为衡量股市整体表现的重要工具&#xff0c;不仅反映了市场的即时状态&#xff0c;也提供了经济健康状况的关键信号。在全球经济体系中&#xff0c;股市指数被广泛用于预测经济活动&#xff0c;评估投资环境&#xff0c;以及制定财政和货币政策。在中国…

IEEE JSTSP综述:从信号处理领域分析视触觉传感器的研究

触觉传感器是机器人系统的重要组成部分&#xff0c;虽然与视觉相比触觉具有较小的感知面积&#xff0c;但却可以提供机器人与物体交互过程中更加真实的物理信息。 视觉触觉传感是一种分辨率高、成本低的触觉感知技术&#xff0c;被广泛应用于分类、抓取、操作等领域中。近期&a…

如何跑起来一个前后端项目

后端部署 第一步配置自己的maven 第二步优先导入自己本地jar包当本地没有在从远程下载 第三步找到配置文件 第四步成功运行后端部署完毕 前端部署 第一步看看项目node_modules有没有文件如果有就是已经安装好了对应的依赖&#xff0c;没有执行npm install 第二步运行即可

决策树划分属性依据

划分依据 基尼系数基尼系数的应用信息熵信息增益信息增益的使用信息增益准则的局限性 最近在学习项目的时候经常用到随机森林&#xff0c;所以对决策树进行探索学习。 基尼系数 基尼系数用来判断不确定性或不纯度&#xff0c;数值范围在0~0.5之间&#xff0c;数值越低&#x…

【知识学习】Unity3D中Scriptable Render Pipeline的概念及使用方法示例

Unity3D中的Scriptable Render Pipeline&#xff08;SRP&#xff09;是一种高度可定制的渲染管线框架&#xff0c;允许开发者完全控制渲染流程&#xff0c;以适应不同的渲染需求和硬件平台。SRP使得开发者可以编写自己的渲染逻辑&#xff0c;包括摄像机管理、渲染设置、光照处理…

【机器学习】K-means++: 一种改进的聚类算法详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 K-means: 一种改进的聚类算法详解引言1. K-means算法回顾1.1 基本概念1.2 局限性…

RDMA建链的3次握手和断链的4次挥手流程?

文章目录 基础信息建链 3次握手断链4次挥手建联状态active端passive端 报文结构函数关系其他后记 基础信息 CM: Communication Management 通信管理 连接管理SIDR: Service ID Resolution Protocol. 作用&#xff1a; enables users of Unreliable Datagram service to locate …

实验4 图像空间滤波

1. 实验目的 ①掌握图像空间滤波的主要原理与方法&#xff1b; ②掌握图像边缘提取的主要原理和方法&#xff1b; ③了解空间滤波在图像处理和机器学习中的应用。 2. 实验内容 ①调用 Matlab / Python OpenCV中的函数&#xff0c;实现均值滤波、高斯滤波、中值滤波等。 ②调…

【操作系统期末速成】 EP02 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文&#xff1a;☀️☀️☀️2.1 考点二&#xff1a;操作系统的功能及接口2.2 考点三&#xff1a;操作系统的发展及分类2.3 考点四&#xff1a;操作系统的运行环境&#xff08;重要&#xff09; 一、前言&#x…

从零开始三天学会微信小程序开发(三)

看到不少入门的小程序开发者不断的问重复性的问题&#xff0c;我们从实战角度开发了这个课程&#xff0c;希望能够帮助大家了解小程序开发。 课程分三天&#xff1a; 第一天&#xff1a;微信小程序开发入门第二天&#xff1a;给小程序接入云端数据第三天&#xff1a;完善我的…

MySQL高级-MVCC- readview介绍

文章目录 1、介绍2、ReadView中包含了四个核心字段&#xff1a;3、版本链数据的访问规则&#xff1a;4、不同的隔离级别&#xff0c;生成ReadView的时机不同&#xff1a; 1、介绍 ReadView&#xff08;读视图&#xff09;是 快照读 SQL执行时MVCC提取数据的依据&#xff0c;记录…

【计算机组成原理实验】——运算器组成实验

计组TEC4实验——运算器组成实验 1. 实验目的 (1&#xff09;掌握算术逻辑运算加、减、乘、与的工作原理。 (2) 熟悉简单运算器的数据传送通路。 (3) 验证实验台运算器的8位加、减、与、直通功能。 (4) 验证实验台的4位乘4位功能。 (5) 按给定数据&#xff0c;完成几种指…

SerDes介绍以及原语使用介绍(4)ISERDESE2原语仿真

文章目录 前言一、iserdese2_module模块二、oserdese2_module模块三、顶层模块四、仿真结果分析 前言 上文详细介绍了ISERDESE2原语的使用&#xff0c;本文根据仿真对ISERDESE2原语的使用进一步加深印象。在仿真时&#xff0c;与OSERDESE进行回环。 一、iserdese2_module模块…

昇思MindSpore学习笔记4--数据集 Dataset

昇思MindSpore学习笔记4--数据集 Dataset 摘要&#xff1a; 昇思MindSpore数据集Dataset的加载、数据集常见操作和自定义数据集方法。 一、数据集 Dataset概念 MindSpore数据引擎基于Pipeline 数据预处理相关模块&#xff1a; 数据集Dataset加载原始数据&#xff0c;支持文本…

大创项目推荐 题目:基于机器视觉的图像矫正 (以车牌识别为例) - 图像畸变校正

文章目录 0 简介1 思路简介1.1 车牌定位1.2 畸变校正 2 代码实现2.1 车牌定位2.1.1 通过颜色特征选定可疑区域2.1.2 寻找车牌外围轮廓2.1.3 车牌区域定位 2.2 畸变校正2.2.1 畸变后车牌顶点定位2.2.2 校正 7 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享…

Leetcode3192. 使二进制数组全部等于 1 的最少操作次数 II

Every day a Leetcode 题目来源&#xff1a;3192. 使二进制数组全部等于 1 的最少操作次数 II 解法1&#xff1a;遍历 由于 nums[i] 会被其左侧元素的操作影响&#xff0c;所以我们先从最左边的 nums[0] 开始思考。 分类讨论&#xff1a; 如果 nums[0]1&#xff0c;无需反…