【开源】基于Vue.js的校园二手交易系统的设计和实现

在这里插入图片描述

目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目详细录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 二手商品档案管理模块
    • 2.3 商品预约管理模块
    • 2.4 商品预定管理模块
    • 2.5 商品留言板管理模块
    • 2.6 商品资讯管理模块
  • 三、实体类设计
    • 3.1 用户表
    • 3.2 二手商品表
    • 3.3 商品预约表
    • 3.4 商品预定表
    • 3.5 留言表
    • 3.6 资讯表
  • 四、界面展示
  • 五、核心代码
    • 5.1 用户网页登录
    • 5.2 用户网页注册
    • 5.3 新增商品预约
    • 5.4 商品审核
    • 5.5 查询留言
  • 六、免责说明


一、摘要

1.1 项目介绍

随着国家生产力的发展,越来越多商品被生产了出来,超过了人们的实际消耗量,所以产生了大量闲置的商品,这些闲置商品有些被遗弃、有些通过二手平台被他人使用。为了防止不必要的浪费,开发了这套面向校园的二手交易系统,帮助用户高效率的转卖闲置的二手商品。

校园二手交易系统使用Idea开发工具完成了编码实现。前端采用Vue.js,采用View UI组件库美化界面,后端采用SpringBoot框架。在操作系统、开发语言、服务器,数据库、连接技术方面,对应使用Window操作系统、Java语言、Tomcat服务器、MySql数据库以及MyBatis技术完成系统搭建。该系统基于B/S架构,采用前后端分离架构,分为网页前台和管理后台,使用户可以在系统上发布与购买二手商品、进行留言以及掌握最新商品咨询。

  • 前端:Vue 2.7.10

  • 后端:Spring Boot 3.1.10

  • 数据库:MySQL 8.0.31

1.2 项目详细录屏

源码下载


二、功能模块

校园二手交易平台的功能性需求主要包含数据中心模块、二手商品档案模块、商品预约模块、商品预定模块、商品留言板模块、商品资讯模块六大模块,是基于浏览器运行的web管理后端,其中各个模块详细说明如下:

2.1 数据中心模块

数据中心模块包含了校园二手交易平台的系统基础配置,如登录用户的管理、二手平台组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。

其中登录用户管理模块,由二手平台管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。

二手组织架构,指的是二手平台管理运营公司的组织架构,该模块适用于管理这些组织架构的部门层级和员工的部门归属情况。

用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。

系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。

公用云盘管理模块,用于统一化维护校园二手交易平台中的图片,如二手商品的照片、保险单、三方协议等等。

在这里插入图片描述

2.2 二手商品档案管理模块

二手商品档案模块,维护了校园二手交易平台中发布的二手商品数据,管理员可以对二手商品数据进行增加、删除、修改、查询操作。

2.3 商品预约管理模块

商品预约指的是买家有了初步意向,申请线下查看。注册用户可以在二手商品档案模块发起预约申请,卖家在收到预约申请后,主动联系买家对接后续预约事宜。

在这里插入图片描述

2.4 商品预定管理模块

商品预定,指买家决定购买选定的商品。买家可以在二手商品档案中选择心仪的二手商品进行预定,并输入理想的价格和可选的备注信息,卖家就可以收到这个交易订单。卖家有权同意或驳回买家的预定请求,如果同意,则生成商品交易单,确定交易。

在这里插入图片描述

2.5 商品留言板管理模块

二手商品的买卖过程中难免会有一些咨询和纠纷,所以校园二手交易平台专门设计了商品留言板模块,用于解决买家和卖家、买家和二手平台的纠纷。任何一方可以在留言板中留言,或对已留言的信
息进行回复。

在这里插入图片描述

2.6 商品资讯管理模块

商品资讯管理模块,用于校园二手交易平台发布一些商品新闻,以及防诈骗推文等系统注册用户可以阅读到这些新闻信息。

在这里插入图片描述


三、实体类设计

3.1 用户表

数据中心模块最核心的就是用户了,用户的信息包括了手机号、地址、邮箱、身份证、性别等数据等。

在这里插入图片描述

在这里插入图片描述

3.2 二手商品表

二手商品档案模块是对系统内二手商品的数据进行管理,二手商品的数据包括商品ID、商品品牌、三方检测、商品照片、价格、卖家姓名、卖家手机、备注。

在这里插入图片描述

在这里插入图片描述

3.3 商品预约表

商品预约模块用于买家对商品的线下预约,商品预约模块应该包括商品ID、商品品牌、商品照片、卖家姓名、卖家手机、预约时间、预约地点、备注。

