IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码

news2024/9/20 20:26:14

IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码

  • 一、系统介绍
    • 1.环境配置
  • 二、系统展示
    • 1. 管理员登录
    • 2.垃圾回收管理
    • 3.添加需要回收的垃圾
    • 4.垃圾去向管理
    • 5.申请需要打包运出的垃圾
    • 6.系统公告管理
    • 7.个人信息管理
    • 8.修改密码
  • 三、部分代码
    • UserMapper.java
    • UserController.java
    • User.java
  • 四、其他
    • 获取源码


一、系统介绍

本系统实现了垃圾回收管理系统,管理端实现了管理员登录、垃圾回收管理、添加需要回收的垃圾、垃圾去向管理、申请需要打包运出的垃圾、系统公告管理、个人信息管理、修改密码

1.环境配置

JDK版本:1.8
Mysql:5.7

二、系统展示

1. 管理员登录

在这里插入图片描述

账号:好贵啊 密码:123456

2.垃圾回收管理

在这里插入图片描述

3.添加需要回收的垃圾

在这里插入图片描述

4.垃圾去向管理

在这里插入图片描述

5.申请需要打包运出的垃圾

在这里插入图片描述

6.系统公告管理

在这里插入图片描述

7.个人信息管理

在这里插入图片描述

8.修改密码

在这里插入图片描述

三、部分代码

UserMapper.java

package com.laji.demo.mapper;

import com.laji.demo.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

