boot实战-套餐管理

套餐管理

新增套餐

需求分析

image-20220525104801886

数据模型

image-20220525104925179

image-20220525105030591

image-20220525105117484

代码开发

交互过程

image-20220525111629828

回显数据

首先完成新增套餐的数据回显

image-20220525112256183

/**
 * 获取菜品列表
 * @param categoryId
 * @return
 */
@GetMapping("/list")
public R<List<Dish>> list(Long categoryId){
    LambdaQueryWrapper<Dish> queryWrapper=new LambdaQueryWrapper<>();
    queryWrapper.eq(Dish::getCategoryId,categoryId);
    List<Dish> list = dishService.list(queryWrapper);
    return R.success(list);

}

保存新套餐

image-20220525170321483

这里又是多表操作(添加事务)

/**
 * 新增套餐
 * @param setmealDto
 * @return
 */
@Transactional
@PostMapping
public R<String> save(@RequestBody SetmealDto setmealDto){
    setmealService.save(setmealDto);
    List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();
    for (Object setmealdish:setmealDishes){
        SetmealDish dish=(SetmealDish) setmealdish;
        //List里面缺少了setmealid,需要手动设置
        dish.setSetmealId(setmealDto.getId());
        setmealDishService.save(dish);
    }


    return R.success("新增套餐成功!");
}

测试成功

image-20220525195352633

image-20220525195410339

分页查询

需求分析

点击套餐管理自动查询现有套餐信息并分页

image-20220525195650502

代码开发

    /**
     * 套餐分页查询
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(int page,int pageSize,String name){

        Page<Setmeal> pageInfo=new Page<>(page,pageSize);
        Page<SetmealDto> setmealDtoPage=new Page<>();
        LambdaQueryWrapper<Setmeal> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.like(name!=null,Setmeal::getName,name);
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);
        setmealService.page(pageInfo,queryWrapper);
        List<Setmeal> records = pageInfo.getRecords();
        BeanUtils.copyProperties(pageInfo,setmealDtoPage,"records");
        List<SetmealDto> list = records.stream().map((item) -> {
            SetmealDto setmealDto = new SetmealDto();
            BeanUtils.copyProperties(item, setmealDto);
            Long categoryId = item.getCategoryId();
            Category category = categoryService.getById(categoryId);
            String categoryName = category.getName();
            setmealDto.setCategoryName(categoryName);
            return setmealDto;

        }).collect(Collectors.toList());
        setmealDtoPage.setRecords(list);
        return R.success(setmealDtoPage);
    }

修改套餐

分为套餐数据回显,以及保存更新后的信息

回显

image-20220525200938659

/**
 * 根据id获取套餐数据
 * @param id
 * @return
 */
@GetMapping("/{id}")
public R<SetmealDto> GetById(@PathVariable Long id){
    Setmeal setmeal = setmealService.getById(id);
    LambdaQueryWrapper<SetmealDish> queryWrapper=new LambdaQueryWrapper<>();
    queryWrapper.eq(SetmealDish::getSetmealId,id);
    List<SetmealDish> list = setmealDishService.list(queryWrapper);
    SetmealDto setmealDto=new SetmealDto();
    BeanUtils.copyProperties(setmeal,setmealDto);
    setmealDto.setSetmealDishes(list);




    return R.success(setmealDto);

}

保存修改后的数据

可以发现我们回显数据用的是setmealdto对象,现在保存也是传回的setmealdto对象

image-20220525203212983

    /**
     * 更新套餐
     * @param setmealDto
     * @return
     */
    @Transactional
    @PutMapping
    public R<String> update(@RequestBody SetmealDto setmealDto){
        Long id = setmealDto.getId();
        //和之前的思路一样我们清空套餐对应的菜品信息再存入
//        首先先更新套餐信息
        setmealService.updateById(setmealDto);
        LambdaQueryWrapper<SetmealDish> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.eq(SetmealDish::getSetmealId,id);
//        清除原有数据
        setmealDishService.remove(queryWrapper);
        List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();
        for (Object setmealdish:setmealDishes){
            SetmealDish dish=(SetmealDish) setmealdish;
            dish.setSetmealId(setmealDto.getId());
            setmealDishService.save(dish);
        }
        return R.success("更新套餐成功!");
    }

测试

image-20220525203007178

image-20220525210925553

批量停售起售

image-20220525214348902

这里传入的停售请求,正好要将status由1变成0

/**
 * 批量停售起售
 * @param status
 * @param ids
 * @return
 */
@PostMapping("/status/{status}")
public R<String> changeStatus(@PathVariable int status,Long[] ids){
    for (long id:ids){
        Setmeal setmeal=new Setmeal();
        setmeal=setmealService.getById(id);
        setmeal.setStatus(status);
        setmealService.updateById(setmeal);
    }
    return R.success("更改成功!");
}

批量删除&删除

    /**
     * 批量删除
     * @param ids
     * @return
     */
    @Transactional
@DeleteMapping
    public R<String> deleteByIds(Long[] ids){
        List<Long> idList= Arrays.asList(ids);
        setmealService.removeByIds(idList);
        for (Long id:ids){
            LambdaQueryWrapper<SetmealDish> queryWrapper=new LambdaQueryWrapper<>();
            queryWrapper.eq(SetmealDish::getSetmealId,id);
            setmealDishService.remove(queryWrapper);
        }
return R.success("删除数据成功!");
}
posted @ 2022-05-25 22:47  Ember00  阅读(101)  评论(0)    收藏  举报