二手交易系统|二手物品交易系统|基于Springboot二手物品交易系统的设计与实现
二手交易系统|二手物品交易系统目录
基于Springboot二手物品交易系统的设计与实现
一、前言
随着校园生活的日益丰富和学生消费观念的转变,二手物品交易在校园内逐渐成为一种常见的生活方式。学生们通过交易闲置物品,不仅能够实现资源的合理利用,还能在一定程度上减轻经济负担。然而,传统的二手物品交易方式存在着信息传播不及时、交易流程不规范、安全保障不足等问题,给学生们带来了诸多不便。
为了解决这些问题,本系统基于Springboot框架进行设计与实现,旨在为校园内的师生提供一个便捷、安全、高效的二手物品交易平台。该系统能够整合二手物品交易的相关信息,规范交易流程,保障交易双方的权益,促进校园内二手物品的流通,营造节约环保的校园氛围。
二、系统功能设计
系统功能结构图

系统功能设计围绕用户的实际需求展开,涵盖了二手物品交易过程中的各个关键环节。商品分类管理能够对不同类型的二手商品进行清晰划分,方便用户快速查找所需物品;二手商品管理则涉及商品的发布、编辑、删除等操作,确保商品信息的准确性和时效性。
订单信息管理贯穿交易的全过程,记录订单的生成、状态变更等信息;取消购买管理用于处理用户取消交易的相关事宜,保障交易的灵活性。收货信息管理、发货信息管理和配送信息管理则分别负责交易双方的收货地址、发货详情以及物品配送过程的跟踪,让用户能够实时了解交易进度。
留言反馈功能为用户提供了交流的渠道,方便买卖双方沟通商品细节等问题;系统管理则包括用户管理、角色管理和权限管理等,确保系统的安全稳定运行,不同角色的用户拥有不同的操作权限,保障系统的有序管理。
三、系统实现
- 主要流程1:

1、管理员功能实现
(1)商品分类管理
管理员可以对商品分类进行全面管理,包括新增、修改、删除和查询商品分类信息。当新增商品分类时,管理员需要填写分类名称、分类描述等信息,系统会对这些信息进行校验,确保信息的完整性和唯一性。例如,若输入的分类名称已存在,系统会提示“该分类名称已存在,请重新输入”。修改分类信息时,管理员可以更新分类的各项属性,删除分类则需要确认该分类下没有商品,避免误删操作。查询功能支持按分类名称、创建时间等条件进行筛选,方便管理员快速找到所需分类。
(2)二手商品管理
管理员有权对用户发布的二手商品进行审核、下架等操作。用户发布商品后,需要经过管理员审核才能在平台上显示。管理员审核时,会检查商品信息是否符合规定,如是否包含违规内容、价格是否合理等。对于审核不通过的商品,管理员会填写驳回原因,方便用户修改后重新提交。对于违规或过期的商品,管理员可以进行下架处理,确保平台上商品的质量和有效性。同时,管理员还可以查看所有商品的销售情况、库存数量等统计信息,通过图表的形式直观展示,如下表为部分商品销售统计:
| 商品名称 | 销售数量 | 库存数量 |
|---|---|---|
| 自行车 | 15 | 8 |
| 笔记本电脑 | 10 | 5 |
| 考研资料 | 23 | 12 |

(3)订单信息管理
管理员能够查看所有用户的订单信息,包括订单编号、商品名称、交易双方信息、订单状态等。可以根据订单状态(如待付款、待发货、已发货、已完成等)对订单进行筛选和统计,了解不同状态订单的数量和占比。同时,管理员可以处理一些特殊订单问题,如订单异常、退款申请等,协调买卖双方解决纠纷,保障交易的顺利进行。

(4)取消购买管理
管理员可以查看用户提交的取消购买申请,了解取消原因,并根据实际情况进行处理。对于符合取消条件的申请,管理员会批准取消,并更新订单状态,同时通知交易双方。对于不符合条件的申请,管理员会驳回并说明原因,确保取消购买流程的规范和公正。

(5)收货信息管理
管理员可以查看所有用户的收货信息,包括收货人姓名、联系电话、收货地址等。当用户的收货信息出现异常时,管理员可以联系用户进行核实和修改,确保商品能够准确送达。同时,管理员可以对收货信息进行统计分析,了解不同地区的交易分布情况。
(6)发货信息管理
管理员可以监督商家的发货情况,查看发货信息是否完整、准确,如物流公司名称、物流单号等。对于未按时发货的商家,管理员会进行提醒和督促,保障买家的权益。同时,管理员可以统计不同物流公司的合作情况,评估其服务质量。

(7)配送信息管理
管理员能够跟踪商品的配送进度,通过物流单号查询商品的实时位置和配送状态。当配送过程中出现问题(如延迟、丢失等),管理员会及时与物流公司沟通,协助解决问题,确保商品能够按时送达买家手中。
(8)留言反馈管理
管理员可以查看用户之间的留言以及用户对平台的反馈信息。对于留言中出现的违规内容,管理员会进行删除和处理,维护良好的交流环境。对于用户的反馈意见和建议,管理员会进行整理和分析,不断优化平台功能和服务。