在这里插入图片描述

在这里插入图片描述

3.4 商品预定表

商品预定模块主要是对学生的下单信息进行记录和存储,例如商品ID、商品品牌、商品照片、卖家姓名、卖家手机、下单时间、约定价格、备注。

在这里插入图片描述

在这里插入图片描述

3.5 留言表

商品留言板用于解决买家和卖家、买家和二手平台的纠纷,包括留言内容、留言人、留言时间、是否回复、回复人、回复时间、回复内容、备注,任何一方可以在留言板中留言,或对已留言的信息进行回复。

在这里插入图片描述

在这里插入图片描述

3.6 资讯表

商品资讯管理模块,用于二手平台发布一些商品新闻,以及防诈骗推文等系统注册用户可以阅读到这些新闻信息,包括发布人ID、发布人、发布内容、图片、附件、发布时间、排序值、发布状态。

在这里插入图片描述

在这里插入图片描述

四、界面展示

此系统用于校园二手交易网站工作人员和注册买家。首先是校园二手交易网站的工作人员,可以对数据中心模块进行配置,发布、删除二手商品信息,查询学生的预约、预定信息。

对于注册买家,可以查询管理员发布的二手商品档案,并根据自己的需求进行预定、预约。
在这里插入图片描述

二手商品档案模块,维护了校园二手交易网站中发布的二手商品数据,管理员可以对二手商品数据进行增加、删除、修改、查询操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 用户网页登录

@RequestMapping(value = "/loginOnWeb", method = RequestMethod.GET)
@ApiOperation(value = "网站前台登陆")
public Result<String> loginOnWeb(@RequestParam String userName, @RequestParam String password){QueryWrapper<User> qw = new QueryWrapper<>();qw.eq("username",userName);List<User> userList = iUserService.list(qw);if(userList.size() < 1) {return ResultUtil.error("用户不存在");}User user = userList.get(0);if(!new BCryptPasswordEncoder().matches(password, user.getPassword())){return ResultUtil.error("密码不正确");}String accessToken = securityUtil.getToken(user.getUsername(), true);UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(new SecurityUserDetails(user), null, null);SecurityContextHolder.getContext().setAuthentication(authentication);return new ResultUtil<String>().setData(accessToken);
}

5.2 用户网页注册

@RequestMapping(value = "/reOnWeb", method = RequestMethod.GET)
@ApiOperation(value = "网站前台注册")
public Result<String> reOnWeb(@RequestParam String userName,@RequestParam String mobile,@RequestParam String password){QueryWrapper<User> qw = new QueryWrapper<>();qw.eq("username",userName);qw.and(wrapper -> wrapper.eq("username", userName).or().eq("mobile",mobile));Long userCount = iUserService.count(qw);if(userCount > 0) {return ResultUtil.error("用户已存在");}User u = new User();u.setUsername(userName);u.setNickname(userName);u.setMobile(mobile);u.setEmail(u.getMobile() + "@qq.com");String encryptPass = new BCryptPasswordEncoder().encode(password);u.setPassword(encryptPass).setType(0);iUserService.saveOrUpdate(u);QueryWrapper<Role> roleQw = new QueryWrapper<>();roleQw.eq("default_role",true);List<Role> roleList = iRoleService.list(roleQw);if(roleList.size() > 0){for(Role role : roleList) {iUserRoleService.saveOrUpdate(new UserRole().setUserId(u.getId()).setRoleId(role.getId()));}}String accessToken = securityUtil.getToken(u.getUsername(), true);UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(new SecurityUserDetails(u), null, null);SecurityContextHolder.getContext().setAuthentication(authentication);return new ResultUtil<String>().setData(accessToken);
}

5.3 新增商品预约

