学习日记 2022.11.11

这篇博客详细介绍了如何在毕设中实现菜品管理的修改、回显和照片下载功能,包括下拉列表的查询、菜品信息的回显以及照片下载。此外,还涵盖了新增套餐的需求,包括套餐分类查询、菜品查询和套餐的保存。最后,展示了套餐的分页查询功能,实现了根据名称的模糊搜索和分类名称的展示。整个过程涉及了数据库操作、对象拷贝和响应处理等技术。
摘要由CSDN通过智能技术生成

昨天搞毕设去了...

1.修改菜品

需求分析:

<1>下拉列表回显(这个在之前以及完成了)

/**
     * 根据条件查询菜品分类
     *
     * @param category
     * @return
     */
    @GetMapping("/list")
    public R<List<Category>> list(Category category) {
        log.info("下拉列表查询菜品分类: {}",category.getType());
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();

        if(category.getType() != null){
            queryWrapper.eq(Category::getType, category.getType());
        }
        queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);

        List<Category> list = categoryService.list();
        return R.success(list);
    }

<2>其他数据回显

/**
     * 根据id回显菜品(查dish表和dishFlavor表)
     * @param id
     * @return
     */
    @Override
    public DishDto getByIdWithFlavor(Long id) {
        Dish dish = this.getById(id);

        //查询口味
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DishFlavor::getDishId,id);
        List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);

        //封装成dto
        DishDto dishDto = new DishDto();
        BeanUtils.copyProperties(dish,dishDto);
        dishDto.setFlavors(flavors);
        return dishDto;
    }

<3>照片下载回显(之前已完成)

@GetMapping("/download")
    public void download(String name, HttpServletResponse response) {
        try {
            //从文件读取
            FileInputStream fileInputStream = new FileInputStream(new File(basePath + name));
            //响应
            ServletOutputStream outputStream = response.getOutputStream();

            byte bytes[] = new byte[1024];
            int len = 0;
            while ((len = fileInputStream.read(bytes)) != -1) {
                outputStream.write(bytes, 0, len);
                outputStream.flush();
            }

            //关闭资源
            fileInputStream.close();
            outputStream.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

<4>提交修改

/**
     * 修改菜品
     *
     * @param dishDto
     * @return
     */
    @PutMapping
    public R<String> update(@RequestBody DishDto dishDto) {
        log.info("修改菜品{}", dishDto.toString());
        dishService.updateWithFlavor(dishDto);
        return R.success("修改成功");
    }
/**
     * 保存菜品的修改
     * @param dishDto
     * @return
     */
    @Override
    public void updateWithFlavor(DishDto dishDto) {
        this.updateById(dishDto);

        //清理口味表中的记录delete
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DishFlavor::getDishId,dishDto.getId());
        dishFlavorService.remove(queryWrapper);

        //插入口味insert
        List<DishFlavor> flavors = dishDto.getFlavors();
        flavors = flavors.stream().map((item) ->{
            item.setDishId(dishDto.getId());
            return item;
        }).collect(Collectors.toList());
        dishFlavorService.saveBatch(flavors);
    }

2.新增套餐需求

<1>套餐分类查询

/**
     * 根据条件查询菜品分类
     *
     * @param category
     * @return
     */
    @GetMapping("/list")
    public R<List<Category>> list(Category category) {
        log.info("下拉列表查询菜品分类: {}",category.getType());
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();

        if(category.getType() != null){
            queryWrapper.eq(Category::getType, category.getType());
        }
        queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);

        List<Category> list = categoryService.list();
        return R.success(list);
    }

<2>菜品查询

/**
     * 根据条件查询菜品分类
     *
     * @param category
     * @return
     */
    @GetMapping("/list")
    public R<List<Category>> list(Category category) {
        log.info("下拉列表查询菜品分类: {}",category.getType());
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();

        if(category.getType() != null){
            queryWrapper.eq(Category::getType, category.getType());
        }
        queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);

        List<Category> list = categoryService.list();
        return R.success(list);
    }

<3>保存新增套餐

/**
     * 保存新增套餐
     * @param setmealDto
     * @return
     */
    @PostMapping
    public R<String> save(@RequestBody SetmealDto setmealDto){
        log.info("保存新增套餐: {}",setmealDto.toString());
        setMealService.saveWithDish(setmealDto);
        return R.success("新增套餐成功");
    }

3.套餐分页查询

/**
     * 套餐分页查询
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(Integer page,Integer pageSize,String name){
        Page<Setmeal> pageInfo = new Page<>(page,pageSize);
        Page<SetmealDto> dtoPage = new Page<>();

        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(name!=null,Setmeal::getName,name);
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);

        setMealService.page(pageInfo,queryWrapper);

        //对象拷贝
        BeanUtils.copyProperties(pageInfo,dtoPage,"records");
        List<Setmeal> records = pageInfo.getRecords();

        List<SetmealDto> list = records.stream().map((item) -> {
            SetmealDto setmealDto = new SetmealDto();
            //对象拷贝
            BeanUtils.copyProperties(item,setmealDto);
            //分类id
            Long categoryId = item.getCategoryId();
            //根据分类id查询分类对象
            Category category = categoryService.getById(categoryId);
            if(category != null){
                //分类名称
                String categoryName = category.getName();
                setmealDto.setCategoryName(categoryName);
            }
            return setmealDto;
        }).collect(Collectors.toList());

        dtoPage.setRecords(list);
        return R.success(dtoPage);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值