/**
 * <p>
 * 用户表 Mapper 接口
 * </p>
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

}


UserController.java

package com.laji.demo.controller;


import cn.hutool.core.util.IdUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.laji.demo.common.Result;
import com.laji.demo.entity.User;
import com.laji.demo.service.IUserService;
import com.laji.demo.utils.PhoneFormatCheckUtils;
import com.laji.demo.utils.StringConst;
import com.laji.demo.utils.VoUtilsTool;
import com.laji.demo.vo.request.*;
import com.laji.demo.vo.response.ResponseUserListVo;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 * 用户表 前端控制器
 * </p>
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private Producer producer;
    @Autowired
    private IUserService userService;

    @GetMapping("/captcha.jpg")
    public void captcha(HttpServletRequest request, HttpServletResponse response )
            throws IOException {
        response.setHeader("Cache-Control", "no-store, no-cache");
        response.setContentType("image/jpeg");
        //生成文字验证码
        String text = producer.createText();
        System.out.println(text);
        //生成图片验证码
        BufferedImage image = producer.createImage(text);
        HttpSession session = request.getSession();
        session.setAttribute(Constants.KAPTCHA_SESSION_KEY,text);

        session.setMaxInactiveInterval(60);
        ServletOutputStream out = response.getOutputStream();
        ImageIO.write(image, "jpg", out);
        IOUtils.closeQuietly(out);
    }


    @RequestMapping("/register")
    public Result register(@RequestBody RequestRegisterVo registerVo) throws IOException {
        //System.out.println(registerVo);
       // String avatarUrl = userService.avatarUpload(registerVo.getAvatarFile());
        //用户数据的校验
        if(ObjectUtils.isNotEmpty(userService.queryByUsername(registerVo.getUsername()))){
            System.out.println(registerVo.getUsername());
            return  Result.getFailure().setMsg("用户名已存在!!!");
        }
        if(ObjectUtils.isNotEmpty(userService.queryByTel(registerVo.getTel()))){
            return  Result.getFailure().setMsg("用户名已存在!!!");
        }
        if(VoUtilsTool.checkObjFieldIsNull(registerVo)){
            return Result.getFailure().setMsg("输入数据为空!!!");
        }
        if(registerVo.getPassword().trim().toCharArray().length < 8){
            return  Result.getFailure().setMsg("密码位数必须大于8!!!");
        }
        if(!PhoneFormatCheckUtils.isPhoneLegal(registerVo.getTel())){
            return  Result.getFailure().setMsg("手机号格式正确!!!");
        }

        //用户数据拷贝
        User user = new User();
        BeanUtils.copyProperties(registerVo,user);
        user.setPassword(DigestUtil.md5Hex(registerVo.getPassword()));
        user.setId(IdUtil.simpleUUID());
        user.setAvatarUrl("\\goodsImg\\avatar.jpg");
        //存入数据库中
        if(userService.saveOrUpdate(user)){
            return Result.getSuccess().setMsg("注册成功!!!");
        }else{
            return  Result.getFailure().setMsg("注册失败!!!");
        }
    }

    @RequestMapping("/login")
    public Result login(HttpServletRequest request, @RequestBody RequestLoginVo loginRequestVo){
        //System.out.println(loginRequestVo);
        HttpSession session = request.getSession();
        String trueCaptcha = (String) session.getAttribute(Constants.KAPTCHA_SESSION_KEY);
        if(!trueCaptcha.equalsIgnoreCase(loginRequestVo.getCaptcha())){
            return Result.getFailure().setMsg(StringConst.CAPTCHA_ERROR);
        }
        User user;
        if(ObjectUtils.isEmpty(userService.queryByUsername(loginRequestVo.getUsernameOrTel()))){
             user = userService.queryByTel(loginRequestVo.getUsernameOrTel());
        }else{
            user = userService.queryByUsername(loginRequestVo.getUsernameOrTel());
        }
        if(ObjectUtils.isEmpty(user) || !DigestUtil.md5Hex(loginRequestVo.getPassword()).
                equals(user.getPassword())){
            return Result.getFailure().setMsg(StringConst.LOGIN_ERROR);
        }
        Map<String,Object> result = new HashMap<>();
        result.put("userId",user.getId());
        result.put("userType",user.getType());

        return Result.getSuccess().setData(result);
    }

    @GetMapping("/getUserById/{userId}")
    public Result getUserById(@PathVariable String userId){
        return Result.getSuccess().setData(userService.getUserById(userId));
    }
    @DeleteMapping("/deleteByIds")
    public Result delete(@RequestBody RequestUserDeleteVo deleteVo){
        if(VoUtilsTool.checkObjFieldIsNull(deleteVo)){
            return Result.getFailure().setMsg(StringConst.DELETE_SELECT_ERROR);
        }
        if(userService.removeByIds(deleteVo.getStringIds())){
            return  Result.getSuccess().setMsg(StringConst.DELETE_SUCCESS);
        }else{
            return  Result.getFailure().setMsg(StringConst.DELETE_ERROR);
        }
    }
    @PostMapping("/list/{id}")
    public Result list(@RequestBody RequestUserListVo userListVo, @PathVariable String id){
        int type = userService.getById(id).getType();
        if(type== 0 || (type == 1 && userListVo.getType() == 1)){
            return Result.getFailure().setMsg("权限不足!!");
        }
        IPage<ResponseUserListVo> listVoIPage = userService.userList(userListVo,type);
        return Result.getSuccess().setData(listVoIPage);
    }

    @GetMapping("/updateByType/{userId}")
    public Result updateByType(@PathVariable String userId){
        if(userService.updateByType(userService.getById(userId))){
            return Result.getSuccess().setMsg("操作成功");
        }else{
            return Result.getFailure().setMsg("操作失败");
        }
    }

    @PostMapping("/update")
    public Result update(@RequestBody RequestUpdateUserVo requestUpdateUserVo){
        User user = userService.getById(requestUpdateUserVo.getId());
        BeanUtils.copyProperties(requestUpdateUserVo,user);
        if(userService.saveOrUpdate(user)){
            return Result.getSuccess().setMsg("修改成功");
        }else{
            return Result.getFailure().setMsg("修改失败");
        }
    }

    @PostMapping("/changePwd")
    public Result changePwd(@RequestBody RequestChangePwdVo requestChangePwdVo){
        User user = userService.getById(requestChangePwdVo.getId());
        if(!user.getPassword().equals(DigestUtil.md5Hex(requestChangePwdVo.getOldPassword()))){
            return Result.getFailure().setMsg("原密码错误");
        }
        if(requestChangePwdVo.getNewPassword().trim().toCharArray().length < 8){
            return  Result.getFailure().setMsg("密码位数必须大于8!!!");
        }
        user.setPassword(DigestUtil.md5Hex(requestChangePwdVo.getNewPassword()));
        if(userService.saveOrUpdate(user)){
            return Result.getSuccess().setMsg("修改成功");
        }else{
            return Result.getFailure().setMsg("修改失败");
        }
    }


    /**上传地址*/
    @Value("${file.upload.path}")
    private String uploadPath;
    /**
     * 上传图片
     * @param file
     */
    @RequestMapping("/upload")
    public Result upload(@RequestParam(value = "file") MultipartFile file,
                         @RequestParam(value = "userId") String id) {
        // 获取上传文件名
        String filename = file.getOriginalFilename();
        // 定义上传文件保存路径
        String path = uploadPath+"goodsImg/";
        // 新建文件
        File filepath = new File(path, filename);
        // 判断路径是否存在,如果不存在就创建一个
        if (!filepath.getParentFile().exists()) {
            filepath.getParentFile().mkdirs();
        }
        try {
            file.transferTo(new File(path + File.separator + filename));
        } catch (IOException e) {
            e.printStackTrace();
        }
        User user = userService.getById(id);
        user.setAvatarUrl("goodsImg/"+filename);
        userService.updateById(user);
        Map<String,String> img = new HashMap<>();
        img.put("src","goodsImg/"+filename);
        return Result.getSuccess().setData(img);
    }

    @GetMapping("/manage/{id}")
    public Result manage(@PathVariable String id){

        User user = userService.getById(id);

        if(user.getType() == 0){
            user.setType(1);
        }else if(user.getType() == 1){
            user.setType(0);
        }
        userService.updateById(user);

        return Result.getSuccess().setMsg("操作成功!!!");
    }

    @GetMapping("/resetPwd/{id}")
    public Result resetPwd(@PathVariable String id){
        User user = userService.getById(id);

        user.setPassword(DigestUtil.md5Hex("12345678"));

        userService.updateById(user);

        return Result.getSuccess().setMsg("操作成功!!!");
    }
}

