【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(二)

简介: 【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐

而对于以上的前4个功能我们都已经实现, 所以我们接下来需要开发的功能主要是最后两项, 具体的请求信息如下:

1). 根据分类ID查询菜品列表

请求 说明
请求方式 GET
请求路径 /dish/list
请求参数 ?categoryId=1397844263642378242

2). 保存套餐信息

请求 说明
请求方式 POST
请求路径 /setmeal
请求参数 json格式数据

传递的json格式数据如下:

{
"name":"营养超值工作餐",
"categoryId":"1399923597874081794",
"price":3800,
"code":"",
"image":"9cd7a80a-da54-4f46-bf33-af3576514cec.jpg",
"description":"营养超值工作餐",
"dishList":[],
"status":1,
"idType":"1399923597874081794",
"setmealDishes":[
        {"copies":2,"dishId":"1423329009705463809","name":"米饭","price":200},
        {"copies":1,"dishId":"1423328152549109762","name":"可乐","price":500},
        {"copies":1,"dishId":"1397853890262118402","name":"鱼香肉丝","price":3800}
    ]
}

1.5 代码开发


上面我们已经分析了接下来我们需要实现的两个功能,接下来我们就需要根据上述的分析,来完成具体的功能实现。

1.5.1 根据分类查询菜品

1.5.1.1 功能实现

在当前的需求中,我们只需要根据页面传递的菜品分类的ID(categoryId)来查询菜品列表即可,我们可以直接定义一个DishController的方法,声明一个Long类型的categoryId,这样做是没问题的。但是考虑到该方法的拓展性,我们在这里定义方法时,通过Dish这个实体来接收参数。


在DishController中定义方法list,接收Dish类型的参数:


在查询时,需要根据菜品分类categoryId进行查询,并且还要限定菜品的状态为起售状态(status为1),然后对查询的结果进行排序。

/*** 根据条件查询对应的菜品数据* @param dish* @return*/@GetMapping("/list")
publicR<List<Dish>>list(Dishdish){
//构造查询条件LambdaQueryWrapper<Dish>queryWrapper=newLambdaQueryWrapper<>();
queryWrapper.eq(dish.getCategoryId() !=null ,Dish::getCategoryId,dish.getCategoryId());
//添加条件,查询状态为1(起售状态)的菜品queryWrapper.eq(Dish::getStatus,1);
//添加排序条件queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
List<Dish>list=dishService.list(queryWrapper);
returnR.success(list);
}
————————————————版权声明:本文为CSDN博主「陶然同学」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_45481821/article/details/126309868

1.5.1.2 功能测试


代码编写完毕,我们重新启动服务器,进行测试,可以通过debug断点跟踪的形式查看页面传递的参数封装情况,及响应给页面的数据信息。

image.png

1.5.2 保存套餐


1.5.2.1 功能实现


在进行套餐信息保存时,前端提交的数据,不仅包含套餐的基本信息,还包含套餐关联的菜品列表数据 setmealDishes。所以这个时候我们使用Setmeal就不能完成参数的封装了,我们需要在Setmeal的基本属性的基础上,再扩充一个属性 setmealDishes 来接收页面传递的套餐关联的菜品列表,而我们在准备工作中,导入进来的SetmealDto能够满足这个需求。


1). SetmealController中定义方法save,新增套餐


在该Controller的方法中,我们不仅需要保存套餐的基本信息,还需要保存套餐关联的菜品数据,所以我们需要再该方法中调用业务层方法,完成两块数据的保存。


页面传递的数据是json格式,需要在方法形参前面加上@RequestBody注解, 完成参数封装。

@PostMappingpublicR<String>save(@RequestBodySetmealDtosetmealDto){
log.info("套餐信息:{}",setmealDto);
setmealService.saveWithDish(setmealDto);
returnR.success("新增套餐成功");
}
2). SetmealService中定义方法saveWithDish/*** 新增套餐,同时需要保存套餐和菜品的关联关系* @param setmealDto*/publicvoidsaveWithDish(SetmealDtosetmealDto);

3). SetmealServiceImpl实现方法saveWithDish

具体逻辑:

A. 保存套餐基本信息

B. 获取套餐关联的菜品集合,并为集合中的每一个元素赋值套餐ID(setmealId)

C. 批量保存套餐关联的菜品集合

代码实现:

