【瑞吉外卖】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
相关文章
|
11月前
阿里云短信价格查询
阿里云短信价格查询,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
108 0
|
11月前
|
人工智能 固态存储 关系型数据库
阿里云国际短信价格查询
阿里云国际短信价格查询,​​阿里云国际短信费用价格表,印度短信0.216元一条、中国香港短信0.33元一条、美国短信0.053元一条、日本短信0.514元一条、俄罗斯短信1.02元一条、印尼短信1.01元一条、意大利短信0.565元一条、伊朗短信0.592元一条,阿里云国际短信支持东南亚、欧洲、非洲、美洲等国家和地区
181 0
|
1月前
|
移动开发 API 开发者
标准详情API接口h5优惠券到手价信息采集
为了提高用户体验和满足用户需求,开放了其详情API接口,使得第三方开发者可以方便地访问和利用这些商品信息 淘宝详情API接口是淘宝开放平台提供的一套接口,它允许第三方开发者通过编程方式获取淘宝商品详情信息。这些信息包括但不限于商品标题、价格、销量、评价等。开发者可以使用这些信息为自己的应用程序提供支持,从而为用户提供更优质的服务。
|
11月前
阿里云短信发送价格
阿里云短信发送价格,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
99 0
|
11月前
阿里云每条短信价格
阿里云每条短信价格,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
|
11月前
阿里云短信套餐价格
阿里云短信套餐价格,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
93 0
|
前端开发 Java 测试技术
基于Springboot外卖系统18:套餐分页查询模块+删除套餐+多数据表同步
系统中的套餐数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据
85 0
|
API
云市场资源包额度预警设置及使用明细查询操作指导
阿里云云市场是软件交易及交付平台。云市场致力于为中小型企业提供全方面的 IT 服务,大幅降低企业互联网化成本, 打造企业上云、产品选购、服务落地、交易一体化流程。共同构建云上生态,让信息化更简单。作为阿里云的战略发展点,承接着中国云生态各个链条产品的落地。云市场平台提供完备的服务监管来保障用户利益,并把更多的产品、品牌及销售资源赋能商家。客户在购买使用云市场服务后为了避免当资源包耗尽时,面临服务不可用风险。通常有设置资源包额度预警和查看使用明细得需求。但是由于云市场控制台的不熟悉,往往不知如果进行额度预警的调整及设置。本文简单介绍设置资源包额度预警和查看资源包用量明细操作步骤,以供参考
519 0
云市场资源包额度预警设置及使用明细查询操作指导
|
存储 JSON 前端开发
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(一)
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐
346 0
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(一)
|
前端开发 测试技术 数据库
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(三)
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐
328 0
【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐(三)