User.java

package com.laji.demo.entity;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 用户表
 * </p>
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 姓名
     */
    private String name;

    /**
     * 性别(0为女,1为男)
     */
    private Integer sex;

    /**
     * 生日
     */
    private LocalDate birthday;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 电话
     */
    private String tel;

    /**
     * 地址
     */
    private String address;

    /**
     * 用户头像地址
     */
    private String avatarUrl;

    /**
     * 用户权限(0为员工,1为管理员,2为高级管理员)
     */
    private Integer type;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private LocalDateTime createTime;


}



四、其他

获取源码

点击以下链接获取源码。
IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码
IDEA+SpringBoot+mybatis+SSM+layui+Mysql学生就业信息管理系统源码
IDEA+springboot+jpa+Layui+Mysql销售考评系统源码
IDEA+Spring + Spring MVC + MyBatis+Bootstrap+Mysql酒店管理系统源码
IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

Java+Swing+Mysql实现学生宿舍管理系统

Java+Swing+Txt实现自助款机系统

Java+Swing+Mysql自助存取款机系统

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

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

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

相关文章

Python的网络爬虫框架-网络爬虫常用框架

Python的网络爬虫框架-网络爬虫常用框架 一、前言二、引言三、Scrapy 爬虫框架四、Crawley 爬虫框架五、PySpider 爬虫框架 一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起来了解Python的网络爬虫框架-网络爬虫常用框架如果文章对你有帮助、欢迎关注、点…

Redis缓存同步1-策略介绍

缓存数据同步策略示意图 在大多数情况下&#xff0c;我们通过浏览器查询到的数据都是缓存数据&#xff0c;如果缓存数据与数据库的数据存在较大差异的话&#xff0c;可能会产生比较严重的后果的。所以&#xff0c;我们应该也必须保证数据库数据、缓存数据的一致性&#xff0c;…

基于simulink使用颜色识别来进行道路跟踪(附源码)

一、前言 此示例演示如何使用颜色信息来检测和跟踪在可能不存在车道标记的主要住宅环境中设置的道路边缘。基于颜色的跟踪示例说明了如何使用色彩空间转换块、霍夫变换块和卡尔曼滤波器块来检测和跟踪使用色调和饱和度的信息。 二、模型 下图显示了基于颜色的道路跟踪模型&a…

MATLAB的num2str,把循环变量作为字符串的内容

MATLAB的num2str&#xff0c;把循环变量作为字符串的内容 输入代码&#xff1a; i 2; abc [sdfg,num2str(i),dsfg]运行结果&#xff1a; 解析&#xff1a; MATLAB里面的[ ]是会把元素组合的意思 现在有&#xff1a; a1 3; a2 4; a3 5; 然后我想通过for循环&#xff0c;循…

mac与pd虚拟机之间不能粘贴文字或粘贴文件

首先确保共享打开&#xff1a; 然后检查虚拟机的Parallels Tools是否正常 一个简单的判断方式就是&#xff0c;退出虚拟机全屏之后&#xff0c;如果能够正常进入融合模式&#xff0c;那么Parallels Tools可用&#xff0c;否则就要排查问题 检查Parallels Tools是否随系统正常启…

C++11 | 智能指针

智能指针 前面的文章中我们介绍了C中的异常有关的知识点&#xff0c;同时在其中我们遇到了有关内存方面的问题&#xff0c;如下所示&#xff1a; int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; } void…

数据结构算法题——链表

leetcode-2.两数之和 leetcode-2.两数之和 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数…

猿人学做题笔记

简单记录一下做题的思路步骤 1、第一题说的是无混淆加密&#xff08;简单&#xff09;&#xff1a; 刚开始观察请求&#xff0c;发现链接和请求携带的参数都没有什么异常&#xff0c;然后直接请求会拿不到数据&#xff0c;于是仔细看了一下请求包&#xff0c;发现请求头里面有…

