基于VUE的校园二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程)

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

  基于VUE的校园二手物品交易管理系统8拥有两种角色

管理员:闲置物品管理、订单管理、用户管理

用户:登录注册、购物车、发布闲置物品、评论、发货、收货地址管理等

1.1 背景描述

  基于VUE的校园二手物品交易管理系统是一个使用Vue.js框架构建的Web应用程序。它旨在提供一个方便、可靠的平台,以管理校园内的二手物品交易。该系统主要包括用户管理、物品管理、订单管理和评价管理等功能。

  用户管理模块允许学生、教师和管理员注册、登录和修改个人信息。物品管理模块使学生可以发布和搜索物品,包括名称、描述和价格等信息。订单管理模块涵盖了订单生成、支付和发货等流程。评价管理模块则保障了交易的公正性和安全性。

  该系统特点在于界面友好、操作简便和功能完善。它满足了校园内二手物品交易的需求,使学生更方便地进行二手物品交易,提高物品利用率并节约资源。同时,它也减少了浪费并保护了环境。

2、项目技术

后端框架:springboot、Mybatis

前端技术:VUE

2.1 springboot

  Spring Boot是由Pivotal团队提供的基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,使得开发者能快速搭建Spring项目。

2.2 mysql

  MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

  • JAVA版本:JDK1.8
  • IDE类型:IDEA、Eclipse都可运行
  • tomcat版本:无需
  • 数据库类型:MySql(5.5-5.7、8.x版本都可)
  • maven版本:无限制
  • 硬件环境:Windows

4、功能截图+视频演示+文档目录

4.1 登录

登录

4.2 前端模块

商品详情

首页

4.3 用户模块

用户-下单

用户-地址管理

用户-发布闲置

用户-购物车

4.4 管理员模块

管理员-用户管理

管理员-订单管理

管理员-违规用户

管理员-闲置管理1

管理员-闲置管理2

5 、核心代码实现

5.1 配置代码