/*** 新增套餐,同时需要保存套餐和菜品的关联关系* @param setmealDto*/@TransactionalpublicvoidsaveWithDish(SetmealDtosetmealDto) {
//保存套餐的基本信息,操作setmeal,执行insert操作this.save(setmealDto);
List<SetmealDish>setmealDishes=setmealDto.getSetmealDishes();
setmealDishes.stream().map((item) -> {
item.setSetmealId(setmealDto.getId());
returnitem;
    }).collect(Collectors.toList());
//保存套餐和菜品的关联信息,操作setmeal_dish,执行insert操作setmealDishService.saveBatch(setmealDishes);
}
————————————————版权声明:本文为CSDN博主「陶然同学」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_45481821/article/details/126309868

1.5.2.2 功能测试


代码编写完毕,我们重新启动服务器,进行测试,可以通过debug断点跟踪的形式查看页面传递的参数封装情况,及套餐相关数据的保存情况。

image.png

image.png

image.png

2. 套餐分页查询


2.1 需求分析


系统中的套餐数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据。

image.png

在进行套餐数据的分页查询时,除了传递分页参数以外,还可以传递一个可选的条件(套餐名称)。查询返回的字段中,包含套餐的基本信息之外,还有一个套餐的分类名称,在查询时,需要关联查询这个字段。

2.2 前端页面分析


在开发代码之前,需要梳理一下套餐分页查询时前端页面和服务端的交互过程:

1). 访问页面(backend/page/combo/list.html),页面加载时,会自动发送ajax请求,将分页查询参数(page、pageSize、name)提交到服务端,获取分页数据

image.png

image.png

而对于以上的流程中涉及到2个功能,文件下载功能我们已经实现,本小节我们主要实现列表分页查询功能, 具体的请求信息如下:

请求 说明
请求方式 GET
请求路径 /setmeal/page
请求参数 ?page=1&pageSize=10&name=xxx
相关文章
|
前端开发
JavaWeb11(查看订单详情&优化结算)
JavaWeb11(查看订单详情&优化结算)
|
5月前
|
Java API 开发工具
如何通过淘宝商品详情接口实现商品 SKU、优惠价、价格等参数的实时更新?
要合法获取淘宝商品详情数据,首先需通过淘宝开放平台注册开发者账号并获得App Key与App Secret。接着根据业务需求申请对应的商品详情数据接口权限,并通过官方文档了解接口详情。获取访问令牌后,按照文档构建请求URL并附加必要参数及令牌以调用接口。此外,考虑使用淘宝提供的SDK简化开发流程,如Python SDK等。体验API:b.mrw.so/2Pv6Qu。
|
8月前
|
弹性计算 安全 数据库
阿里云特惠专区-所有优惠产品官方列表展示 - 活动中心
2024年阿里云优惠活动大全,包括阿里云服务器优惠活动清单、配置价格表、域名优惠活动、阿里云建站活动、阿里云优惠代金券免费领取、对象存储OSS活动、企业邮箱优惠、无影云电脑优惠、CDN特惠等等,阿里云百科分享2024阿里云优惠活动大全_云服务器_域名_代金券免费领取
216 0
|
前端开发 Java 测试技术
基于Springboot外卖系统18:套餐分页查询模块+删除套餐+多数据表同步
系统中的套餐数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据
117 0
|
前端开发 Java 数据库
基于Springboot外卖系统12:删除菜品套餐类别+修改套餐类别信息
在分类管理列表页面,可以对某个分类进行删除操作。需要注意的是当分类关联了菜品或者套餐时,此分类不允许删除。
127 0
|
存储 弹性计算 分布式计算
阿里云服务器租赁费用(2022新版租赁费用及活动报价更新)
阿里云服务器租赁费用来了,本文更新了2022阿里云服务器租赁费用,包括特惠活动云服务器优惠价格及官方定价,云服务器1核2G1M带宽配置24.78元3个月1年356.83元、共享型2核4G服务器最低仅需413.86元1年、4核8G服务器765.94元1年、8核16G服务器1472.26元1年,独享型2核4G服务器最低仅需466.22元1年、4核8G服务器856.94元1年、8核16G服务器1635.74元1年。更多阿里云服务器热门配置活动报价及云服务器租赁费用及活动报价见下文。
2823 0
阿里云服务器租赁费用(2022新版租赁费用及活动报价更新)
|
前端开发 测试技术 数据库
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(三)
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐
414 0
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(三)
|
存储 JSON 前端开发
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(一)
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐
541 0
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(一)
|
开发者
【开发者任务中心】100元话费兑换方式
开发者任务中心话费类礼品兑换方式
1206 0
|
开发工具 iOS开发 git
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
161 0
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)