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

删除菜品接口

需求分析

点击单个菜品的删除按钮或这边多选后点击批量删除可以将菜品进行删除。

接口涉及到的表

dish菜品表

dish_flavor口味表

setmeal_dish菜品与套餐的关系表

代码实现:

controller

@RequestParam:通过mvc框架动态解析前端传过来的字符串,比如这个ids时1,2,3,那么通过这个注解可以动态的将每个id提取出来。

@DeleteMapping
    public Result DishDelete(@RequestParam List<Long> ids){
        log.info("批量或单个删除菜品参数:{}",ids);
        dishService.DishDelete(ids);
        return Result.success();
    }

实现类

 /**
     * 菜品批量或单个删除
     * @param ids
     */
    @Override
    public void DishDelete(List<Long> ids) {
        //判断当前菜品是否能够删除--是否存在起售中的菜品
        for (Long id : ids){
            Dish dish = dishMapper.getDishbyId(id);
            if (dish.getStatus() == StatusConstant.ENABLE){
                throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE);
            }
        }
        //判断当前菜品是否能够被删除--是否被关联的套餐
        //用菜品的id数组去查询菜品和套餐的关联表,如果返回一个套餐List类型的数组,如果这个数组中有值就代表有关联套餐的菜品,直接抛出异常
        List<Long> setmealIds = setMealsDishMapper.getSetMealByDishId(ids);
        if (setmealIds != null && setmealIds.size() > 0){
            throw new DeletionNotAllowedException(MessageConstant.CATEGORY_BE_RELATED_BY_SETMEAL);
        }

        //删除菜品
        for (Long id : ids){
            dishMapper.deleteBySetmealIds(id);
            //删除菜品关联的口味数据
            dishFlavorMapper.deleteByDishId(id);
        }

    }

第一个查询:查询dish表,根据菜品id查询菜品内容对象,实现类中根据这个菜品对象查看菜品的状态。

第二个查询:查询套菜和菜品的关系表,如果返回结果有内容说明有菜品关联了套餐,就不能删除。

在动态sql中注意循环的使用,还有返回值

第三个sql:根据dishid在菜品表里删除菜品

第四个sql:根据dishid在口味表里删除对应的口味


http://www.kler.cn/a/594835.html

相关文章:

  • 软考高级信息系统管理工程师通关100题(21-40)附记忆口诀
  • 支持向量机SVM的MATLAB分类预测实现
  • 华为IPD研发管理体系的3大核心框架解析
  • HOW - 平时如何保持学习和成长?
  • vscode/windsurf/trae无法识别junit的@Test注解解决办法
  • 如何在 C++ 中运行 DeepSeek R1 LLM
  • AES 简介 以及 C# 和 js 实现【加密知多少系列_3】
  • 用PaddleNLP为GPT-2模型制作FineWeb二进制预训练数据集
  • 【总结】常用API架构类型
  • R语言绘图:小提琴图
  • redis的lua脚本
  • python+requests实现的接口自动化测试
  • 剖析塔能科技:能源精准节能进阶核心驱动力
  • HarmonyOS Next~HarmonyOS应用开发工具:DevEco Testing
  • 阿里云CEN创建实验
  • 设计模式-单一职责
  • 手撕算法之`vector` 扩容、`string` 分割、链表翻转
  • HTTP和RPC的区别
  • 基于AT89C51单片机的自动贩卖机设计
  • CentOS 7.9 安装 Python 3.10 详细步骤及常见问题解决