【二十一,瑞吉外卖项目】移动端:菜品展示

1)需求分析
在这里插入图片描述

2)代码开发-交互过程
在这里插入图片描述
①请求:菜品 + 套餐
*显示菜品和套餐的分类在之前已经有写过后端代码,这里不需要重复再写
在这里插入图片描述

在这里插入图片描述

购物车还没做,先把购物车的请求【cartListApi】注释掉或者从静态json文件中加载,以免进入页面发出的请求404导致其他请求不能正常响应展示在页面中
*注释掉请求
在这里插入图片描述
在这里插入图片描述
*或者从静态json文件中加载
在这里插入图片描述
OK,验证之
在这里插入图片描述

②请求:初次进入页面时,获取第一个分类下的菜品或者套餐
Ⅰ 这是菜品信息展示
等会儿!将课程代码的图片请求改为从minion中请求。
在这里插入图片描述
看下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OK了,这几个菜的路径我都指向一张(即都存了同一张图) 0.o!
在这里插入图片描述

*另外需要修改的是:还需要展示该菜品所对应的口味数据,需要对后端返回的值进行修改(CV一份吧)
这里的业务是:如果该菜品有对应的口味信息,则黄色的“+”号按钮变成“选择规格”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这样修改对原先的后台系统不受影响,因为需要返回的数据格式没有变化,这次只是追加了一些数据,对原先返回的数据并不收影响。
在这里插入图片描述

 /**
     * 还需要展示该菜品所对应的口味数据,需要对后端返回的值进行修改
     * @param dish
     * @return
     */
    @GetMapping("/list")
    public R<List<DishDto>> list(Dish dish){

        //构造查询条件
        LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.eq(dish.getCategoryId() != null,Dish::getCategoryId,dish.getCategoryId());
        //起售状态
        queryWrapper.eq(Dish::getStatus,1);

        //添加排序条件
        queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
        List<Dish> list = dishService.list(queryWrapper);

        /**遍历查出来的list,将里面的数据拷贝到DishDto中,(由于DishDto继承了Dish,也有Dish里的所有属性)
         * 然后根据该菜品的id 查询口味表dishFlavor表中的对应口味信息,
         * 再将其口味信息封装到DishDto的List<DishFlavor> flavors中
         */
        List<DishDto> dishDtos = list.stream().map((item) -> {//每个item就是一个Dish
            DishDto dishDto = new DishDto();
            BeanUtils.copyProperties(item,dishDto);
            log.info("验证一下有没有拷贝进来,菜品价格:{}",dishDto.getPrice().toString());

            //设置dishDto里的categoryName
            Long categoryId = item.getCategoryId();
            Category category = categoryService.getById(categoryId); //查分类表
            if(category != null){
                dishDto.setCategoryName(category.getName());
            }

            LambdaQueryWrapper<DishFlavor> dishFlavorLambdaQueryWrapper = new LambdaQueryWrapper();
            dishFlavorLambdaQueryWrapper.eq(DishFlavor::getDishId,item.getId());
            //SELECT * FROM dish_flavor WHERE dish_id = '1397849739276890114';
            List<DishFlavor> dishFlavors = dishFlavorService.list(dishFlavorLambdaQueryWrapper);

            dishDto.setFlavors(dishFlavors);
            return dishDto;
        }).collect(Collectors.toList());

        return R.success(dishDtos);
    }

Ⅱ 这是套餐信息展示
在这里插入图片描述
在这里插入图片描述

/**
     * 根据条件查询套餐信息
     * 注意,如果请求后加的不是json数据,是键值对的话,就不要添加@RequestBody注解
     * 例如请求:http://localhost:8080/setmeal/list?categoryId=1413342269393674242&status=1
     * @param setmeal
     * @return
     */
    @GetMapping("/list")
    public R<List<Setmeal>> list(Setmeal setmeal){
        log.info("套餐信息查询:{}",setmeal.toString());
        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);
    }
}

*测试之
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值