苍穹外卖-新增套餐

一.需求分析和设计

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值,从而一次性完成多条数据的批量插入。

三.功能测试

相关推荐
曹牧1 小时前
C#:空合并运算符
java·前端·数据库
布吉岛的石头2 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
golang学习记2 小时前
IDEA 2026年的玩法已经完全不同
java·ide·intellij-idea
紧跟先前的步伐2 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
金銀銅鐵2 小时前
[Java] 展示添加元素时 ArrayList 的内部变化
java·后端·ai编程
斌糖雪梨3 小时前
spring auth 核心流程详解
java·后端·spring
文丑颜不良啊4 小时前
LeetCode201~225题目解析
java·leetcode
SL_staff6 小时前
4G设备掉线三层归因指南:SIM卡、模组、JVS-IOT网关配置精准锁定
java·物联网·产品
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 黑名单:取消黑名单
java·windows·交友
杨杨杨大侠7 小时前
DeepSeek Harness:连 Agent Loop 都能替换的插件架构
java·人工智能·agent