这一部分功能是课程没有去完成的,但是其实是比较简单的,我们需要去完成菜品的启售和停售。
执行之前的项目,我们要完成的就是这里的这个售卖的状态的更改。
我们先去看一下前端页面代码。 可以从这里看到,这里其实对菜品信息的启用和禁用是根据前端这里scope.row的status返回值来进行设置停售和启售的。
scope.row是返回当前行的数据对象,那么status就是这个数据对象的字段。所以这个字段的值就是我们后端代码返回过来的。从这里看其实就是0是停售,非0的话就是启售。其实的话就是1就是启售。
所以其实在数据库的菜品的表的设计当中就有这样的一个字段。
所以我们需要知道它的来源。
然后我们继续往下看,去看前端写出的一些具体的方法。
其实这个状态的按钮就是绑定到了这里。
然后我们具体的去看这个方法的具体的内容。可以看到这里其实还是绑定了批量的人操作,我们可以去进行批量的去操作。
所以一定还有另外的按钮绑定到了这个方法。所以我们可以去看前端页面上面的代码。
我们可以发现这里其实也是调用到了同样的绑定的方法,只不过它这里其实传了一个字符串的1。
所以到这里我们其实需要完成售卖状态的修改,包含的就是批量售卖状态的修改,另外就是单个状态的修改。这样处理的话其实我们就可以在后端接收的时候一律用数组的形式去接收就好了。
我们这样就明白我们去实现了怎么样的功能。
然后我们继续向下面看方法。
然后我们点进去这个方法里面。 还是写在了一个js里面,这样我们就把具体的请求和参数传递看的清清楚楚。
然后我们去写后端的代码。
我们可以先去在浏览器看一下参数传递。选中批量。
选单个
这样去在浏览器去看前端传来的数据也可以帮助我们更加清楚的看到参数的传递和请求路径。
现在我们开始写后端代码。用mybatisplus就十分简单。
之前写单个菜品的启售以及停售就是这样的。
@PostMapping("/status/{status}")
public R_<String> ban_status(@PathVariable("status") Integer status,long ids)
{
Dish dish = dishService.getById(ids);
if(dish!=null)
{
dish.setStatus(status);
dishService.updateById(dish);
return R_.success("状态修改成功");
}
return R_.error("菜品状态修改异常");
}
这里·我们需要统一的处理,那么就需要将ids这里接收形式设置为数组,我们可以用集合处理。我们可以这样去接收List ids。然后批量的话其实可以对集合遍历然后想更新。
那么具体就是这样写了。
@PostMapping("/status/{status}")
public R_<String> ban_status(@PathVariable("status") Integer status,List<Long> ids)
{
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(ids!=null,Dish::getId,ids);
List<Dish> list = dishService.list(queryWrapper);
for (Dish dish : list) {
if (dish!=null)
{
dish.setStatus(status);
dishService.updateById(dish);
}
}
return R_.success("售卖状态修改成功");