(9)系统管理
系统管理包括用户管理、角色管理和权限管理。管理员可以添加、修改、删除用户信息,为用户分配不同的角色。不同的角色拥有不同的权限,管理员可以根据实际需求设置角色的权限范围,确保用户只能进行其权限范围内的操作,保障系统的安全性。例如,普通用户只能进行商品购买、发布等操作,而管理员则拥有所有功能的操作权限。


2、用户功能实现
(1)商品分类浏览
用户可以按照商品分类浏览平台上的商品,每个分类下会显示该分类的所有商品列表,用户可以通过排序(如按价格从低到高、按发布时间从新到旧)和筛选(如价格区间、新旧程度)功能找到心仪的商品。点击分类名称即可进入该分类的商品页面,方便快捷。

(2)二手商品操作
用户可以发布自己的二手商品,填写商品名称、描述、价格、上传商品图片等信息,发布后等待管理员审核。对于自己发布的商品,用户可以进行修改和删除操作,修改时可以更新商品的各项信息,删除则需要确认该商品没有被下单。同时,用户可以收藏感兴趣的商品,方便后续查看和购买。

(3)订单信息管理
用户可以查看自己的所有订单,包括订单详情、订单状态等。在订单处于待付款状态时,用户可以进行付款操作;待发货状态时可以等待卖家发货;已发货状态时可以查看物流信息;已完成状态时可以对商品和卖家进行评价。用户还可以导出自己的订单记录,方便进行个人财务统计。
(4)取消购买操作
当用户需要取消购买时,可以提交取消购买申请,填写取消原因。提交后,等待管理员审核,用户可以在取消购买管理页面查看申请的处理进度。若申请通过,订单状态会更新为已取消,相应的款项会按原支付方式退回。

(5)收货信息管理
用户可以添加、修改、删除自己的收货信息,设置默认收货地址。在下单时,用户可以选择已有的收货地址,也可以临时添加新的收货地址。系统会对收货信息进行校验,如手机号码格式是否正确、地址是否完整等,确保收货信息的准确性。
(6)发货信息管理
卖家用户在收到买家的订单并确认后,需要填写发货信息,包括物流公司名称、物流单号等,然后点击发货按钮。发货后,订单状态会更新为已发货,买家可以查看相应的发货信息和物流轨迹。

(7)配送信息查询
买家用户可以在订单详情页面查询商品的配送信息,包括物流单号、物流公司、当前配送位置、预计送达时间等。系统会实时同步物流信息,让买家能够及时了解商品的运输情况。
(8)留言反馈
用户可以在商品详情页面给卖家留言,咨询商品的详细信息,如使用年限、物品成色等。卖家会收到留言通知,并可以进行回复。同时,用户可以对平台的功能、服务等方面进行反馈,提出建议或投诉,平台会及时处理并回复。

(9)系统管理相关
普通用户可以修改自己的个人信息,如用户名、密码、联系方式等,查看自己的角色和权限。当忘记密码时,可以通过绑定的手机号码进行找回,保障账号的安全。


