栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

瑞吉外卖-Day6-功能开发(7)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

瑞吉外卖-Day6-功能开发(7)

功能开发-前端菜品套餐展示功能 一、菜品展示功能 1.1、需求分析


获取分类后,根据分类的state去请求dish或setmeal传CategoryId



1.2、代码开发
当前点击菜品分类,已经能显示菜品,但是口味没有显示,所以要用DishDto返回,
修改/dish/list
思路:查出list,循环每一个dish,新增dto,复制dish到dto,查出,Category,dish_flavor放到dto里面
package com.xxxit.reggie.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xxxit.reggie.common.R;
import com.xxxit.reggie.dto.DishDto;
import com.xxxit.reggie.entity.Category;
import com.xxxit.reggie.entity.Dish;
import com.xxxit.reggie.entity.DishFlavor;
import com.xxxit.reggie.service.CategoryService;
import com.xxxit.reggie.service.DishFlavorService;
import com.xxxit.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
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
@Slf4j
@RequestMapping("/dish")
public class DishController {

    @Autowired
    private DishService dishService;

    @Autowired
    private DishFlavorService dishFlavorService;


    @Autowired
    private CategoryService categoryService;

    
    @PostMapping
    public R save(@RequestBody DishDto dishDto){
        log.info(dishDto.toString());

        // 保存菜品,直接存,向上转型
        dishService.saveWithFlavor(dishDto);

        return R.success("新增菜品成功");

    }

    
    @GetMapping("/page")
    public R page(int page,int pageSize,String name){
        log.info("获取菜品分页信息");

        // 构造分页构造器对象
        Page pageInfo = new Page<>(page,pageSize);
        Page dishDtoPage = new Page<>();

        // 条件构造器
        LambdaQueryWrapper DishQueryWrapper = new LambdaQueryWrapper<>();

        // 添加查询条件
        DishQueryWrapper.like(name != null,Dish::getName,name);
        // 添加排序添加
        DishQueryWrapper.orderByDesc(Dish::getUpdateTime);

        // 执行
        dishService.page(pageInfo,DishQueryWrapper);

        // 复制,忽略数据库数据,只拿页码数据条数
        BeanUtils.copyProperties(pageInfo,dishDtoPage,"records");

        // 分类id改名字
        List records = pageInfo.getRecords();
        List DishDtoRecords = records.stream().map((item) -> {
            // 把Dish的数据复制到dishDto
            DishDto dishDto = new DishDto();

            // 复制
            BeanUtils.copyProperties(item,dishDto);

            Long categoryId = item.getCategoryId();
            Category category = categoryService.getById(categoryId);
            String categoryName = category.getName();
            dishDto.setCategoryName(categoryName);

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

        // 把数据放进页面
        dishDtoPage.setRecords(DishDtoRecords);

        return R.success(dishDtoPage);
    }

    
    @GetMapping("/{id}")
    public R get(@PathVariable Long id){
        log.info("查询菜品信息:{}",id);
        DishDto dish = dishService.getByIdWithFlavor(id);
        return R.success(dish);
    }


    
    @PutMapping
    public R update(@RequestBody DishDto dishDto){
        log.info(dishDto.toString());

        dishService.updateWithFlavor(dishDto);

        return R.success("新增菜品成功");
    }


    
    

    
    @RequestMapping("/list")
    public R> list(Dish dish){

        // 条件构建器
        LambdaQueryWrapper dishLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 添加条件
        dishLambdaQueryWrapper.eq(dish.getCategoryId() != null,Dish::getCategoryId,dish.getCategoryId());
        // 添加条件:启售
        dishLambdaQueryWrapper.eq(Dish::getStatus,1);
        // 添加排序条件
        dishLambdaQueryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
        // 执行
        List list = dishService.list(dishLambdaQueryWrapper);

        List dishDtos = list.stream().map((item) -> {

            // 创建一个新的dishDto,复制Dish内容
            DishDto dishDto = new DishDto();
            BeanUtils.copyProperties(item,dishDto);

            // 顺便把CategoryName也填充了,方便以后使用
            // 1.获取CategoryId
            Long categoryId = item.getCategoryId();
            // 2.获取Name
            Category category = categoryService.getById(categoryId);
            if(category != null){
                String categoryName = category.getName();
                // 3.设置DishDto的categoryName
                dishDto.setCategoryName(categoryName);
            }

            // 按Dish的id查询dish_flavor,填充进去
            // 当前菜品id
            Long dishId = item.getId();
            // 1.条件构造器
            LambdaQueryWrapper dishFlavorLambdaQueryWrapper = new LambdaQueryWrapper<>();
            // 2.添加条件
            dishFlavorLambdaQueryWrapper.eq(DishFlavor::getDishId,dishId);
            // 3.查询属于该菜品的所有口味
            List flavors = dishFlavorService.list(dishFlavorLambdaQueryWrapper);
            // 4.设置
            dishDto.setFlavors(flavors);

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

        return R.success(dishDtos);
    }

}

1.3、测试 二、套餐展示 2.1、需求分析
当前就点击菜品分类会展示菜品信息,点击套餐分类还没反应,套餐不需要dto,虽有菜品,但是需要的是直接往购物车加入一个套餐

2.2、代码开发
package com.xxxit.reggie.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xxxit.reggie.common.R;
import com.xxxit.reggie.dto.SetmealDto;
import com.xxxit.reggie.entity.Category;
import com.xxxit.reggie.entity.Setmeal;
import com.xxxit.reggie.service.CategoryService;
import com.xxxit.reggie.service.SetmealDishService;
import com.xxxit.reggie.service.SetmealService;
import lombok.extern.slf4j.Slf4j;
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("/setmeal")
@Slf4j
public class SetmealController {

    @Autowired
    private SetmealService setmealService;

    @Autowired
    private SetmealDishService setmealDishService;

    @Autowired
    private CategoryService categoryService;

    
    @PostMapping
    public R save(@RequestBody SetmealDto setmealDto){
        log.info("新增套餐信息:{}",setmealDto.toString());
        setmealService.saveWithDish(setmealDto);
        return R.success("新增成功");
    }

    
    @GetMapping("/page")
    public R page(int page,int pageSize,String name){

        // 前端展示的套餐分类不是id而是名称所以用dto返回结果
        // 分页构造器
        Page pageInfo = new Page<>(page,pageSize);
        Page setmealDtoPage = new Page<>();

        // 条件构造器
        LambdaQueryWrapper setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 添加条件
        setmealLambdaQueryWrapper.like(name != null,Setmeal::getName,name);
        setmealLambdaQueryWrapper.orderByDesc(Setmeal::getUpdateTime);

        setmealService.page(pageInfo,setmealLambdaQueryWrapper);

        // 复制页面信息,忽略数据库信息
        BeanUtils.copyProperties(pageInfo,setmealDtoPage,"records");

        // 赋值分类名称
        List records = pageInfo.getRecords();
        List list = records.stream().map((item) -> {
            // Setmeal信息复制到SetmealDto
            SetmealDto setmealDto = new SetmealDto();
            BeanUtils.copyProperties(item,setmealDto);

            // 获取名字赋值
            Long categoryId = item.getCategoryId();
            Category category = categoryService.getById(categoryId);
            if (category != null){
                setmealDto.setCategoryName(category.getName());
            }

            return setmealDto;
        }).collect(Collectors.toList());

        // 设置数据库数据
        setmealDtoPage.setRecords(list);

        return R.success(setmealDtoPage);
    }

    @DeleteMapping
    public R delete(@RequestParam List ids){
        log.info("ids:{}",ids);
        setmealService.removeWithDish(ids);
        return R.success("套餐数据删除成功");
    }

    
    @GetMapping("/list")
    public R> list(Setmeal setmeal){	// //因为id和status在地址传递,不用@RequestBody
        log.info("查看套餐:{}",setmeal.toString());
        
        // 1.获取CategoryId
        Long categoryId = setmeal.getCategoryId();
        // 2.条件构造器
        LambdaQueryWrapper categoryLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 3.添加条件
        categoryLambdaQueryWrapper.eq(setmeal.getCategoryId() != null,Setmeal::getCategoryId,categoryId);
        categoryLambdaQueryWrapper.eq(setmeal.getStatus() != null,Setmeal::getStatus,setmeal.getStatus());
        categoryLambdaQueryWrapper.orderByDesc(Setmeal::getUpdateTime);
        // 4.查询
        List list = setmealService.list(categoryLambdaQueryWrapper);

        return R.success(list);
    }
}

2.3、测试
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035943.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号