一、个人简介
- 💖💖作者:计算机编程果茶熊
- 💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
- 💛💛想说的话:感谢大家的关注与支持!
- 💜💜
- 网站实战项目
- 安卓/小程序实战项目
- 💕💕文末获取源码联系计算机编程果茶熊
二、系统介绍
- 后端开发语言:Java+Python(两个版本都支持)
- 后端框架:Spring Boot(Spring+SpringMVC+Mybatis)+Django(两个版本都支持)
- 前端:uni-app+微信小程序+安卓
- 数据库:MySQL
- 系统架构:B/S
- 《大学生二手商品交易平台》是一套基于B/S架构的综合性交易系统,专为校园二手物品流通设计,采用Java/Python双版本支持,分别基于Spring Boot(Spring+SpringMVC+Mybatis)和Django框架开发,前端采用uni-app技术栈实现微信小程序和安卓应用的跨平台兼容,数据存储依托MySQL数据库确保数据安全与高效查询。系统功能模块完善,包括系统首页展示热门商品与平台公告,个人中心管理用户资料与交易记录,商品分类管理实现多维度物品归类,用户管理确保账户安全与权限控制,二手商品管理支持发布、编辑与下架功能,商品订单管理追踪交易全流程,商品求购管理满足特定物品需求对接,在线咨询管理促进买卖双方实时沟通,系统管理模块则保障平台稳定运行与数据维护。整套系统界面友好、操作便捷,充分满足大学生群体快速、安全、便捷交易二手物品的需求,为校园资源循环利用提供了高效数字化解决方案。
三、大学生二手商品交易平台-视频解说
《大学生二手交易平台》用uni-app开发有多简单?揭秘毕设高分秘籍!
四、大学生二手商品交易平台-功能展示
五、大学生二手商品交易平台-代码展示
// 核心功能1:二手商品管理 - 发布商品服务
@Service
public class SecondHandGoodsServiceImpl implements SecondHandGoodsService {
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private CategoryMapper categoryMapper;
@Autowired
private FileService fileService;
@Override
@Transactional
public ResponseResult publishGoods(GoodsPublishDTO goodsDTO, MultipartFile[] images) {
// 参数校验
if (StringUtils.isBlank(goodsDTO.getTitle()) || goodsDTO.getPrice() == null) {
return ResponseResult.error("商品标题和价格不能为空");
}
// 检查分类是否存在
Category category = categoryMapper.selectById(goodsDTO.getCategoryId());
if (category == null) {
return ResponseResult.error("商品分类不存在");
}
// 构建商品对象
SecondHandGoods goods = new SecondHandGoods();
BeanUtils.copyProperties(goodsDTO, goods);
goods.setStatus(GoodsStatusEnum.ON_SALE.getCode());
goods.setCreateTime(new Date());
goods.setSellerId(SecurityUtils.getCurrentUserId());
goods.setViewCount(0);
// 保存商品基本信息
goodsMapper.insert(goods);
// 处理商品图片
List<String> imageUrls = new ArrayList<>();
if (images != null && images.length > 0) {
for (MultipartFile image : images) {
if (!image.isEmpty()) {
try {
String imageUrl = fileService.uploadImage(image, "goods/" + goods.getId());
imageUrls.add(imageUrl);
} catch (IOException e) {
log.error("商品图片上传失败", e);
throw new BusinessException("图片上传失败,请重试");
}
}
}
}
// 更新商品图片信息
if (!imageUrls.isEmpty()) {
goods.setMainImage(imageUrls.get(0));
goods.setImages(String.join(",", imageUrls));
goodsMapper.updateById(goods);
}
// 记录商品发布日志
logService.recordOperation(LogTypeEnum.GOODS_PUBLISH.getCode(),
"发布商品:" + goods.getTitle(), goods.getId());
return ResponseResult.success(goods.getId());
}
}
// 核心功能2:商品订单管理 - 创建订单服务
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private MessageService messageService;
@Override
@Transactional
public ResponseResult createOrder(OrderCreateDTO orderDTO) {
// 获取当前用户
Long buyerId = SecurityUtils.getCurrentUserId();
User buyer = userMapper.selectById(buyerId);
if (buyer == null) {
return ResponseResult.error("用户信息异常");
}
// 查询商品信息
SecondHandGoods goods = goodsMapper.selectById(orderDTO.getGoodsId());
if (goods == null) {
return ResponseResult.error("商品不存在");
}
// 校验商品状态
if (!GoodsStatusEnum.ON_SALE.getCode().equals(goods.getStatus())) {
return ResponseResult.error("商品已下架或已售出");
}
// 校验是否为自己的商品
if (buyerId.equals(goods.getSellerId())) {
return ResponseResult.error("不能购买自己发布的商品");
}
// 生成订单号
String orderNo = generateOrderNo();
// 创建订单对象
Order order = new Order();
order.setOrderNo(orderNo);
order.setGoodsId(goods.getId());
order.setGoodsTitle(goods.getTitle());
order.setGoodsImage(goods.getMainImage());
order.setPrice(goods.getPrice());
order.setBuyerId(buyerId);
order.setBuyerName(buyer.getUsername());
order.setSellerId(goods.getSellerId());
order.setStatus(OrderStatusEnum.WAITING_PAYMENT.getCode());
order.setCreateTime(new Date());
order.setRemark(orderDTO.getRemark());
order.setContactInfo(orderDTO.getContactInfo());
// 保存订单
orderMapper.insert(order);
// 更新商品状态为预订中
goods.setStatus(GoodsStatusEnum.RESERVED.getCode());
goodsMapper.updateById(goods);
// 发送订单创建通知给卖家
User seller = userMapper.selectById(goods.getSellerId());
if (seller != null) {
Message message = new Message();
message.setTitle("您有新的订单");
message.setContent("买家" + buyer.getUsername() + "对您的商品【" + goods.getTitle() + "】下单了,订单号:" + orderNo);
message.setType(MessageTypeEnum.ORDER_NOTICE.getCode());
message.setReceiverId(seller.getId());
message.setRelatedId(order.getId());
messageService.sendMessage(message);
}
// 设置订单支付超时自动取消
scheduledExecutorService.schedule(() -> {
checkOrderTimeout(order.getId());
}, 24, TimeUnit.HOURS);
return ResponseResult.success(order);
}
private String generateOrderNo() {
return "GO" + System.currentTimeMillis() + RandomUtils.nextInt(1000, 9999);
}
}
// 核心功能3:商品求购管理 - 匹配求购服务
@Service
public class WantedGoodsServiceImpl implements WantedGoodsService {
@Autowired
private WantedGoodsMapper wantedGoodsMapper;
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private MessageService messageService;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Override
public ResponseResult matchWantedGoods(WantedGoods wantedGoods) {
// 参数校验
if (wantedGoods == null || StringUtils.isBlank(wantedGoods.getTitle())) {
return ResponseResult.error("求购信息不完整");
}
// 保存或更新求购信息
if (wantedGoods.getId() == null) {
wantedGoods.setUserId(SecurityUtils.getCurrentUserId());
wantedGoods.setCreateTime(new Date());
wantedGoods.setStatus(WantedStatusEnum.ACTIVE.getCode());
wantedGoodsMapper.insert(wantedGoods);
} else {
WantedGoods existingWanted = wantedGoodsMapper.selectById(wantedGoods.getId());
if (existingWanted == null) {
return ResponseResult.error("求购信息不存在");
}
if (!existingWanted.getUserId().equals(SecurityUtils.getCurrentUserId())) {
return ResponseResult.error("无权修改他人的求购信息");
}
wantedGoods.setUpdateTime(new Date());
wantedGoodsMapper.updateById(wantedGoods);
}
// 构建ES搜索条件
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
// 标题关键词匹配
queryBuilder.should(QueryBuilders.matchQuery("title", wantedGoods.getTitle()).boost(3.0f));
queryBuilder.should(QueryBuilders.matchQuery("description", wantedGoods.getDescription()).boost(1.0f));
// 分类匹配
if (wantedGoods.getCategoryId() != null) {
queryBuilder.must(QueryBuilders.termQuery("categoryId", wantedGoods.getCategoryId()));
}
// 价格范围匹配
if (wantedGoods.getMinPrice() != null && wantedGoods.getMaxPrice() != null) {
queryBuilder.must(QueryBuilders.rangeQuery("price")
.gte(wantedGoods.getMinPrice())
.lte(wantedGoods.getMaxPrice()));
}
// 只匹配在售商品
queryBuilder.must(QueryBuilders.termQuery("status", GoodsStatusEnum.ON_SALE.getCode()));
// 排除自己发布的商品
queryBuilder.mustNot(QueryBuilders.termQuery("sellerId", wantedGoods.getUserId()));
// 执行搜索
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.withSort(SortBuilders.scoreSort().order(SortOrder.DESC))
.withPageable(PageRequest.of(0, 10))
.build();
SearchHits<SecondHandGoods> searchHits = elasticsearchTemplate.search(
searchQuery, SecondHandGoods.class);
List<SecondHandGoods> matchedGoods = searchHits.getSearchHits().stream()
.map(hit -> hit.getContent())
.collect(Collectors.toList());
// 如果找到匹配商品,发送通知给求购用户
if (!matchedGoods.isEmpty()) {
User user = userMapper.selectById(wantedGoods.getUserId());
StringBuilder contentBuilder = new StringBuilder("根据您的求购需求,为您找到以下匹配商品:\n");
for (int i = 0; i < matchedGoods.size(); i++) {
SecondHandGoods goods = matchedGoods.get(i);
contentBuilder.append(i + 1).append(". 【")
.append(goods.getTitle()).append("】 价格:¥")
.append(goods.getPrice()).append("\n");
}
Message message = new Message();
message.setTitle("求购商品匹配结果");
message.setContent(contentBuilder.toString());
message.setType(MessageTypeEnum.WANTED_MATCH.getCode());
message.setReceiverId(user.getId());
message.setRelatedId(wantedGoods.getId());
messageService.sendMessage(message);
// 更新求购信息状态为已匹配
wantedGoods.setMatchCount(matchedGoods.size());
wantedGoods.setLastMatchTime(new Date());
wantedGoodsMapper.updateById(wantedGoods);
}
return ResponseResult.success(matchedGoods);
}
}
六、大学生二手商品交易平台-文档展示
七、END
💕💕文末获取源码联系计算机编程果茶熊