四、数据库设计
1、数据核心设计
数据库中各个表之间存在着不同的关系,具体如下:
- 商品分类表与二手商品表是一对多关系,一个商品分类下可以包含多个二手商品,而一个二手商品只能属于一个商品分类。
- 用户表与订单信息表是一对多关系,一个用户可以拥有多个订单,而一个订单只能属于一个用户(买家)。
- 二手商品表与订单信息表是一对多关系,一个二手商品可以对应多个订单(不同买家购买),而一个订单只能对应一个二手商品。
- 用户表与收货信息表是一对多关系,一个用户可以有多个收货地址,而一个收货地址只属于一个用户。
- 订单信息表与发货信息表是一对一关系,一个订单对应一个发货信息,一个发货信息也只对应一个订单。
- 订单信息表与配送信息表是一对一关系,一个订单有一条对应的配送信息,一条配送信息也只对应一个订单。
- 用户表与留言反馈表是一对多关系,一个用户可以发布多条留言反馈,一条留言反馈只属于一个用户。
2、数据库表结构
| 表名 | 字段名称 | 数据类型 | 长度 | 主键/外键 | 说明 |
|---|---|---|---|---|---|
| commodity_category | id | int | 11 | 主键 | 分类编号 |
| name | varchar | 50 | 分类名称 | ||
| description | text | 分类描述 | |||
| create_time | datetime | 创建时间 | |||
| second_hand_commodity | id | int | 11 | 主键 | 商品编号 |
| name | varchar | 100 | 商品名称 | ||
| category_id | int | 11 | 外键 | 所属分类编号,关联commodity_category表的id | |
| price | decimal | 10,2 | 商品价格 | ||
| description | text | 商品描述 | |||
| seller_id | int | 11 | 外键 | 卖家编号,关联user表的id | |
| stock_quantity | int | 11 | 库存数量 | ||
| status | int | 2 | 商品状态(0-待审核,1-已上架,2-已下架) | ||
| order_info | id | varchar | 32 | 主键 | 订单编号 |
| commodity_id | int | 11 | 外键 | 商品编号,关联second_hand_commodity表的id | |
| buyer_id | int | 11 | 外键 | 买家编号,关联user表的id | |
| order_time | datetime | 下单时间 | |||
| total_amount | decimal | 10,2 | 订单总金额 | ||
| status | int | 2 | 订单状态(0-待付款,1-待发货,2-已发货,3-已完成,4-已取消) | ||
| cancel_purchase | id | int | 11 | 主键 | 取消记录编号 |
| order_id | varchar | 32 | 外键 | 订单编号,关联order_info表的id | |
| reason | text | 取消原因 | |||
| apply_time | datetime | 申请时间 | |||
| handle_result | int | 2 | 处理结果(0-待处理,1-已批准,2-已驳回) | ||
| receiving_info | id | int | 11 | 主键 | 收货信息编号 |
| user_id | int | 11 | 外键 | 用户编号,关联user表的id | |
| receiver_name | varchar | 50 | 收货人姓名 | ||
| phone | varchar | 20 | 联系电话 | ||
| address | text | 收货地址 | |||
| is_default | int | 1 | 是否默认(0-否,1-是) | ||
| shipping_info | id | int | 11 | 主键 | 发货信息编号 |
| order_id | varchar | 32 | 外键 | 订单编号,关联order_info表的id | |
| logistics_company | varchar | 50 | 物流公司名称 | ||
| logistics_no | varchar | 50 | 物流单号 | ||
| shipping_time | datetime | 发货时间 | |||
| distribution_info | id | int | 11 | 主键 | 配送信息编号 |
| order_id | varchar | 32 | 外键 | 订单编号,关联order_info表的id | |
| current_position | varchar | 100 | 当前位置 | ||
| update_time | datetime | 更新时间 | |||
| estimated_delivery_time | datetime | 预计送达时间 | |||
| message_feedback | id | int | 11 | 主键 | 留言反馈编号 |
| user_id | int | 11 | 外键 | 用户编号,关联user表的id | |
| content | text | 留言反馈内容 | |||
| create_time | datetime | 创建时间 | |||
| commodity_id | int | 11 | 外键 | 关联商品编号,可为空 | |
| user | id | int | 11 | 主键 | 用户编号 |
| username | varchar | 50 | 用户名 | ||
| password | varchar | 100 | 密码(加密存储) | ||
| role_id | int | 11 | 外键 | 角色编号,关联role表的id | |
| phone | varchar | 20 | 手机号码 | ||
| role | id | int | 11 | 主键 | 角色编号 |
| role_name | varchar | 50 | 角色名称 | ||
| permission | id | int | 11 | 主键 | 权限编号 |
| permission_name | varchar | 50 | 权限名称 | ||
| permission_code | varchar | 100 | 权限编码 | ||
| role_permission | id | int | 11 | 主键 | 角色权限关联编号 |
| role_id | int | 11 | 外键 | 角色编号,关联role表的id | |
| permission_id | int | 11 | 外键 | 权限编号,关联permission表的id |
五、核心代码
@Service
public class OrderServiceImpl implements OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate CommodityMapper commodityMapper;@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Override@Transactionalpublic Result createOrder(OrderCreateDTO orderCreateDTO) {// 1. 校验商品是否存在及库存SecondHandCommodity commodity = commodityMapper.selectById(orderCreateDTO.getCommodityId());if (commodity == null) {return Result.fail("商品不存在");}if (commodity.getStockQuantity() < 1) {return Result.fail("商品库存不足");}// 2. 生成订单编号String orderNo = generateOrderNo();// 3. 创建订单对象OrderInfo orderInfo = new OrderInfo();orderInfo.setId(orderNo);orderInfo.setCommodityId(orderCreateDTO.getCommodityId());orderInfo.setBuyerId(orderCreateDTO.getBuyerId());orderInfo.setOrderTime(new Date());orderInfo.setTotalAmount(commodity.getPrice());orderInfo.setStatus(0); // 待付款状态// 4. 保存订单int insert = orderMapper.insert(orderInfo);if (insert > 0) {// 5. 扣减商品库存commodity.setStockQuantity(commodity.getStockQuantity() - 1);commodityMapper.updateById(commodity);// 6. 订单信息存入Redis,设置过期时间(30分钟未付款自动取消)redisTemplate.opsForValue().set("order:" + orderNo, orderInfo, 30, TimeUnit.MINUTES);return Result.success(orderNo, "订单创建成功");} else {return Result.fail("订单创建失败");}}
六、最新计算机毕设选题推荐
点我查看选题
https://blog.csdn.net/weixin_45630258/article/details/135901374
七、源码获取:
大家点赞、收藏、关注、评论啦 、👇🏻获取联系方式在文章末尾👇🏻