苍穹外卖-新增套餐

一.需求分析和设计

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

三.功能测试

相关推荐
HoneyMoose6 小时前
Jenkins Cloudflare 部署提示错误
java·servlet·jenkins
阿丰资源6 小时前
基于SpringBoot的物流信息管理系统设计与实现(附资料)
java·spring boot·后端
Predestination王瀞潞6 小时前
Java EE3-我独自整合(第四章:Spring bean标签的常见配置)
java·spring·java-ee
overmind6 小时前
oeasy Python 121[专业选修]列表_多维列表运算_列表相加_列表相乘
java·windows·python
资深数据库专家6 小时前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
房开民6 小时前
可变参数模板
java·开发语言·算法
t***5446 小时前
如何在现代C++中更有效地应用这些模式
java·开发语言·c++
_深海凉_6 小时前
LeetCode热题100-最小栈
java·数据结构·leetcode
不知名的忻6 小时前
Morris遍历(力扣第99题)
java·算法·leetcode·morris遍历
daidaidaiyu6 小时前
一文学习入门 ThingsBoard 开源物联网平台
java·mqtt·spring