# 使用对象关系映射,将对象和xml文件联系起来
# 指定MyBatis映射文件的路径
mybatis.typeAliasesPackage=com.second.hand.trading.server.model
mybatis.mapperLocations=classpath:mapper/*.xml

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/second_hand_trading?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root

# multipart上传文件
spring.servlet.multipart.enabled=true
#单个文件上传最大值
spring.servlet.multipart.max-file-size=200MB
#单次上传最大值
spring.servlet.multipart.max-request-size=200MB
#文件存放目录
userFilePath=D:\\1\\backend\\src\\main\\resources\\image
# 后端url
baseUrl=http://localhost:8080

spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

# 中文乱码
server.servlet.encoding.charset=utf-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true

5.2 用户管理核心代码

package com.second.hand.trading.server.controller;

import com.second.hand.trading.server.enums.ErrorMsg;
import com.second.hand.trading.server.model.UserModel;
import com.second.hand.trading.server.service.UserService;
import com.second.hand.trading.server.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.sql.Timestamp;


@RestController
@RequestMapping("user")
public class UserController {

    @Autowired
    private UserService userService;


    /**
     * 注册账号
     * @param userModel
     * @return
     */
    @PostMapping("sign-in")
    public ResultVo signIn(@RequestBody  UserModel userModel) {
        System.out.println(userModel);
        userModel.setSignInTime(new Timestamp(System.currentTimeMillis()));
        if (userModel.getAvatar() == null || "".equals(userModel.getAvatar())) {
            userModel.setAvatar("https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png");
        }
        if (userService.userSignIn(userModel)) {
            return ResultVo.success(userModel);
        }
        return ResultVo.fail(ErrorMsg.REGISTER_ERROR);
    }

    /**
     * 登录,不安全,可伪造id,后期改进
     *
     * @param accountNumber
     * @param userPassword
     * @param response
     * @return
     */
    @RequestMapping("login")
    public ResultVo login(@RequestParam("accountNumber") @NotEmpty @NotNull String accountNumber,
                          @RequestParam("userPassword") @NotEmpty @NotNull String userPassword,
                          HttpServletResponse response) {
        UserModel userModel = userService.userLogin(accountNumber, userPassword);
        System.out.println("登录:" + userModel);

        System.out.println("===================================");
        System.out.println(accountNumber + "   " + userPassword);
        System.out.println("===================================");

        if (null == userModel) {
            return ResultVo.fail(ErrorMsg.EMAIL_LOGIN_ERROR);
        }

        // 用户名或者密码为空
        if(accountNumber.equals("") || userPassword.equals("")){
            return ResultVo.fail(ErrorMsg.EMAIL_LOGIN_ERROR);
        }

        // 手机号长度不足11位
        if(userModel.getAccountNumber().length() != 11){
            return ResultVo.fail(ErrorMsg.EMAIL_LOGIN_ERROR);
        }

        if(userModel.getUserStatus()!=null&&userModel.getUserStatus().equals((byte) 1)){
            return ResultVo.fail(ErrorMsg.ACCOUNT_Ban);
        }
        Cookie cookie = new Cookie("shUserId", String.valueOf(userModel.getId()));
//        cookie.setMaxAge(60 * 60 * 24 * 30);
        cookie.setPath("/");
        cookie.setHttpOnly(false);
        response.addCookie(cookie);
        return ResultVo.success(userModel);
    }

    /**
     * 退出登录
     *
     * @param shUserId
     * @param response
     * @return
     */
    @RequestMapping("logout")
    public ResultVo logout(@CookieValue("shUserId")
                           @NotNull(message = "登录异常 请重新登录")
                           @NotEmpty(message = "登录异常 请重新登录") String shUserId, HttpServletResponse response) {
        Cookie cookie = new Cookie("shUserId", shUserId);
        cookie.setMaxAge(0);
        cookie.setPath("/");
        cookie.setHttpOnly(true);
        response.addCookie(cookie);
        return ResultVo.success();
    }

    /**
     * 获取用户信息
     *
     * @param id
     * @return
     */
    @GetMapping("info")
    public ResultVo getOneUser(@CookieValue("shUserId") @NotNull(message = "登录异常 请重新登录")
                               @NotEmpty(message = "登录异常 请重新登录")
                                       String id) {
        return ResultVo.success(userService.getUser(Long.valueOf(id)));
    }

    /**
     * 修改用户公开信息
     * @param id
     * @param userModel
     * @return
     */
    @PostMapping("/info")
    public ResultVo updateUserPublicInfo(@CookieValue("shUserId") @NotNull(message = "登录异常 请重新登录")
                                     @NotEmpty(message = "登录异常 请重新登录")
                                             String id, @RequestBody  UserModel userModel) {
        userModel.setId(Long.valueOf(id));
        if (userService.updateUserInfo(userModel)) {
            return ResultVo.success();
        }
        return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
    }


    /**
     * 修改密码
     * @param id
     * @param oldPassword
     * @param newPassword
     * @return
     */
    @GetMapping("/password")
    public ResultVo updateUserPassword(@CookieValue("shUserId") @NotNull(message = "登录异常 请重新登录")
                                       @NotEmpty(message = "登录异常 请重新登录") String id,
                                       @RequestParam("oldPassword") @NotEmpty @NotNull String oldPassword,
                                       @RequestParam("newPassword") @NotEmpty @NotNull String newPassword) {
        if (userService.updatePassword(newPassword,oldPassword,Long.valueOf(id))) {
            return ResultVo.success();
        }
        return ResultVo.fail(ErrorMsg.PASSWORD_RESET_ERROR);
    }
}

6 、功能视频演示

基于VUE的校园二手物品交易管理系统8

7 、 获取方式

👇 大家点赞、收藏、关注、评论啦 👇🏻获取联系方式,后台回复关键词:二手👇🏻

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI在医学领域:MIL回归用于前列腺癌复发预测

2024年,全球男性新癌症病例预计为1029080例,其中前列腺癌病例预计为29%。前列腺癌是男性中第二常见的癌症类型,仅次于肺癌。它主要影响老年男性,且发病率随年龄增长而增加。前列腺癌的主要治疗方法是前列腺切除术,但术…

探索手势能够识别在训练数据中未观察到的情绪

介绍 论文地址:https://arxiv.org/pdf/2202.10571.pdf 基于人工智能的情感识别研究领域是各个领域不可或缺的,如机器人和情感计算,并在语音中使用面部表情和手势来实现人们提出了各种方法来识别一个人的情绪。然而,这些基于机器学…

C语言 | Leetcode C语言题解之第391题完美矩形

