0
点赞
收藏
分享

微信扫一扫

猿创征文|瑞吉外卖——管理端_套餐管理

Sikj_6590 2022-09-12 阅读 154

个人名片:

本项目基于B站黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目。

目录

一、页面显示

1.显示全部

image.png

package com.itheima.reggie.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.reggie.common.R;
import com.itheima.reggie.entity.Setmeal;
import com.itheima.reggie.service.ISetmealService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 套餐 前端控制器
 * </p>
 *
 * @author 酒徒
 * @since 2022-09-04
 */
@RestController
@RequestMapping("/setmeal")
public class SetmealController {
    @Autowired
    private ISetmealService setmealService;

    /**
     * 页面显示
     * @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);

        //查询setmeal表中所有信息
        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);
        setmealService.page(pageInfo, queryWrapper);

        return R.success(pageInfo);
    }

}


package com.itheima.reggie.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.reggie.common.R;
import com.itheima.reggie.dto.SetmealDto;
import com.itheima.reggie.entity.Category;
import com.itheima.reggie.entity.Setmeal;
import com.itheima.reggie.entity.SetmealDish;
import com.itheima.reggie.service.ICategoryService;
import com.itheima.reggie.service.ISetmealService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 套餐 前端控制器
 * </p>
 *
 * @author 酒徒
 * @since 2022-09-04
 */
@RestController
@RequestMapping("/setmeal")
public class SetmealController {
    @Autowired
    private ISetmealService setmealService;

    @Autowired
    private ICategoryService categoryService;

