当前位置: 首页 > news >正文

黑马瑞吉外卖之套餐信息的删除

黑马瑞吉外卖之套餐信息的删除

在套餐这个模块,我们已经完成的就是套餐信息的分页查询,以及套餐信息的新建与修改这些功能。本篇我们主要去完成一下套餐的删除的功能。

在这里插入图片描述
删除功能有独立删除和批量删除两个功能。为了完成演示删除的功能,我们最好在这里可以展示两个以上的套餐。所以最好在这里还是新建几个套餐。我们这里一共展示三个套餐。
在这里插入图片描述
首先呢,我们还是去前端页面去查看这些具体的内容。
在这里插入图片描述
在这里插入图片描述
可以看到这里的单个删除和批量删除绑定的是同一个方法名,然后传递的参数是不一样的。

那么现在我们去找到这个方法。

在这里插入图片描述
我们找到前端这里关键的一行代码,这里的意思就是如果我们进行的是批量删除,那么就把checkList作为参数传递进去,如果我们没有进行批量删除,只是选择了单个进行删除,那么就将这个单独要删除的id进行传递进去。所以说我们其实区别还是传递的参数的不同。
在这里插入图片描述
然后点进去这个deleteSetmeal里面。

在这里插入图片描述
现在我们来开发这个批量删除的功能。

我们可以这样去规定一下,如果套餐正在售卖的话,我们就不能删除,否则我们在删除套餐的时候,其实也还是需要删除套餐关联下面的菜品的数据。


//    删除套餐同时删除套餐和菜品的关联数据,这里也同样开启事务
    @Override
    @Transactional
    public void removeWithDish(List<Long> ids) {
//        查询套餐的状态确定是否可以删除
//        要根据套餐的状态,是在售卖还是停止售卖
//        如果了可以删除,删除套餐中的数据,然后删除关联表当中的数据
        //构造一个套餐的条件
        LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();
//        根据id进行查询
        setmealLambdaQueryWrapper.in(Setmeal::getId,ids);
//        查询对应套餐的状态
        setmealLambdaQueryWrapper.eq(Setmeal::getStatus,1);
//        计算符合条件的结果
        long count = this.count(setmealLambdaQueryWrapper);
        if(count>0)
        {
            throw  new CustomException("套餐正在售卖,不能删除");
        }
//        如果套餐不处于售卖那么就在删除套餐的时候也将关联表中的菜品删除掉
        this.removeBatchByIds(ids);
//        菜品关联条件
        LambdaQueryWrapper<SetmealDish> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.in(SetmealDish::getSetmealId,ids);//查询出具体的菜品
        setmealDishService.remove(lambdaQueryWrapper);
    }

然后我们去controller里面调用这个方法就可以了。

 @DeleteMapping
    public R_<String> delete(@RequestParam List<Long> ids)
    {
        log.info("ids:{}",ids);
        setMealService.removeWithDish(ids);
        return  R_.success("套餐数据删除成功");

    }

这个功能的完成还是比较简单的。

相关文章:

  • 第十三届蓝桥杯C++B组国赛C题——卡牌 (AC)
  • SpringMVC中的接口传参接参总结
  • python毕业设计项目源码选题(17)校园二手书籍交易系统毕业设计毕设作品开题报告开题答辩PPT
  • 首版次高端软件的申报材料?
  • 关于防抖和节流在前端开发中的应用
  • 姓芦男孩名字简单大气
  • vue实战-分页器
  • RNA 27 SCI文章中转录因子结合motif富集到调控网络 (RcisTarget)
  • 什么牌子的蓝牙耳机耐用又便宜?好用的蓝牙耳机品牌推荐
  • 【NeurIPS知识图谱】联邦环境下,基于元学习的图谱知识外推(阿里浙大含源码)
  • 微服务网关选型
  • python代码学习——递归函数
  • 虹科方案 | 一种通过OPC技术提取数据库数据的解决方案
  • 关于自动化测试工具selenium
  • 某IOT设备漏洞分析
  • Angular2开发踩坑系列-生产环境编译
  • gcc介绍及安装
  • Git 使用集
  • JavaScript HTML DOM
  • maven工程打包jar以及java jar命令的classpath使用
  • node 版本过低
  • rc-form之最单纯情况
  • socket.io+express实现聊天室的思考(三)
  • Unix命令
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 说说动画卡顿的解决方案
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #pragam once 和 #ifndef 预编译头
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (一)插入排序
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • *1 计算机基础和操作系统基础及几大协议
  • .naturalWidth 和naturalHeight属性,
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core 中的路径问题
  • .NET 表达式计算:Expression Evaluator
  • .net反编译工具
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @Transactional 竟也能解决分布式事务?
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [20170713] 无法访问SQL Server
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BUUCTF]-Reverse:reverse3解析
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [IE编程] IE中使网页元素进入编辑模式
  • [jobdu]不用加减乘除做加法
  • [Latex] Riemann 问题中的激波,接触间断,膨胀波的 Tikz 绘图
  • [LeetCode] 148. Sort List 链表排序
  • [LeetCode]: 145: Binary Tree Postorder Traversal