瑞吉外卖菜品批量删除、启售、停售,超详细讲解(配代码)

瑞吉外卖

黑马程序员的一门SSM的入门项目,其中在其课程中的菜品业务讲解中,留下了让学员自主实现的几个功能,细分的话可以分为:单个菜品的 删除、启售、停售,批量菜品的 删除、启售、停售

在这里插入图片描述

实现流程(超详细)

说在前面,本文功能实现是作者拙见,不代表最佳,仅供学习。

下面会大概按照课程里面的理解来实现讲解

查看ajax请求

从前端界面查看 删除 和 状态修改所发送的ajax请求,得到路由和请求信息。

以删除为例,启停售原理相同(文章后附有全部代码):
page->food->list.html界面中,找到单个菜品的删除,批量删除。如代码所示,两者的单击事件都是deleteHandle(),有所不同的是传参的不同,单删,批量。
单删的时候直接把当前行的id传给函数
在这里插入图片描述

在这里插入图片描述

从deleteHandle()可以找出两种删除它们都是访问的deleteDish(),可以看到路由和访问方法
这里值得看的是我们要注意通用一个路由,两个删除的ids肯定是不同的,单个删除是Long ids,批量删除是checkList的字符串,我们就需要在后端处理。

在这里插入图片描述

在这里插入图片描述

明确参数

    @DeleteMapping
    public R<String> delete(String ids){
    	//如果单纯的用Long来接,ids会报错,批量删除肯定接不到,所以这里选用String
    	//log打印看看能否接收单个和批量
        log.info("删除的ids: {}",ids);
        return null;
    }

log信息如图:
在这里插入图片描述
在这里插入图片描述

最终实现

我们明确我们的参数现在是String接收的,把每个id提取出来,自然能想到使用removeByIds()进行批量删除,单个删除也是批量,只不过批量大小是1。现在要处理removeByIds()可接受的参数。
直接贴上代码及注释

	@DeleteMapping
    public R<String> delete(String ids){
        String[] split = ids.split(","); //将每个id分开
        //每个id还是字符串,转成Long
        List<Long> idList = Arrays.stream(split).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
        dishService.removeByIds(idList);//执行批量删除
        log.info("删除的ids: {}",ids);
        return R.success("删除成功"); //返回成功
    }

启、停售状态(分析如删除一样)

先附上代码,说几个比较值得注意的点
1.我们同样还是使用批量更新的方法updateBatchById(),接受的是一个Dish集合,而不是单单的id。以为需要根据实体类匹配数据库字段,更新每个Dish对象的值。
2.我们得到的id需要设置给每个Dish对象,并修改状态信息。
3.路径参数传过来的st,就是要修改的状态值,即我要让这些ids停售,st = 0,所以直接设置状态即可。

@PostMapping("/status/{st}")
    public R<String> setStatus(@PathVariable int st, String ids){
    	//处理string 转成Long
        String[] split = ids.split(",");
        List<Long> idList = Arrays.stream(split).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());

		//将每个id new出来一个Dish对象,并设置状态
        List<Dish> dishes = idList.stream().map((item) -> {
            Dish dish = new Dish();
            dish.setId(item);
            dish.setStatus(st);
            return dish;
        }).collect(Collectors.toList()); //Dish集合

        log.info("status ids : {}",ids);
        dishService.updateBatchById(dishes);//批量操作
        return R.success("操作成功");
    }

觉得文章有用点个赞 点个收藏,未经允许禁止转载!

  • 31
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BiuPsYao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值