套餐分类分页查询
- 分页查询返回R 类型 需要创建条件构造器和分页构造器,开始将各类条件放入条件构造器、然后执行sql后将分页除了records数据之外都交给DtoPage,然后将records遍历交给list后,再交给Dtopage,通过records里面的id获取到相应的categoryName 最后放入DtoPage。
@GetMapping("/page")
public R<Page> page(int page, int pageSize,String name){
Page<Setmeal> pageInfo = new Page<>(page,pageSize);
Page<SetmealDto> dtoPage = new Page<>(page,pageSize);
LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(name !=null,Setmeal::getName,name);
queryWrapper.orderByDesc(Setmeal::getUpdateTime);
setMealService.page(pageInfo,queryWrapper);
BeanUtils.copyProperties(pageInfo,dtoPage,"records");
List<Setmeal> records = pageInfo.getRecords();
List<SetmealDto> list = records.stream().map((item) ->{
SetmealDto setmealDto = new SetmealDto();
BeanUtils.copyProperties(item,setmealDto);
Long categoryId = item.getCategoryId();
Category category = categoryService.getById(categoryId);
if(category!=null){
String categoryName = category.getName();
setmealDto.setCategoryName(categoryName);
}
return setmealDto;
}).collect(Collectors.toList());
dtoPage.setRecords(list);
return R.success(dtoPage);
}
删除套餐实现类代码
- 先创造条件构造器查询套餐状态,1为起售,2为停售,如果起售中就不能被删除。这里需要删除两张表,一个是套餐数据表,一个是套餐和菜品关联关系表。
@Override
@Transactional
public void removeWithDish(List<Long> ids) {
LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper();
queryWrapper.in(Setmeal::getId,ids);
queryWrapper.eq(Setmeal::getStatus,1);
int count = this.count(queryWrapper);
if(count > 0){
throw new CustomException("套餐未停售,不能删除");
}
this.removeByIds(ids);
LambdaQueryWrapper<SetmealDish> queryWrapperDish = new LambdaQueryWrapper<>();
queryWrapperDish.in(SetmealDish::getDishId,ids);
setMealDishService.remove(queryWrapperDish);
}
批量起售、停售代码
- 创建条件构造器、查询出来的数据交由list, 在foreach循环中遍历设置状态为传过来的数据,然后再通过this.updateById()执行sql语句,setmeal里面封装的是更改状态之后的所有数据。
@Override
@Transactional
public void updateStatus(int status,List<Long> ids) {
LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper();
queryWrapper.in(Setmeal::getId,ids);
List<Setmeal> list = this.list(queryWrapper);
for (Setmeal setmeal: list
) {
if (setmeal!=null){
setmeal.setStatus(status);
this.updateById(setmeal);
}
}
}