• 瑞吉外卖(25)- 菜品展示功能开发


    需求分析

    在这里插入图片描述

    代码开发

    梳理交互过程

    在这里插入图片描述

    自我分析页面回显

    此页面是哪个页面

    在这里插入图片描述

    分析请求url

    在这里插入图片描述

    分析response响应数据

    response也有响应数据,但是并没有回显

    在这里插入图片描述

    原因是此页面发送了另一份请求,请求了购物车页面,但是我们购物车页面并没有写

    两次请求,categoryListApi(),cartListApi()

    在这里插入图片描述

    找到出错的购物车请求

    在这里插入图片描述

    修改main.js文件,暂时取消购物车请求

    //获取购物车内商品的集合
    function cartListApi(data) {
        return $axios({
            // 'url': '/shoppingCart/list',
            'url':'/front/cartData.json',
            'method': 'get',
            params:{...data}
        })
    }
    

    导入cartData.json

    在这里插入图片描述

    测试运行

    在这里插入图片描述

    好吧,河南菜我自己写的,啥都没,看粤菜,一样一堆io异常,图片没找到,不用处理

    请添加图片描述

    完善菜品展示功能

    修改DishController.java(list方法

    package com.taotao.reggie.controller;
    
    import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.taotao.reggie.common.R;
    import com.taotao.reggie.dto.DishDto;
    import com.taotao.reggie.entity.Category;
    import com.taotao.reggie.entity.Dish;
    import com.taotao.reggie.entity.DishFlavor;
    import com.taotao.reggie.service.CategoryService;
    import com.taotao.reggie.service.DishFlavorService;
    import com.taotao.reggie.service.DishService;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang.StringUtils;
    import org.springframework.beans.BeanUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * 菜品管理
     */
    @RestController
    @RequestMapping("/dish")
    @Slf4j
    public class DishController {
        @Autowired
        private DishService dishService;
    
        @Autowired
        private DishFlavorService dishFlavorService;
    
        @Autowired
        private CategoryService categoryService;
    
        /**
         * 新增菜品
         * @param dishDto
         * @return
         */
        @PostMapping
        public R<String> save(@RequestBody DishDto dishDto){
            log.info(dishDto.toString());
    
            dishService.saveWithFlavor(dishDto);
    
            return R.success("新增菜品成功");
        }
    
        /**
         * 菜品信息分页查询
         * @param page
         * @param pageSize
         * @param name
         * @return
         */
        @GetMapping("/page")
        public R<Page> page(int page,int pageSize,String name){
    
            //构造分页构造器对象
            Page<Dish> pageInfo = new Page<>(page,pageSize);
            Page<DishDto> dishDtoPage = new Page<>();
    
            //条件构造器
            LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
            //添加过滤条件
            queryWrapper.like(name != null,Dish::getName,name);
            //添加排序条件
            queryWrapper.orderByDesc(Dish::getUpdateTime);
    
            //执行分页查询
            dishService.page(pageInfo,queryWrapper);
    
            //对象拷贝
            BeanUtils.copyProperties(pageInfo,dishDtoPage,"records");
    
            List<Dish> records = pageInfo.getRecords();
    
            List<DishDto> list = records.stream().map((item) -> {
                DishDto dishDto = new DishDto();
    
                BeanUtils.copyProperties(item,dishDto);
    
                Long categoryId = item.getCategoryId();//分类id
                //根据id查询分类对象
                Category category = categoryService.getById(categoryId);
    
                if(category != null){
                    String categoryName = category.getName();
                    dishDto.setCategoryName(categoryName);
                }
                return dishDto;
            }).collect(Collectors.toList());
    
            dishDtoPage.setRecords(list);
    
            return R.success(dishDtoPage);
        }
    
        /**
         * 根据id查询菜品信息和对应的口味信息
         * @param id
         * @return
         */
        @GetMapping("/{id}")
        public R<DishDto> get(@PathVariable Long id){
    
            DishDto dishDto = dishService.getByIdWithFlavor(id);
    
            return R.success(dishDto);
        }
    
        /**
         * 修改菜品
         * @param dishDto
         * @return
         */
        @PutMapping
        public R<String> update(@RequestBody DishDto dishDto){
            log.info(dishDto.toString());
    
            dishService.updateWithFlavor(dishDto);
    
            return R.success("修改菜品成功");
        }
    
        /**
         * 根据条件查询对应的菜品数据
         * @param dish
         * @return
         */
        /*@GetMapping("/list")
        public R> list(Dish dish){
            //构造查询条件
            LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(dish.getCategoryId() != null ,Dish::getCategoryId,dish.getCategoryId());
            //添加条件,查询状态为1(起售状态)的菜品
            queryWrapper.eq(Dish::getStatus,1);
    
            //添加排序条件
            queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
    
            List list = dishService.list(queryWrapper);
    
            return R.success(list);
        }*/
    
        @GetMapping("/list")
        public R<List<DishDto>> list(Dish dish){
            //构造查询条件
            LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(dish.getCategoryId() != null ,Dish::getCategoryId,dish.getCategoryId());
            //添加条件,查询状态为1(起售状态)的菜品
            queryWrapper.eq(Dish::getStatus,1);
    
            //添加排序条件
            queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
    
            List<Dish> list = dishService.list(queryWrapper);
    
            List<DishDto> dishDtoList = list.stream().map((item) -> {
                DishDto dishDto = new DishDto();
    
                BeanUtils.copyProperties(item,dishDto);
    
                Long categoryId = item.getCategoryId();//分类id
                //根据id查询分类对象
                Category category = categoryService.getById(categoryId);
    
                if(category != null){
                    String categoryName = category.getName();
                    dishDto.setCategoryName(categoryName);
                }
    
                //当前菜品的id
                Long dishId = item.getId();
                LambdaQueryWrapper<DishFlavor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                lambdaQueryWrapper.eq(DishFlavor::getDishId,dishId);
                //SQL:select * from dish_flavor where dish_id = ?
                List<DishFlavor> dishFlavorList = dishFlavorService.list(lambdaQueryWrapper);
                dishDto.setFlavors(dishFlavorList);
                return dishDto;
            }).collect(Collectors.toList());
    
            return R.success(dishDtoList);
        }
    
    }
    
    
    功能测试

    在这里插入图片描述

    根据条件查询套餐

    完善SetmealController.java

        /**
         * 根据条件查询套餐数据
         * @param setmeal
         * @return
         */
        @GetMapping("/list")
        public R<List<Setmeal>> list(Setmeal setmeal){
            LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(setmeal.getCategoryId() != null,Setmeal::getCategoryId,setmeal.getCategoryId());
            queryWrapper.eq(setmeal.getStatus() != null,Setmeal::getStatus,setmeal.getStatus());
            queryWrapper.orderByDesc(Setmeal::getUpdateTime);
    
            List<Setmeal> list = setmealService.list(queryWrapper);
    
            return R.success(list);
        }
    
    功能测试

    商务套餐

    在这里插入图片描述

    儿童套餐

    在这里插入图片描述

  • 相关阅读:
    企业微信vs个人微信:对比对照一览表
    擎创动态 | 十天拿下12项信创认证,入选2022智能运维企业TOP50榜单,这个公司到底什么来头
    MATLAB | 全网唯一,三元相映射图绘制(三元相分级统计地图)
    CentOS7安装MySQL8
    前端面试题——React篇
    【计算机网络】UDP协议编写群聊天室----附代码
    Proteus仿真--1602LCD显示仿手机键盘按键字符(仿真文件+程序)
    JAVA集合2-Vector
    【笔试题】【day22】
    Object中的方法
  • 原文地址:https://blog.csdn.net/qq_39123467/article/details/127087285