菜品---停售、启售、批量停售、批量启售、删除、批量删除
前端发送ajax请求到服务器,服务端根据传来的ids和status对数据库中的dish表和setmeal表进行status的改变,当菜品停售时,包含该菜品的套餐一定也停售
/**
* 根据id改变菜品售卖状态以及包含该菜品的套餐的售卖状态
* @param status
* @param ids
*/
@Override
public void updateWithSetmeal(Integer status, List<Long> ids) {
//获取需要停售或启售的菜品id
List<Dish> dishes = this.listByIds(ids);
//修改这一批菜品状态
for(Dish dish : dishes){
dish.setStatus(status);
}
//菜品表更新状态
this.updateBatchById(dishes);
if(status==0){
//菜品停售后对应包含这些菜品的套餐也应该停售
LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SetmealDish::getDishId, ids);
//根据dish的Id查询setmealDish中的dish
List<SetmealDish> setmealDishes = setmealDishService.list(queryWrapper);
//从setmealDish中的dish获取所属套餐的setmeal_Id
List<Long> setmealIds = new ArrayList<>();
for(SetmealDish setmealDish : setmealDishes){
setmealIds.add(setmealDish.getSetmealId());
}
//根据setmeal_Id查询setmeal表,获取list集合,更新status为停售0
if(setmealIds.size()!=0){
LambdaQueryWrapper<Setmeal> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(Setmeal::getId, setmealIds);
List<Setmeal> setmeals = setmealService.list(lambdaQueryWrapper);
for(Setmeal setmeal : setmeals){
setmeal.setStatus(0);
}
setmealService.updateBatchById(setmeals);
}
}
}
/** * 停售、启售、批量停售、批量启售 * @param status * @param ids * @return */ @PostMapping("/status/{status}") public R<String> statusChange(@PathVariable Integer status, @RequestParam List<Long> ids){ dishService.updateWithSetmeal(status, ids); return R.success("修改成功"); }
/**
* 根据ids删除菜品信息和对应的口味信息
* @param ids
*/
@Transactional
@Override
public void deleteWithFlavor(List<Long> ids) {
//查询套餐状态,确定是否可以删除
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(Dish::getId, ids);
queryWrapper.eq(Dish::getStatus, 1);
int count = this.count(queryWrapper);
if(count>0){
//如果不能删除,抛出一个业务异常
throw new CustomException("菜品正在售卖中,不能删除");
}
//如果可以删除,先删除菜品----dish
this.removeByIds(ids);
//删除关系表中的数据----dish_flavor
LambdaQueryWrapper<DishFlavor> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.in(DishFlavor::getDishId, ids);
dishFlavorService.remove(queryWrapper1);
}
DishController中调用deleteWithFlavor方法删除菜品和对应口味信息
/** * 删除菜品、批量删除菜品 * @param ids * @return */ @DeleteMapping public R<String> delete(@RequestParam List<Long> ids){ dishService.deleteWithFlavor(ids); return R.success("菜品数据删除成功"); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构