当前位置: 首页 > news >正文

基于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/*.xmlspring.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:8080spring.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 {@Autowiredprivate 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 、 获取方式

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

相关文章:

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

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于VUE的校园二手物品交易管理系统8拥有两种角色 管理员:闲置物品管理、订单管理、用户管理 用户:登录注册、购物车、发布闲置物品、评论、发货、收货地址管理等…...

pytest 常用的辅助函数和工具函数

pytest 常用的辅助函数和工具函数示例 # File: my_module.pydef fetch_data():return process datadef process_data():data fetch_data()return data.upper() import logging import sys import pytest#01-------------------------------pytest.fixture,sample_data 在测试…...

记录Java秋招面经(网上找的)

1.Mysql的存储机制,怎么落到库里面的? 当数据插入 MySQL 时,首先数据修改会在内存中的 Buffer Pool 中完成,同时记录写入 Redo Log 以保证事务的持久性。事务提交时,日志会被刷入磁盘,确保数据可以恢复。修…...

记录k8s重启之后kubelet无法启动的问题

重启机器后,kubelet没有自启动,手动启动失败,检查日志反馈找不到bootstrap-kubelet.conf这个文件。 systemctl start kubelet journalctl -u kubelet 57481 run.go:74] "command failed" err"failed to run Kubelet: unable …...

IA——网络操作设备VRP简介

一,VRP简介 二,网络设备的管理 (1)console口: (2)talnet: (3)SSH: 安全的远程登陆 (4)通过WEB页面登录: 三,命令行常见…...

Java项目: 基于SpringBoot+mysql企业客户管理系统(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql企业客户管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功…...

基于STM32设计的智能安防系统(微信小程序)(218)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】微信小程序开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发工具的选择【1】设备端…...

tomcat redis minio nginx windows开机自启

tomcat 开机自启 命令 service.bat install 控制台输入 service.bat install 再到服务中去查看有没有注册成功,minio,redis,nginx 也是一样在服务里查看注册成功没 redis 开机自启 命令 redis-server.exe --service-install redis.windows.conf --loglevel ve…...

Docker构建镜像教程

目录 1. Docker 环境准备2. 编写 Dockerfile3. 构建 Docker 镜像4. 运行容器5. 管理镜像和容器6. 镜像的导出和导入6.1 导出 Docker 镜像6.2 导入 Docker 镜像6.3 导出与导入的实际场景6.4 压缩导出的镜像 7. 推送镜像到 Docker Hub8. Dockerfile 指令详解1. FROM2. RUN3. WORK…...

扑捉一只耿鬼(HTML文件)

图例&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>耿鬼</title><style>body {background: #fff;font-family: Comfortaa, sans-serif;}* {box-sizing:…...

Address localhost:1099 is already in use:tomcat频繁重启端口占用问题

错误提示 Unable to open debugger port (127.0.0.1:58198): java.net.SocketException "Socket closed" Address localhost:1099 is already in use 端口被占用 报错原因 由于短时间内频繁运行tomcat服务器。 为了避免出现这一错误。可以点击刷新uodate resourc…...

HTTPS SEO优势

搜索引擎优化&#xff08;SEO&#xff09;是提高网站在搜索引擎结果页&#xff08;SERP&#xff09;中的排名以吸引更多访问者的过程。HTTPS作为网站安全的标准&#xff0c;对SEO有着直接和间接的优势&#xff1a; 1. HTTPS作为排名信号 2014年&#xff0c;Google宣布HTTPS成…...

UE5 C++ 读取图片插件(一)

原来UE可以使用 static,之前不知道&#xff0c;一用就报错。 static TSharedPtr<IImageWrapper> GetImageWrapperByExtention(const FString InImagePath); //智能指针&#xff0c;方便追寻引用C,加载ImageWrapperstatic UTexture2D* LoadTexture2D(const FString& …...

C语言行地址列地址区别,内存的分配

开辟了10个字节的空间在栈中 "abc"常量在代码段 char a[10]"abc"; p&#xff1a;8个字节存"abc"的地址 "abc"常量在代码段中 char *p"abc" char *q"abc" p,q的值是一样的 到…...

Unity 一键修改图片缩放保存为当前的一半大小

用来压缩贴图大小还是比较方便的 支持 png,jpg,tga 话不多说 直接上代码 [MenuItem("Assets/扩展功能/缩放贴图一半尺寸&#xff08;png | jpg | tga&#xff09;", false)]static void ScaleHalfTextureSizeMenu(){foreach(var obj in Selection.objects) {Texture…...

Identifying User Goals from UI Trajectories论文学习

通过UI轨迹识别用户的需求。 这篇论文同样聚焦于UI agent&#xff0c;只是思路比较特别。他们想要通过训练agent通过用户的行为轨迹反推出他们想要干什么的能力来锻炼agent识别&#xff0c;理解&#xff0c;使用UI的能力。同时这个训练项目本身也有一定的实际意义&#xff0c;…...

[STM32]从零开始的STM32标准库环境搭建(小白向)

一、我们为什么要搭建STM32标准库开发环境 如果你对STM32有一定的了解&#xff0c;相信你已经认识了STM32的几种开发方式。基于STM32寄存器开发&#xff0c;基于ST官方的标准库开发&#xff0c;基于ST官方的HAL库开发。我们现在来了解一下这些库的优缺点。首先就是基于寄存器开…...

解决 Android 上的 .NET MAUI/Xamarin.AndroidX 应用调用 ASP.NET Core API 端点时 SSL 连接被拒绝的问题

从虚拟机调用本地API报各种 SSL 连接不上的错误&#xff0c;这给本地调试造成了极大的不便&#xff0c;在被这个问题困扰了多日以后&#xff0c;终于在GitHub上找到答案 基于这个 帖子 &#xff0c;有一个回复 他写了一个帮助类&#xff0c;专门用来调试本地的API&#xff0c;…...

助贷CRM系统:为金融中介行业打造全新营销管理模式

助贷CRM&#xff08;客户关系管理&#xff09;系统是针对金融中介行业&#xff0c;特别是从事贷款助贷业务的机构设计的一套综合管理系统。该系统旨在通过数字化、智能化的手段&#xff0c;优化金融中介机构的营销、销售、客户管理及服务流程&#xff0c;提升运营效率&#xff…...

HBase 部署及shell操作

HBase 数据库 一、HBase 概述1.1 HBase 是什么HBase 的特点 二、HBase 模型及架构2.1 HBase 逻辑模型2.2 HBase 数据模型2.3 HBase 物理模型2.3.1 列簇物理模型2.3.2 Rowkey 字段排序2.3.3 Region 存储到不同节点2.3.4 Region 结构 2.4 HBase 基本架构 三、搭建 HBase 分布式集…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...