《大学生二手交易平台》用uni-app开发有多简单?揭秘毕设高分秘籍!

55 阅读5分钟

一、个人简介

  • 💖💖作者:计算机编程果茶熊
  • 💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长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

致谢

💕💕文末获取源码联系计算机编程果茶熊