@RequestMapping(value = "/addOrder", method = RequestMethod.GET)
@ApiOperation(value = "新增单条二手商品预定单")
public Result<Object> addOrder(@RequestParam String carId){UsedCar usedCar = iUsedCarService.getById(carId);if(usedCar == null) {return ResultUtil.error("二手商品不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<CarOrder> qw = new QueryWrapper<>();qw.eq("car_id",carId);qw.eq("buy_id",currUser.getId());if(iCarOrderService.count(qw) > 0L) {return ResultUtil.error("您已预定,无需重复预定");}CarOrder carOrder = new CarOrder();carOrder.setCarId(carId);carOrder.setBrand(usedCar.getBrand());carOrder.setSellerMoney(usedCar.getMoney());carOrder.setImageUrl(usedCar.getImageUrl());carOrder.setSellerId(usedCar.getSellId());carOrder.setSellerName(usedCar.getSellName());carOrder.setSellerMobile(usedCar.getSellMobile());carOrder.setBuyId(currUser.getId());carOrder.setBuyName(currUser.getNickname());carOrder.setOrderTime(DateUtil.now());carOrder.setContractFlag(false);carOrder.setContractTime("");iCarOrderService.saveOrUpdate(carOrder);return ResultUtil.success();
}

5.4 商品审核

@RequestMapping(value = "/doAudit", method = RequestMethod.POST)
@ApiOperation(value = "审核")
public Result<Object> doAudit(@RequestParam String id){CarOrder carOrder = iCarOrderService.getById(id);if(carOrder == null) {return ResultUtil.error("订单不存在");}carOrder.setAuditFlag(true);iCarOrderService.saveOrUpdate(carOrder);return ResultUtil.success();
}

5.5 查询留言

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询留言")
public Result<IPage<MessageBoard>> getByPage(@ModelAttribute MessageBoard board,@ModelAttribute PageVo page){QueryWrapper<MessageBoard> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(board.getDate())) {qw.eq("date",board.getDate());}if(ZwzNullUtils.isNull(board.getReplyId())) {qw.eq("reply_id","");} else {qw.eq("reply_id",board.getReplyId());}return new ResultUtil<IPage<MessageBoard>>().setData(iMessageBoardService.page(PageUtil.initMpPage(page),qw));
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

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

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

相关文章

SharePoint-连接Excel

Power Automate和Power Apps想要连接Excel表格的话&#xff0c;可以在OneDrive或SharePoint网站的文档中创建Excel文件&#xff0c;然后把Excel转换成table表格 以SharePoint为例&#xff0c;在文档中点击新建&#xff0c;选择Excel工作簿 填写内容&#xff0c;然后全选选中 在…

CRM系统对科技企业有哪些帮助

随着国家政策的倾斜和5G等相关基础技术的发展&#xff0c;中国人工智能产业在各方的共同推动下进入爆发式增长阶段&#xff0c;市场发展潜力巨大。CRM客户管理系统作为当下最热门的企业应用&#xff0c;同样市场前景广阔。那么&#xff0c;CRM系统对科技企业有哪些帮助&#xf…

2023年 华为杯数学建模 E题

本科大三的时候&#xff0c;打过一次美赛&#xff0c;当时租了一个民宿&#xff0c;和队友一起度过了专注的四天。当时比赛结束之后&#xff0c;拿着手机&#xff0c;看到四天没回的消息&#xff0c;四天没刷过的朋友圈&#xff0c;有种很新奇的感觉&#xff0c;谢谢美赛给了我…

MySQL数据库清理Relay_Log_File日志

背景 “Relay_Log_File” 是 MySQL 中用于复制的参数之一。在 MySQL 复制中&#xff0c;当一个服务器作为主服务器&#xff08;master&#xff09;时&#xff0c;它会将其更改写入二进制日志文件&#xff08;binary log file&#xff09;。而另一个服务器作为从服务器&#xf…

买台灯看什么参数?考公必备护眼台灯推荐

说到台灯相信大家都不陌生&#xff0c;不管是平时间休闲看书、办公&#xff0c;还是孩子学习阅读时都会用的上。不过台灯还是不能随便乱买的&#xff0c;因为如果买的台灯品质不合格&#xff0c;光源质量太差&#xff0c;使用久了还会对眼睛带来不好的影响。 所以我们在挑选台灯…

flutter下拉列表

下拉列表 内容和下拉列表的标题均可滑动 Expanded&#xff1a; 内容限制组件&#xff0c;将其子类中的无限扩展的界面限制在一定范围中。在此使用&#xff0c;是为了防止下拉列表中的内容超过了屏幕限制。 SingleChildScrollView&#xff1a; 这个组件&#xff0c;从名字中可…

idea查看UML类图

idea查看UML类图 一、如何查看UML类图 1.1 选择需要查看的类或者包&#xff0c;鼠标右键&#xff0c;选择Diagrams->Show Diagram 1.2 对于UML类图中的包&#xff0c;选中后点击鼠标右键-> Expand Nodes(展开节点) 展开前 展开后 1.3 展开后分布比较凌乱&#xff…

北大腾讯打造多模态15边形战士!语言作“纽带”,拳打脚踢各模态,超越Imagebind

AI4Happiness 投稿 量子位 | 公众号 QbitAI 北大联合腾讯打造了一个多模态15边形战士&#xff01; 以语言为中心&#xff0c;“拳打脚踢”视频、音频、深度、红外理解等各模态。 具体来说&#xff0c;研究人员提出了一个叫做LanguageBind的多模态预训练框架。 用语言作为与其…

手写LASSO回归python实现

import numpy as np from matplotlib.font_manager import FontProperties from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split import matplotlib.pyplot as pltclass Lasso():def __init__(self):pass# 数据准备def prepar…

Hoppscotch:开源 API 开发工具,快捷实用 | 开源日报 No.77

hoppscotch/hoppscotch Stars: 56.1k License: MIT Hoppscotch 是一个开源的 API 开发生态系统&#xff0c;主要功能包括发送请求和获取实时响应。该项目具有以下核心优势&#xff1a; 轻量级&#xff1a;采用简约的 UI 设计。快速&#xff1a;实时发送请求并获得响应。支持多…

Servlet 常见的API

文章目录 写在前面Smart Tomcat 插件Servlet 中常见的API1. HttpServletinit 方法destroy 方法service 方法Servlet 的生命周期 使用 postman 构造请求使用 ajax 构造请求2. HttpServletRequest3. 前端给后端传参1). GET, query string2). POST, form3). json 4. HttpServletRe…

