编写瑞吉外卖项目未讲解到的功能代码
菜品管理模块:批量删除和批量启售停售功能需求实现。
套餐管理模块:修改套餐,批量启售停售功能需求实现。
菜品管理模块
删除和批量删除––请求接口信息:
代码
/**
* 批量删除菜品
* @param ids 需要删除的id数组
* @return 返回数据联调对象R
*/
@DeleteMapping
public R<String> deleteIds(Long[] ids){
//将数组转为集合
List<Long> longs = Arrays.asList(ids);
//批量删除
dishService.removeByIds(longs);
return R.success("删除成功!");
}
启售停售和批量启售停售—请求接口信息:
代码
/**
* 批量起售和停售
* @param ids 传入需要操作的id数组
* @param status 需要变更到的状态
* @return 返回数据联调对象R
*/
@PostMapping("/status/{status}")
public R<String> updateStatus(Long[] ids,@PathVariable int status){
//将数组转为集合
List<Long> idsList = Arrays.asList(ids);
//创建更新的条件构造器
LambdaUpdateWrapper<Dish> queryWrapper = new LambdaUpdateWrapper<>();
//设置修改状态和条件
queryWrapper.set(Dish::getStatus,status).in(Dish::getId,idsList);
//执行更新操作
dishService.update(queryWrapper);
return R.success("操作成功!");
}
套餐管理模块
修改套餐,请求接口信息(数据回显和修改提交):
说明:由于更新套餐需要操作到数据表setmeal和setmeal_dish表,所以我们需要到service实现类中编写更新逻辑,操作两张表。
整个更新流程包括数据回显和数据提交两个动作。
接口:SetmealService
/**
* 修改套餐数据回显
* @param id 套餐ID
* @return Dto对象
*/
public SetmealDto setmealBackData(Long id);
/**
* 更新套餐-提交
* @param setmealDto 更新数据
*/
public void setmealUpdate(SetmealDto setmealDto);
实现类:SetmealServiceImpl
/**
* 修改套餐数据回显
* @param id 套餐ID
* @return Dto对象
*/
@Override
public SetmealDto setmealBackData(Long id) {
//创建dto对象用于赋值后返回
SetmealDto setmealDto = new SetmealDto();
//根据ID查询setmeal
Setmeal setmeal = this.getById(id);
//对象拷贝,将查询出来的setmeal给dto赋值
BeanUtils.copyProperties(setmeal,setmealDto);
//根据setmealId查询出setmeal_dish表中的所有对应数据
LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SetmealDish::getSetmealId,id);
List<SetmealDish> list = setmealDishService.list(queryWrapper);
//将查询出来的套餐菜品对应关系列表数据添加入dto中
setmealDto.setSetmealDishes(list);
return setmealDto;
}
/**
* 更新套餐
* @param setmealDto 更新数据
*/
@Override
public void setmealUpdate(SetmealDto setmealDto) {
//向setmeal更新数据
this.updateById(setmealDto);
//向setmeal_dish表更新数据
List<SetmealDish> list = setmealDto.getSetmealDishes();
//因为套餐菜品关系表中没有套餐的ID,需要手动设置
Long id = setmealDto.getId();
list.stream().map((item)->{
item.setSetmealId(id);
return item;
}).collect(Collectors.toList());
//更新setmeal_dish'表策略:先删除原来内容,后添加新内容即可
LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SetmealDish::getSetmealId,id);
setmealDishService.remove(queryWrapper);
//添加
setmealDishService.saveBatch(list);
}
控制层调用(SetMealController):
// 注入业务层
@Autowired
private SetMealService setMealService;
/**
* 修改套餐数据回显
* @param id 接收传入数据回显的ID
* @return 返回数据联调对象
*/
@GetMapping("/{id}")
public R<SetmealDto> getSetmealBackData(@PathVariable Long id){
//调用自定义查询方法
SetmealDto setmealDto = setMealService.setmealBackData(id);
return R.success(setmealDto);
}
/**
* 更新套餐信息
* @param setmealDto 前端传入数据
* @return 返回数据联调对象
*/
@PutMapping
public R<String> setmealUpdate(@RequestBody SetmealDto setmealDto){
log.info("======={}",setmealDto);
setMealService.setmealUpdate(setmealDto);
return R.success("修改成功");
}
批量启售停售功能实现:
/**
* 批量起售和停售
* @param status 需要修改为的状态
* @param ids 需要进行操作的id
* @return 数据联调对象R
*/
@PostMapping("/status/{status}")
public R<String> statusUpdate(@PathVariable int status, Long[] ids){
//将数组转换成集合
List<Long> idsList = Arrays.asList(ids);
//创建更新条件构造器
LambdaUpdateWrapper<Setmeal> updateWrapper = new LambdaUpdateWrapper<>();
//设置更新条件
updateWrapper.set(Setmeal::getStatus,status).in(Setmeal::getId,idsList);
//执行更新动作
setMealService.update(updateWrapper);
return R.success("操作成功!");
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154542.html