苍穹外卖-新增套餐

一.需求分析和设计

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

三.功能测试

相关推荐
1104.北光c°3 分钟前
Leetcode215 三种写法完成数组中的第K个最大元素 【hot100算法个人笔记】【java写法】
java·笔记·程序人生·算法·leetcode·排序算法·快速选择
青山师15 分钟前
Java注解深度解析:从元数据机制到框架开发基石
java·开发语言·注解·javase·java面试·后端开发·java核心
AI人工智能+电脑小能手21 分钟前
【大白话说Java面试题】【Java基础篇】第35题:怎样声明一个类不会被继承?什么场景下会用
java·开发语言·后端·面试
升鲜宝供应链及收银系统源代码服务27 分钟前
升鲜宝云仓供应链管理系统 数据库数据字典设计 (一)---升鲜宝生鲜配送供应链管理系统
java·生鲜配送源代码·供应链源代码·生鲜供应链源代码·企业erp源代码·云仓供应链管理系统
大厂数码评测员34 分钟前
2026 年家庭菜谱记录工具怎么选:从功能边界和小程序代码实现看免费与付费差异
java·开发语言·apache
twc82934 分钟前
从架构视角梳理全链路压测的核心业务链路
java·大数据·软件测试·架构·性能测试·全链路压测
XS03010636 分钟前
Java基础 set集合
java·开发语言
驭渊的小故事37 分钟前
继承和多态
java·开发语言
Bechamz40 分钟前
大数据开发学习Day27
java·大数据·学习
Byron__1 小时前
Java并发核心面试知识点
java·面试·多线程·并发编程