JWT登录认证(2认证)

备注说明&#xff1a; 用户登录成功后&#xff0c;系统会自动下发JWT令牌&#xff0c;然后在后续的每次请求中&#xff0c;浏览器都需要在请求头header中携带到服务器&#xff0c;请求头的名称为Authorization&#xff0c;值为登录时下发的JWT令牌。 如果检测到用户未登录&…

通过右键用WebStorm、Idea打开某个文件夹或者在某一文件夹下右键打开当前文件夹用上述两个应用

通过右键用WebStorm、Idea打开某个文件夹或者在某一文件夹下右键打开当前文件夹用上述两个应用 通过右键点击某个文件夹用Idea打开 首先打开注册表 win R 输入 regedit 然后找到HKEY_CLASSES_ROOT\Directory\shell 然后右键shell 新建一个项名字就叫 Idea 第一步&#xf…

社区论坛小程序源码系统,功能齐全,页面简洁,前端+后端+完整部署教程

现如今&#xff0c;社区论坛已经成为人们交流思想&#xff0c;分享经验&#xff0c;获取信息的重要平台。近年来&#xff0c;小程序的出现更是改变了传统的网站建设方式&#xff0c;让用户体验更加便捷&#xff0c;高效。今天源码小编来和大家分享一款社区论坛小程序源码系统&a…

蓝桥杯每日一题2023.11.13

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 由于每次吹灭的蜡烛与年龄相同故我们想到使用前缀和可以让我们求出各个区间的和&#xff0c;我们将每个区间都枚举一遍&#xff0c;如果符合要求就输出区间开始的位置&#xff08;答案&#xff…

JVM——类加载器(JDK8及之前,双亲委派机制)

目录 1.类加载器的分类1.实现方式分类1.虚拟机底层实现2.JDK中默认提供或者自定义 2.类加载器的分类-启动类加载器3.类加载器的分类-Java中的默认类加载器4.类加载器的分类-扩展类加载器5.类加载器的分类-类加载器的继承 2.类加载器的双亲委派机制 类加载器&#xff08;ClassLo…

Page分页records有数据,但是total=0,解决办法

Page分页records有数据&#xff0c;但是total0&#xff0c;解决办法 问题&#xff1a;程序运行起来后&#xff0c;后端接收前端传来的搜索请求信息正常&#xff0c;但无法在前端正确反馈信息&#xff0c;通过在后端排查发现total一直等于零&#xff0c;但数据库中有数据&#x…

使用postman测试

第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a;添加请求 第四步&#xff1a;填写请求 代码实现自动关联的位置&#xff1a; 为相关联的接口设置环境&#xff1a; 使用设置的环境变量&#xff1a; 参数化实现测试&#xff1a;测试脚本中仅测试数据不一样&#xff…

postman导入请求到jmeter进行简单压测,开发同学一学就会

背景# 这个事情也是最近做的&#xff0c;因为线上nginx被我换成了openresty&#xff0c;然后接入层服务也做了较大改动&#xff0c;虽然我们这个app&#xff08;内部办公类&#xff09;并发不算高&#xff0c;但好歹还是压测一下&#xff0c;上线时心里也稳一点。 于是用jmet…

CTFhub-RCE-过滤空格

1. 查看当前目录&#xff1a;127.0.0.1|ls 2. 查看 flag_890277429145.php 127.0.0.1|cat flag_890277429145.php 根据题目可以知道空格被过滤掉了 3.空格可以用以下字符代替&#xff1a; < 、>、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等 $IFS在li…