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