苍穹外卖-新增套餐

一.需求分析和设计

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语句,根据传入的 categoryId 在 dish 表中查询对应分类下的所有菜品记录,并将查询结果封装为 List<Dish> 返回给Service层。

2.新增套餐

(1)控制层开发

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

(2)服务层开发

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

(3)Mapper层开发

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

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

三.功能测试

相关推荐
企业数字化笔记12 分钟前
视频字幕如何烧录到成片?硬字幕、软字幕、样式控制与播放验收
java·ffmpeg
小朱爱编程12324 分钟前
我用 Jev 做了三个实用工具:整理标签页、分诊飞书反馈、找回 GitHub 收藏
java·开发语言·人工智能·后端·python·架构·ai编程
酷虎软件38 分钟前
视频加标题字幕 API 接口文档
java·数据库·mysql
谢亮_vipxieliang1 小时前
Java 8/11/17/21/25 怎么选?一篇讲清 LTS 升级路线
java·开发语言
Cindy_cd1 小时前
IDEA2021 配置 JDK+Maven
java·开发语言·maven
我要神龙摆尾1 小时前
IDEA 阅读插件
java·ide·intellij-idea·idea-plugs·plugs
涉密IT资质笔记2 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
MZ_ZXD0012 小时前
【关注可白嫖源码】--课程设计--毕业设计-- 42557基于springboot的大学生体质健康管理系统
spring boot·课程设计·毕设·大作业·程序开发·程序定制·毕设代做
mmsx2 小时前
Android Dialog 插槽模式:用一套壳统一全应用的弹窗风格
android·java·dialog·开发语言
u0111026752 小时前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画