03-Vue基础语法之指令语法与条件渲染

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&#xff1a;python学不会123 &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习…

【GaussDB(DWS)】数据分布式存储-三种类型的表

toc 一、环境说明 华为数据仓库服务DWS&#xff0c;集群版本8.1.3.320集群拓扑结构&#xff1a; 二、数据分布式方式 DWS采用水平分表的方式&#xff0c;将业务数据表的元组打散存储到各个节点内。这样带来的好处在于&#xff0c;查询中通过查询条件过滤不必要的数据&#…

[工业互联-18]:常见EtherCAT主站方案:SOEM的Windows/Linux解决方案

目录 第1章 SOEM 简介 第2章 SOEM创建EtherCAT主站 2.1 支持Linux和Windows操作系统 2.2 SOEM创建EtherCAT主站的步骤 第3章 QT添加SOEM主站 第1章 SOEM 简介 SOEM (Simple Open EtherCAT Master) 是一种开源的EtherCAT主站协议栈。 EtherCAT&#xff08;Ethernet for C…

飞轮储能系统的建模与MATLAB仿真(永磁同步电机作为飞轮驱动电机)

简介 飞轮储能系统由于其高储能密度、高效率、轻污染的优点而越来越受到重视。飞轮储能系统以高速旋转的飞轮为依托&#xff0c;通过电力电子设备实现电能与动能的相互转化&#xff0c;从而在负载调峰、功率平抑、不间断电源等多领域都有很好的应用表现。 本文选用永磁同步电机…

基于simulink仿真车道偏离警告系统(附源码)

一、前言 此示例演示如何在视频序列中检测和跟踪道路车道标记&#xff0c;并在驾驶员穿过车道时通知驾驶员。该示例说明了如何使用霍夫变换、霍夫线和卡尔曼滤波器模块来创建线检测和跟踪算法。该示例使用以下步骤实现此算法&#xff1a;1&#xff09; 检测当前视频帧中的车道…

计算机通信地址【图解TCP/IP(笔记六)】

文章目录 地址地址的唯一性地址的层次性 地址 通信传输中&#xff0c;发送端和接收端可以被视为通信主体。它们都能由一个所谓“地址”的信息加以标识出来。当人们使用电话时&#xff0c;电话号码就相当于“地址”。当人们选择写信时&#xff0c;通信地址加上姓名就相当于“地…

HarmonyOS学习路之开发篇—数据管理(数据存储管理)

数据存储管理概述 数据存储管理指导开发者基于HarmonyOS进行存储设备&#xff08;包含本地存储、SD卡、U盘等&#xff09;的数据存储管理能力的开发&#xff0c;包括获取存储设备列表&#xff0c;获取存储设备视图等。 基本概念 数据存储管理 数据存储管理包括了获取存储设备…

Vue3+Vite项目配置@路径别名

一、根目录下 vite.config.ts 文件中配置 import { resolve } from path;resolve: {// 设置文件./src路径为 alias: [{find: ,replacement: resolve(__dirname, ./src)}] }二、根目录下 tsconfig.json 文件中配置 //配置 "baseUrl": ".", "paths&qu…

【复习25-29题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第二十天 20/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

智能底盘(2) | 汽车制动系统的发展概述

摘要&#xff1a; 自汽车诞生以来&#xff0c;车辆制动系统就始终在实现汽车流畅操控、保障汽车安全等功能中起着决定性的作用。而制动系统本身也随着工业技术的变革和汽车行业的发展持续进化。 根据制动场景的区别&#xff0c;制动系统可以分为以下两类&#xff1a; 行车制动…

开源新项目Auto-Annotation,这你不了解一下

Auto-Annotation 一个注解实现对业务功能增强的注解集 项目简介 ​ 项目源码开源地址&#xff1a;点这里 ​ 对业务开发过程中经常遇见的一些通用场景进行注解封装&#xff0c;形成一系列比较通用的注解集&#xff0c;来满足日常开发需要。注解集随业务拓展不断更新中&#…

Qt6 第一天认识基本模块、附加模块、支持的平台、QML用户界面

文章目录 Qt6 焦点Qt6 核心-基本模块Qt6 附加模块Qt6 支持的平台Qt6 简介Qt6 消化用户界面 Qt6 焦点 Qt 5在很多年前发布&#xff0c;引入了一种新的声明方式来编写令人惊叹的用户界面。从那时起&#xff0c;我们周围的世界发生了很大的变化。 Qt 6将是Qt 5的延续&#xff0c;不…