苍穹外卖-新增套餐

一.需求分析和设计

1.页面原型

2.需求分析

新增套餐的功能需要点击新增套餐之后,弹出对应的信息页,其中包括套餐名称,套餐分类,套餐价格,已经对应的套餐内的菜品和套餐的图片。

3.接口分析

(1)根据分类id查询相应菜品

菜品分为几大类,在新增套餐功能中,需要添加套餐中对应的菜品

(2)新增套餐

根据前端传递过来的套餐和对应的菜品数据,将套餐和菜品添加到数据库中。

二.代码开发

1.根据分类id查询相应的菜品

(1)控制层开发

控制层接口,用于接收前端发送的请求,通过 @GetMapping("/list") 定义访问路径。当客户端传入 categoryId 参数时,Controller 会调用 dishService.getdishBycategoryId(categoryId) 方法查询对应分类下的所有菜品数据,并将查询结果封装为 Result 对象返回给前端,实现根据分类ID查询菜品列表的功能。

(2)服务层开发

Service接口的具体实现方法,在该方法中调用 dishMapper.getdishBycategoryId(categoryId) 执行数据库查询操作,根据分类ID获取对应的菜品数据列表,并将查询结果返回给Controller层,实现业务逻辑的处理与数据传递。

(3)Mapper层开发

Mapper接口方法,用于执行数据库查询操作。通过 @Select 注解编写SQL语句,根据传入的 categoryIddish 表中查询对应分类下的所有菜品记录,并将查询结果封装为 List<Dish> 返回给Service层。

2.新增套餐

(1)控制层开发

控制层接口,用于接收前端发送的新增套餐请求。通过 @PostMapping 定义该接口为POST请求,并使用 @RequestBody 将前端传递的套餐数据封装为 SetmealDTO 对象。方法执行时首先通过日志记录新增的套餐信息,然后调用业务层 setmealService.saveWithDish(setmealDTO) 方法完成套餐及套餐菜品的保存操作,最后返回 Result.success() 表示新增成功。

(2)服务层开发

新增套餐功能的核心业务逻辑,实现了同时向 套餐表(setmeal)套餐菜品关系表(setmeal_dish) 中插入数据。首先创建 Setmeal 对象,并通过 BeanUtils.copyPropertiesSetmealDTO 中的属性复制到实体对象中,然后调用 setmealMapper.insert() 将套餐基本信息保存到数据库。接着获取套餐中包含的菜品列表 setmealDishes,如果列表不为空,则为每一个套餐菜品对象设置当前套餐的 setmealId,最后调用 setmealDishMapper.insertBatch() 批量插入套餐与菜品之间的关联数据,完成套餐及其菜品信息的保存。

(3)Mapper层开发

setmeal套餐表 中插入一条新的套餐记录,保存套餐的基本信息,如分类ID、套餐名称、价格、状态、描述、图片以及创建时间、更新时间、创建人和更新人等字段。useGeneratedKeys="true" 表示在插入数据后自动获取数据库生成的主键ID,并通过 keyProperty="id" 将该主键值回填到 Setmeal 对象中。

setmeal_dish套餐菜品关系表 中批量插入数据,用于记录一个套餐中包含哪些菜品以及对应数量。通过 MyBatis 的 <foreach> 标签遍历 setmealDishes 集合,将每个菜品信息(菜品ID、名称、价格、份数以及套餐ID)拼接为多条SQL值,从而一次性完成多条数据的批量插入。

三.功能测试

相关推荐
plainGeekDev10 小时前
Activity 间传值 → Navigation 参数
android·java·kotlin
plainGeekDev10 小时前
onActivityResult → ActivityResult API
android·java·kotlin
Sunia10 小时前
《AgentX 专栏》10-生产部署:3台2C4G云服务器把企业级Agent真正跑起来的完整方案
java·架构
ZhengEnCi11 小时前
J7A-高级Java工程师面试三道灵魂拷问-深度广度与工程素养的终极检验
java·后端
狼爷1 天前
吃透 Java Function 接口,搞定 99% 的 Stream 场景
java·函数式编程
祎雪双十Gy1 天前
从 DataX 的配置加载说起:我用 FastJson2 做了一个轻量级动态配置管理库
java·后端
小锋java12341 天前
分享一套锋哥原创的SpringBoot4+Vue3宠物领养网站系统
java
考虑考虑2 天前
Java实现hmacsha1加密算法
java·后端·java ee
掉鱼的猫2 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·spring boot
plainGeekDev2 天前
广播接收器 → Flow + Lifecycle
android·java·kotlin