室友还在改BUG,他靠SpringBoot外卖平台系统直接拿下优秀毕设!

💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目

spring boot基于Java外卖平台系统介绍系统介绍

《Spring Boot基于Java外卖平台系统》面向大四计算机专业毕业设计需求,采用B/S架构,后端以Spring Boot为核心整合Spring MVC与MyBatis完成业务与数据持久化,前端以Vue3+Element Plus构建响应式界面,数据库统一使用MySQL;系统提供完整的外卖闭环功能:用户端首页聚合商家列表、轮播图公告及菜品信息,支持按分类检索、加入购物车、一键结算并实时追踪未支付、已支付、已发货、已完成、已取消、已退款六种订单状态;商家端可在后台管理菜品分类、菜品信息及库存,配合轮播图与公告信息实现营销推送;平台管理员通过系统首页概览经营数据,集中管理用户、商家、订单与全局配置,同时提供个人中心、系统简介、关于我们及密码修改、安全退出等通用模块;项目代码开源清晰,注释详尽,部署文档覆盖Windows与Linux环境,既可直接作为毕业设计交付,也可在此基础上二次扩展支付、评价等功能,为即将毕业的学生提供一条从零到上线的完整实践路径。

spring boot基于Java外卖平台系统介绍系统演示视频

室友还在改BUG,他靠SpringBoot外卖平台系统直接拿下优秀毕设!

spring boot基于Java外卖平台系统介绍系统演示图片

系统首页
登陆界面
菜品信息
菜品分类
个人中心
用户管理

spring boot基于Java外卖平台系统介绍系统代码展示

// ---------- 1. 购物车结算并生成订单 ----------
BigDecimal total = BigDecimal.ZERO;
List<CartItemDTO> items = cartMapper.listByUserId(userId);
if (items.isEmpty()) throw new BizException("购物车为空");
List<OrderItem> orderItems = items.stream().map(ci -> {
    Dish dish = dishMapper.selectById(ci.getDishId());
    if (dish == null || dish.getStatus() == 0) throw new BizException("菜品不存在或已下架");
    if (dish.getStock() < ci.getQuantity()) throw new BizException("库存不足");
    dishMapper.deductStock(ci.getDishId(), ci.getQuantity());
    return OrderItem.builder()
            .dishId(ci.getDishId())
            .quantity(ci.getQuantity())
            .price(dish.getPrice())
            .amount(dish.getPrice().multiply(BigDecimal.valueOf(ci.getQuantity())))
            .build();
}).collect(Collectors.toList());
for (OrderItem oi : orderItems) total = total.add(oi.getAmount());
Order order = Order.builder()
        .orderNo(UUID.randomUUID().toString())
        .userId(userId)
        .status(0) // 未支付
        .totalAmount(total)
        .createTime(LocalDateTime.now())
        .build();
orderMapper.insert(order);
orderItems.forEach(oi -> {
    oi.setOrderId(order.getId());
    orderItemMapper.insert(oi);
});
cartMapper.clearByUserId(userId);

// ---------- 2. 商家后台菜品上架 ----------
Dish dish = Dish.builder()
        .name(req.getName())
        .categoryId(req.getCategoryId())
        .price(req.getPrice())
        .stock(req.getStock())
        .description(req.getDescription())
        .status(1) // 上架
        .createTime(LocalDateTime.now())
        .build();
dishMapper.insert(dish);
if (req.getImageUrl() != null) {
    DishImage img = DishImage.builder()
            .dishId(dish.getId())
            .url(req.getImageUrl())
            .createTime(LocalDateTime.now())
            .build();
    dishImageMapper.insert(img);
}
List<Integer> labelIds = req.getLabelIds();
if (labelIds != null && !labelIds.isEmpty()) {
    labelIds.forEach(lid -> {
        DishLabelRel rel = DishLabelRel.builder()
                .dishId(dish.getId())
                .labelId(lid)
                .build();
        dishLabelRelMapper.insert(rel);
    });
}
redisTemplate.opsForValue().set("dish:detail:" + dish.getId(), dish, Duration.ofMinutes(10));

// ---------- 3. 用户支付完成后订单状态流转 ----------
Order order = orderMapper.selectByOrderNo(orderNo);
if (order == null || !order.getUserId().equals(userId))
    throw new BizException("订单不存在或无权限");
if (order.getStatus() != 0) throw new BizException("订单状态异常");
order.setStatus(1); // 已支付
order.setPayTime(LocalDateTime.now());
orderMapper.updateById(order);
orderLogMapper.insert(OrderLog.builder()
        .orderId(order.getId())
        .action("支付")
        .operator("user_" + userId)
        .createTime(LocalDateTime.now())
        .build());
List<OrderItem> items = orderItemMapper.selectByOrderId(order.getId());
items.forEach(oi -> {
    SalesDaily sales = salesDailyMapper.selectByDishIdAndDate(oi.getDishId(), LocalDate.now());
    if (sales == null) {
        sales = SalesDaily.builder()
                .dishId(oi.getDishId())
                .saleDate(LocalDate.now())
                .quantity(oi.getQuantity())
                .amount(oi.getAmount())
                .build();
        salesDailyMapper.insert(sales);
    } else {
        sales.setQuantity(sales.getQuantity() + oi.getQuantity());
        sales.setAmount(sales.getAmount().add(oi.getAmount()));
        salesDailyMapper.updateById(sales);
    }
});

spring boot基于Java外卖平台系统介绍系统文档展示

文档

💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值