    /**
     * 页面显示
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(int page, int pageSize, String name){
        //页面构造器
        Page<Setmeal> setmealPage = new Page<>(page, pageSize);
        Page<SetmealDto> setmealDtoPage = new Page<>(page, pageSize);

        //查询setmeal表中所有信息
        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);
        setmealService.page(setmealPage, queryWrapper);

        //setmealDtoPage,将其加入setmealDtoPage
        //1.拷贝setmealPage到setmealDtoPage
        BeanUtils.copyProperties(setmealPage, setmealDtoPage);

        //以流的形式设置每一个categoryName
        List<Setmeal> records = setmealPage.getRecords();
        List<SetmealDto> dtoList = records.stream().map((item) -> {
            //通过categoryId查询categoryName
            LambdaQueryWrapper<Category> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(Category::getId, item.getCategoryId());
            Category category = categoryService.getOne(wrapper);

            //设置categoryName到setmealDto中
            SetmealDto setmealDto = new SetmealDto();
            setmealDto.setCategoryName(category.getName());

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

        //添加categoryName
        setmealDtoPage.setRecords(dtoList);

        return R.success(setmealDtoPage);
    }
}


2.输入框查询

image.png

if (name != null){
    queryWrapper.like(Setmeal::getName, name);
}

完整代码如下:

/**
* 页面显示
* @param page
* @param pageSize
* @param name
* @return
*/
@GetMapping("/page")
public R<Page> page(int page, int pageSize, String name){
    //页面构造器
    Page<Setmeal> setmealPage = new Page<>(page, pageSize);
    Page<SetmealDto> setmealDtoPage = new Page<>(page, pageSize);

    //查询setmeal表中所有信息
    LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
    if (name != null){
        queryWrapper.like(Setmeal::getName, name);
    }
    queryWrapper.orderByDesc(Setmeal::getUpdateTime);
    setmealService.page(setmealPage, queryWrapper);

    //setmealDtoPage,将其加入setmealDtoPage
    //1.拷贝setmealPage到setmealDtoPage
    BeanUtils.copyProperties(setmealPage, setmealDtoPage);

    //以流的形式设置每一个categoryName
    List<Setmeal> records = setmealPage.getRecords();
    List<SetmealDto> dtoList = records.stream().map((item) -> {
        //通过categoryId查询categoryName
        LambdaQueryWrapper<Category> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Category::getId, item.getCategoryId());
        Category category = categoryService.getOne(wrapper);

        //设置categoryName到setmealDto中
        SetmealDto setmealDto = new SetmealDto();
        setmealDto.setCategoryName(category.getName());
        
        //拷贝setmeal的信息到SetmealDto中
        BeanUtils.copyProperties(item, setmealDto);

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

    //添加categoryName
    setmealDtoPage.setRecords(dtoList);

    return R.success(setmealDtoPage);
}

二、新建套餐

1.套餐菜品

image.png

/**
 * 套餐——新增套餐——套餐菜品显示
 * @param categoryId
 * @return
 */
@GetMapping("/list")
public R<List<Dish>> list(@PathParam("categoryId") Long categoryId){
    //根据categoryId查询菜品名
    LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(Dish::getCategoryId, categoryId)
                    .eq(Dish::getStatus, 1)
            .orderByAsc(Dish::getSort)
            .orderByDesc(Dish::getUpdateTime);
    List<Dish> list = dishService.list(queryWrapper);
    return R.success(list);
}

2.保存

image.png

/**
* 新建套餐——保存
* @param request
* @param setmealDto
* @return
*/
@PostMapping
public R<String> setmeal(HttpServletRequest request, @RequestBody SetmealDto setmealDto){
    //log.info("setmealDto:{}",setmealDto);//setmealDto:SetmealDto(setmealDishes=[SetmealDish(id=null, setmealId=null, dishId=1397851668262465537, name=口味蛇, price=16800, copies=1, sort=null, createTime=null, updateTime=null, createUser=null, updateUser=null, isDeleted=null), categoryName=null)
    //添加创建时间和修改时间
    setmealDto.setCreateTime(LocalDateTime.now());
    setmealDto.setUpdateTime(LocalDateTime.now());
    //添加创建人和修改人
    Long empId = (Long) request.getSession().getAttribute("employee");
    setmealDto.setCreateUser(empId);
    setmealDto.setUpdateUser(empId);
    setmealService.saveWithSetmealDto(request,setmealDto);
    return R.success("新增套餐成功");
}
void saveWithSetmealDto(HttpServletRequest request, SetmealDto setmealDto);
/**
 * 新建套餐——保存
 * @param request
 * @param setmealDto
 * @return
 */
@PostMapping
public R<String> setmeal(HttpServletRequest request, @RequestBody SetmealDto setmealDto){
    //log.info("setmealDto:{}",setmealDto);//setmealDto:SetmealDto(setmealDishes=[SetmealDish(id=null, setmealId=null, dishId=1397851668262465537, name=口味蛇, price=16800, copies=1, sort=null, createTime=null, updateTime=null, createUser=null, updateUser=null, isDeleted=null), categoryName=null)
    //添加创建时间和修改时间
    setmealDto.setCreateTime(LocalDateTime.now());
    setmealDto.setUpdateTime(LocalDateTime.now());
    //添加创建人和修改人
    Long empId = (Long) request.getSession().getAttribute("employee");
    setmealDto.setCreateUser(empId);
    setmealDto.setUpdateUser(empId);
    setmealService.saveWithSetmealDto(request,setmealDto);
    return R.success("新增套餐成功");
}

三、修改

1.回显数据

image.png

/**
 * 修改——信息回显
 * @param id
 * @return
 */
@GetMapping("/{id}")
public R<SetmealDto> list(@PathVariable Long id){
    //测试是否能接受(套餐表)id信息
    log.info("id:{}",id);
    SetmealDto setmealDto = setmealService.getSetmealDto(id);
    return R.success(setmealDto);
}
SetmealDto getSetmealDto(Long id);
/**
 * 套餐修改——信息回显
 * @param id
 * @return
 */
@Override
public SetmealDto getSetmealDto(Long id) {
    //1.根据id查询setmeal表信息
    Setmeal setmeal = setmealService.getById(id);

    //2.将setmeal的信息赋值到SetmealDto中
    SetmealDto setmealDto = new SetmealDto();
    BeanUtils.copyProperties(setmeal, setmealDto);

    //3.查询套餐菜品  多个菜品  流
    LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(SetmealDish::getSetmealId, id);
    List<SetmealDish> list = setmealDishService.list(queryWrapper);

    //键菜品信息设置到SetmealDto中
    setmealDto.setSetmealDishes(list);
    
    return setmealDto;
}

2.保存

image.png

/**
 * 修改——保存
 * @param request
 * @param setmealDto
 * @return
 */
@PutMapping
public R<String> setmeals(HttpServletRequest request, @RequestBody SetmealDto setmealDto){
    log.info("setmealDto:{}",setmealDto);//setmealDto:SetmealDto(setmealDishes=[SetmealDish(id=null, setmealId=null, dishId=1397851668262465537, name=口味蛇, price=16800, copies=1, sort=null, createTime=null, updateTime=null, createUser=null, updateUser=null, isDeleted=null), categoryName=null)
    setmealDto.setUpdateTime(LocalDateTime.now());
    setmealService.updateWithSetmealDto(request, setmealDto);
    return R.success("修改成功");
}
void updateWithSetmealDto(HttpServletRequest request, SetmealDto setmealDto);
/**
 * 套餐修改——保存
 * @param request
 * @param setmealDto
 */
@Override
public void updateWithSetmealDto(HttpServletRequest request, SetmealDto setmealDto) {
    //1.保存setmeal
    setmealService.updateById(setmealDto);

    //2.删除setmeald中所有的套餐菜品
    LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(SetmealDish::getSetmealId, setmealDto.getId());
    setmealDishService.remove(queryWrapper);

    //3.保存setmealDish
    //批量修改setmealdish  setmealId=null, createTime=null, updateTime=null, createUser=null, updateUser=null
    List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();
    setmealDishes = setmealDishes.stream().map((item) -> {
        item.setSetmealId(setmealDto.getId());
        //添加创建时间和修改时间
        item.setCreateTime(LocalDateTime.now());
        item.setUpdateTime(LocalDateTime.now());
        //添加创建人和修改人
        Long empId = (Long) request.getSession().getAttribute("employee");
        item.setCreateUser(empId);
        item.setUpdateUser(empId);
        return item;
    }).collect(Collectors.toList());

    //修改
    setmealDishService.saveBatch(setmealDishes);
}

四、停售与起售

1.单个

image.png

/**
 * 单个停售与起售
 * @param status
 * @param ids
 * @return
 */
@PostMapping("/status/{status}")
public R<String> status(@PathVariable int status, @PathParam("ids") Long ids){
    log.info("status,{},ids:{}",status,ids);
    //1.根据ids查询setmeal信息
    Setmeal setmeal = setmealService.getById(ids);
    //2.修改状态码
    setmeal.setStatus(status);
    //3.修改setmeal
    setmealService.updateById(setmeal);
    if (status == 0){
        return R.success("停售成功");
    }else if (status == 1){
        return R.success("起售成功");
    }else {
        return R.success("状态码异常");
    }
}

2.批量

/**
     * 批量停售与起售
     * @param status
     * @param ids
     * @return
     */
    @PostMapping("/status/{status}")
    public R<String> status(@PathVariable int status, @RequestParam("ids") List<Long> ids){
        log.info("status,{},ids:{}",status,ids);
        //1.根据ids查询所有setmeal信息
        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(Setmeal::getId, ids);
        List<Setmeal> list = setmealService.list(queryWrapper);

        //2.批量修改状态码
        for (Setmeal setmeal : list) {
            setmeal.setStatus(status);
            //3.批量修改setmeal
            setmealService.updateById(setmeal);
        }

        if (status == 0){
            return R.success("停售成功");
        }else if (status == 1){
            return R.success("起售成功");
        }else {
            return R.error("状态码异常");
        }
    }

五、删除

1.单个

image.png

/**
 * 删除
 * @param ids
 * @return
 */
@DeleteMapping
public R<String> setmeal(@PathParam("ids") Long ids){
    //根据id删除
    setmealService.removeById(ids);
    return R.success("删除成功");
}

2.批量

/**
 * 批量删除
 * @param ids
 * @return
 */
@DeleteMapping
public R<String> setmeal(@RequestParam("ids") List<Long> ids){
    //根据id删除
    setmealService.removeByIds(ids);
    return R.success("删除成功");
}

3.菜品删除

/**
 * 批量删除
 * @param ids
 * @return
 */
@DeleteMapping
public R<String> setmeal(@RequestParam("ids") List<Long> ids){
    //根据id查询setmealdish表中对应的信息
    LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.in(SetmealDish::getSetmealId, ids);
    setmealDishService.remove(queryWrapper);
    
    //根据id删除
    setmealService.removeByIds(ids);
    return R.success("删除成功");
}

4.状态判断

/**
 * 批量删除——补充口味删除
 * @param ids
 * @return
 */
@DeleteMapping
public R<String> setmeal(@RequestParam("ids") List<Long> ids){
    //判断setmeal状态
    //根据ids获取所有的setmeal信息
    LambdaQueryWrapper<Setmeal> wrapper = new LambdaQueryWrapper<>();
    wrapper.in(Setmeal::getId, ids);
    List<Setmeal> list = setmealService.list();
    //判断每一个status 如果都为0,可以删除。
    boolean flag = true;
    for (Setmeal setmeal : list) {
        if (setmeal.getStatus() == 1){
            flag = false;
        }
    }

    if (flag){
        //根据id查询setmealdish表中对应的信息
        LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(SetmealDish::getSetmealId, ids);
        setmealDishService.remove(queryWrapper);
        //根据id删除
        setmealService.removeByIds(ids);
        return R.success("删除成功");
    }else {
        return R.error("存在正在售卖套餐,删除失败");
    }
}
举报

相关推荐

0 条评论