一、需求
从上图看出前段请求的URL内包含的参数,一个是dish下的路径status,一个是后面跟上的0,?ids。响应方法是POST。
二、代码
接下来就是确定我们方法接收的参数形式是什么。
0是对应的路径上的参数,在PostMapping的路径上用{status}
。
后面的ids有两种思路,一个是用String[] 数组接收id,随后用foreach进行遍历修改菜品对应的状态;
另一个是使用@RequestParam
接收Long型ids数组 Long[] ids
,或者List<Long> ids
都可以。代码如下
思路一
/**
* 菜品批量停售起售
* @param status
* @param ids
* @return
*/
@PostMapping("/status/{status}")
public R<String> updateStatus(@PathVariable int status,String[] ids){
log.info("id: {} {}", status, ids);
for (String id: ids) {
//添加条件构造器
LambdaUpdateWrapper<Dish> updateWrapper = new LambdaUpdateWrapper<>();
//根据id更新Dish表中的对应的菜品状态
updateWrapper.set(Dish::getStatus,status).in(Dish::getId, id);
dishService.update(updateWrapper);
}
return R.success("菜品信息修改成功");
}
思路二
@PostMapping("/status/{status}")
public R<String> updateStatus(@PathVariable int status,@RequestParam Long[] ids){
log.info("id {} {}",status, ids);
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(Dish::getId,ids);
List<Dish> list = dishService.list(queryWrapper);
list.stream().map((item) ->{
item.setStatus(status);
return item;
}).collect(Collectors.toList());
dishService.updateBatchById(list);
return R.success("菜品信息修改成功");
}