文章目录
需求分析
代码开发
分析页面
删除一个套餐
根据ids字段来删除
删除多个套餐
获得两个ids
编辑SetmealController.java
/**
* 删除套餐
* @param ids
* @return
*/
@DeleteMapping
public R<String> delete(@RequestParam List <Long> ids){
log.info("ids:{}",ids);
return null;
}
测试效果
获得两个ids,成功
完善功能
编辑SetmealService.java
/**
* 删除套餐,同时需要删除套餐和菜品的关联数据
* @param ids
*/
public void removeWithDish(List<Long> ids);
完善SetmealServiceImpl.java
/**
* 删除套餐,同时需要删除套餐和菜品的关联数据
* @param ids
*/
@Override
public void removeWithDish(List<Long> ids) {
// select count(*) from setmeal where id in (1,2,3) and status = 1
//查询套餐状态,确定是否可用删除
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("套餐正在售卖中,不能删除");
}
//如果可以删除,先删除套餐中的数据--setmeal
this.removeByIds(ids);
//删除关系表中的数据--setmeal_dish
//delete from setmeal_dish where setmeal_id in(1,2,3)
LambdaQueryWrapper<SetmealDish> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(SetmealDish::getSetmealId,ids);
}
完善SetmealController.java
/**
* 删除套餐
* @param ids
* @return
*/
@DeleteMapping
public R<String> delete(@RequestParam List <Long> ids){
log.info("ids:{}",ids);
setmealService.removeWithDish(ids);
return R.success("套餐数据删除成功");
}
功能测试
起售状态
关闭起售状态
为了测试删除功能,我们在数据库手动操作将status变为0
关联关系setmeal_dish表