题目: 题解: /* 参照官方答案题解: 1.小矩形面积之和等于大矩形区域面积 2.矩形区域内部顶点出现次数只能是2次或4次(边界四个顶点只能出现一次) */ typedef struct {int x;int y; } Coordinate;typedef struct {Coor…

JavaWeb(后端)

Spring-MVC Spring MVC(Model-View-Controller)是Spring框架中的一个模块,用于构建基于MVC设计模式的Web应用程序。Spring MVC将应用程序分为三个主要部分: Model:负责处理数据和业务逻辑。View:负责展示…

Rancher 与 Kubernetes(K8s)的关系

1. 简介 1.1 Kubernetes 作为容器编排平台 Kubernetes 是一个开源平台,用于自动化部署、扩展和管理容器化的应用。它提供了容器调度、自动伸缩、健康检查、滚动更新等功能。 例子:假设您有一个微服务架构的应用程序,需要运行在多个节…

单例的饿汉式,懒汉式的线程安全问题

1 单例的饿汉式 对象在类加载的时候就创建了,线程安全,速度块,但是浪费空间, public class Hungry {//唯一对象private static final Hungry HUNGRY new Hungry();byte byte1[]new byte[1024];byte byte2[]new byte[1024];byte…

openSSL 如何降版本

文章目录 前言openSSL 如何降版本1. 卸载2. 安装新的openssl版本3. 验证 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&…

DDS-数据分发服务

目录 1.ROS2架构 2.DDS概念 参考资料 1.ROS2架构 在ROS 2(Robot Operating System 2)中,系统通常由以下几个核心部分组成,它们共同构成了ROS 2的架构和功能: Plumbing(管道): 这个术语在ROS …

Oracle OCP认证值得考吗? 需要门槛吗?

随着数据量的爆炸性增长和企业对数据依赖性的提升,对数据库专业人士的需求也在不断上升。OCP认证,作为Oracle公司提供的权威认证之一,长期以来被视为数据库专业人士技能和知识水平的重要标志。 但随着技术的发展和认证种类的增多,…

快速解决git am冲突

前言 当希望通过git am xxxx.patch,添加一些代码修改,如果代码版本相差较大,就可能产生冲突。 这种必须要我们手动修改冲突内容。 解决过程 1. git am 尝试打入patch补丁 git am 0004-patch.patch2. git apply --reject生成冲突文件 执行…

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:error是设置我们失败的logo 设置的文字上…

keil安装及运行第一个stm32程序

前言 记录如何安装keil软件及运行第一个stm32程序 目录 一、keil开发环境搭建 0.keil是什么 1.keil下载 2.keil软件安装 3.安装芯片支持包 4.破解激活 二、keil工程结构 1.创建目录结构 2.新建工程 3.配置项目 (1).例程准备 (2).工程目录管理 (3).选项配置 4.例…

渗透测试学习资源

burp学院 https://portswigger.net/burp/documentation/desktop/getting-started https://portswigger.net/web-security/ hacker101学院 https://www.hacker101.com/ https://github.com/bugcrowd/bugcrowd_university 如何白嫖自学网络安全技术,最稳最推荐的网…

CGAL 概念模型及Traits 概述

CGAL 概念模型及Traits 本节释了概念Concepts 、模型Models以及Traits类的含义。 CGAL Concepts and Models 概念Concepts是对类型的一组要求,即它具有特定的嵌套类型、特定的成员函数或具有特定的以该类型为参数的自由函数。概念的模型 Models是一个满足概念需求…

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨…

IEEE投稿模板翻译

>将这一行替换为您的稿件id号(双击此处编辑)< IEEE 期刊和会议论文的撰写准备&#xff08;2022&#xff09; 第一作者 A. 作者&#xff0c;IEEE成员&#xff0c;第二作者 B. 作者&#xff0c;第三作者 C. 作者 Jr.&#xff0c;IEEE成员 摘要—本文档为IEEE会刊、期刊和…

推荐一个Python流式JSON处理模块:streaming-json-py

每天&#xff0c;我们的设备、应用程序和服务都在生成大量的数据流&#xff0c;这些数据往往大多是以JSON格式存在的。 如何高效地解析和处理这些JSON数据流是一大挑战。今天&#xff0c;我要为大家介绍一个能极大简化这一过程的利器&#xff1a;streaming-json-py streaming…

负载均衡调度器--LVS

文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR的工作原理DR的特点:DR的网络配置1.配置负载均衡器2.配置后端服务器lo接口的作用 3.测试连接&#xff1a; DR的典型应用场景 TUN模式 L…

新电脑Win11系统想要降级为Win10怎么操作?

前言 现在的电脑大部分都是Windows 11系统&#xff0c;组装机还好一些&#xff0c;如果想要使用Windows 10&#xff0c;只需要在安装系统的时候选择Windows 10镜像即可。 但是对于新笔记本、厂商的成品机、一体机来说&#xff0c;只要是全新的电脑&#xff0c;基本上都是Wind…

评论的组件封装

主评论的人在数组第一层级&#xff0c;回复的评论都在children里面 【{ name:"张三" idGenerator: 475403892531269 info_Conmment":"今天天气晴朗&#x1f600;" children:[ { mainIdGenerator:475388950118469 name:"张三" name1&#x…