瑞吉外卖,day4的批量删除和批量起售,停售的功能实现
根据f12的网络来看,发送请求的ids是一个字符串,
所有我们服务端就可以用String类型来接受它。
/**
* 批量删除
*/
@DeleteMapping
public Result<String> delete(String ids){
List<Long> idList = StringToLong.stringToLong(ids); //调用封装好的类把String类型转化为Long类型
dishService.removeWithFlavor(idList); //自定义的方法
return Result.success("删除成功");
}
/**
* 批量停售与起售
* @param status
* @param ids
* @return
*/
@PostMapping("/status/{status}")
public Result<String> sell(@PathVariable int status,String ids){
List<Long> idList = StringToLong.stringToLong(ids); //调用封装好的类把String类型转化为Long类型
idList.stream().map(item->{ //遍历idList集合
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>(); //条件构造器
queryWrapper.eq(Dish::getId,item); //相当于where id = ???
Dish dish =new Dish(); //创建一个dish对象
dish.setStatus(status); //给dish对象的status属性赋值
dishService.update(dish,queryWrapper); //根据dish对象里的status值进行更新
return idList;
}).collect(Collectors.toList());
return Result.success("更改成功");
}
dishServiceImpl类里自己新加的方法removeWithFlavor
/**
* 删除菜品,同时删除对应的口味数据
* @param ids
*/
@Override
public void removeWithFlavor(List<Long> ids) {
ids.stream().map(item->{
//删除菜品
this.removeById(item);
//删除对应的口味数据
LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DishFlavor::getDishId,item);
dishFlavorService.remove(queryWrapper);
return ids;
}).collect(Collectors.toList());
}
自己定义的类,来实现String转化为Long的类
public class StringToLong {
public static List<Long> stringToLong(String ids){
List<Long> idList =new ArrayList<>();
if (ids.contains(",")) { //ids有多个值的时候
String[] id1 = ids.split(",");
for (String s : id1) {
Long id = Long.valueOf(s);
idList.add(id);
}
}else //ids为单个值
{
Long value = Long.valueOf(ids);
idList.add(value);
}
return idList;
}
}