当前位置: 首页 > news >正文

mybatis-plus实现苍穹外卖项目-分类操作,不定期更新-day2

目录

一、分类页面的分页和模糊查询

1、CategoryController类修改

2、CategoryService和impl的修改

3、CategoryMapper的创建

二、新增分类

1、Category类的修改

2、CategoryController类修改

3、CategoryService和impl的修改

4、CategoryMapper的修改

三、启用和禁用分类

1、CategoryController类修改

2、CategoryService和impl的修改

3、CategoryMapper的修改

四、分类修改

1、CategoryController类修改

2、CategoryService和impl的修改

3、CategoryMapper的修改

五、分类删除

1、新增分类的报错提示消息

2、CategoryController类修改

3、CategoryService和impl的修改

4、CategoryMapper的修改


        事前说明:原视频教程中使用的是mybaits,我想试试能不能通过mybatis-plus做一下这个项目。由于日常工作外加上我的私人生活,视频一天的课,我可能得一周甚至更多时间才能敲完。文章中插入的代码是实现上一个功能的基础上加上新的功能,所以想看这个模块的完整代码,直接看最后一个标题的内容或者通过我的gitee地址看就行。

苍穹外卖mybatis-plus版https://gitee.com/xxyzc/sky-take-out

一、分类页面的分页和模糊查询

1、CategoryController类修改

package com.sky.controller.admin;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/admin/category")
@Slf4j
@Api(tags = "分类相关操作")
public class CategoryController {@Autowiredprivate CategoryService categoryService;/*** 模糊查询和分页查询分类** @return*/@ApiOperation("模糊和分页查询分类")@GetMapping("/page")public Result<PageResult> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("查询条件:categoryPageQueryDTO:{}", categoryPageQueryDTO);IPage<Category> categoryList = categoryService.getCategoryList(categoryPageQueryDTO);PageResult pageResult = new PageResult();pageResult.setTotal(categoryList.getTotal());pageResult.setRecords(categoryList.getRecords());return Result.success(pageResult);}
}

2、CategoryService和impl的修改

package com.sky.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;public interface CategoryService {/*** 根据前台查询条件查询分类列表** @param categoryPageQueryDTO* @return*/IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO);
}
package com.sky.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sky.constant.MessageConstant;
import com.sky.context.BaseContext;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.entity.Dish;
import com.sky.entity.Setmeal;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.mapper.CategoryMapper;
import com.sky.mapper.DishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.service.CategoryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;@Service
@Slf4j
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("service:categoryPageQueryDTO:{}", categoryPageQueryDTO);LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotEmpty(categoryPageQueryDTO.getName()), Category::getName, categoryPageQueryDTO.getName()).like(categoryPageQueryDTO.getType() != null, Category::getType, categoryPageQueryDTO.getType()).orderByAsc(Category::getSort);IPage<Category> iPage = new Page<>(categoryPageQueryDTO.getPage(), categoryPageQueryDTO.getPageSize());return categoryMapper.selectPage(iPage, queryWrapper);}
}

3、CategoryMapper的创建

package com.sky.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sky.entity.Category;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface CategoryMapper extends BaseMapper<Category> {}

二、新增分类

1、Category类的修改

刚完成新增操作后,数据库中分类表的id是一大长串的值,为了让它自动递增,完成下列操作

        (1)、在id属性上加上@TableId(value = "id", type = IdType.AUTO),

        (2)、navicate中操作:选中数据库表category,右键点击“设计表”后弹出这个窗口,点“自动递增”,把那一大串的值修改成1。

修改后新增时可以让id值+1,从而避免新增时数据库中的id是一大长串的数字。

package com.sky.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.time.LocalDateTime;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Category implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Long id;//类型: 1菜品分类 2套餐分类private Integer type;//分类名称private String name;//顺序private Integer sort;//分类状态 0标识禁用 1表示启用private Integer status;//创建时间private LocalDateTime createTime;//更新时间private LocalDateTime updateTime;//创建人private Long createUser;//修改人private Long updateUser;
}

2、CategoryController类修改

package com.sky.controller.admin;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/admin/category")
@Slf4j
@Api(tags = "分类相关操作")
public class CategoryController {@Autowiredprivate CategoryService categoryService;/*** 模糊查询和分页查询分类** @return*/@ApiOperation("模糊和分页查询分类")@GetMapping("/page")public Result<PageResult> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("查询条件:categoryPageQueryDTO:{}", categoryPageQueryDTO);IPage<Category> categoryList = categoryService.getCategoryList(categoryPageQueryDTO);PageResult pageResult = new PageResult();pageResult.setTotal(categoryList.getTotal());pageResult.setRecords(categoryList.getRecords());return Result.success(pageResult);}/*** 新增分类** @param categoryDTO 分类信息* @return*/@ApiOperation("新增分类")@PostMappingpublic Result<String> addCategory(@RequestBody CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);categoryService.addCategory(categoryDTO);return Result.success();}
}

3、CategoryService和impl的修改

package com.sky.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;public interface CategoryService {/*** 根据前台查询条件查询分类列表** @param categoryPageQueryDTO* @return*/IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO);/*** 新增分类** @param categoryDTO 新的分类信息*/void addCategory(CategoryDTO categoryDTO);
}
package com.sky.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sky.constant.MessageConstant;
import com.sky.context.BaseContext;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.entity.Dish;
import com.sky.entity.Setmeal;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.mapper.CategoryMapper;
import com.sky.mapper.DishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.service.CategoryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;@Service
@Slf4j
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("service:categoryPageQueryDTO:{}", categoryPageQueryDTO);LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotEmpty(categoryPageQueryDTO.getName()), Category::getName, categoryPageQueryDTO.getName()).like(categoryPageQueryDTO.getType() != null, Category::getType, categoryPageQueryDTO.getType()).orderByAsc(Category::getSort);IPage<Category> iPage = new Page<>(categoryPageQueryDTO.getPage(), categoryPageQueryDTO.getPageSize());return categoryMapper.selectPage(iPage, queryWrapper);}@Overridepublic void addCategory(CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);Category category = new Category();BeanUtils.copyProperties(categoryDTO, category);// 要求新增的分类是禁用状态,所以status=0category.setStatus(0);category.setCreateUser(BaseContext.getCurrentId());category.setUpdateUser(BaseContext.getCurrentId());category.setCreateTime(LocalDateTime.now());category.setUpdateTime(LocalDateTime.now());categoryMapper.insert(category);}
}

4、CategoryMapper的修改

mapper不用修改!!!

三、启用和禁用分类

1、CategoryController类修改

package com.sky.controller.admin;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/admin/category")
@Slf4j
@Api(tags = "分类相关操作")
public class CategoryController {@Autowiredprivate CategoryService categoryService;/*** 模糊查询和分页查询分类** @return*/@ApiOperation("模糊和分页查询分类")@GetMapping("/page")public Result<PageResult> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("查询条件:categoryPageQueryDTO:{}", categoryPageQueryDTO);IPage<Category> categoryList = categoryService.getCategoryList(categoryPageQueryDTO);PageResult pageResult = new PageResult();pageResult.setTotal(categoryList.getTotal());pageResult.setRecords(categoryList.getRecords());return Result.success(pageResult);}/*** 新增分类** @param categoryDTO 分类信息* @return*/@ApiOperation("新增分类")@PostMappingpublic Result<String> addCategory(@RequestBody CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);categoryService.addCategory(categoryDTO);return Result.success();}@ApiOperation("启用、禁用分类")@PostMapping("/status/{status}")public Result<String> changeStatus(@PathVariable Integer status, Long id) {log.info("启用、禁用分类:{};id:{}", status, id);categoryService.changeStatus(status, id);return Result.success();}
}

2、CategoryService和impl的修改

package com.sky.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;public interface CategoryService {/*** 根据前台查询条件查询分类列表** @param categoryPageQueryDTO* @return*/IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO);/*** 新增分类** @param categoryDTO 新的分类信息*/void addCategory(CategoryDTO categoryDTO);/*** 启用、禁用分类** @param status 修改后的状态* @param id     分类的id*/void changeStatus(Integer status, Long id);
}
package com.sky.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sky.constant.MessageConstant;
import com.sky.context.BaseContext;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.entity.Dish;
import com.sky.entity.Setmeal;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.mapper.CategoryMapper;
import com.sky.mapper.DishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.service.CategoryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;@Service
@Slf4j
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Autowiredprivate DishMapper dishMapper;@Autowiredprivate SetmealMapper setmealMapper;@Overridepublic IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("service:categoryPageQueryDTO:{}", categoryPageQueryDTO);LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotEmpty(categoryPageQueryDTO.getName()), Category::getName, categoryPageQueryDTO.getName()).like(categoryPageQueryDTO.getType() != null, Category::getType, categoryPageQueryDTO.getType()).orderByAsc(Category::getSort);IPage<Category> iPage = new Page<>(categoryPageQueryDTO.getPage(), categoryPageQueryDTO.getPageSize());return categoryMapper.selectPage(iPage, queryWrapper);}@Overridepublic void addCategory(CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);Category category = new Category();BeanUtils.copyProperties(categoryDTO, category);category.setStatus(0);category.setCreateUser(BaseContext.getCurrentId());category.setUpdateUser(BaseContext.getCurrentId());category.setCreateTime(LocalDateTime.now());category.setUpdateTime(LocalDateTime.now());categoryMapper.insert(category);}@Overridepublic void changeStatus(Integer status, Long id) {log.info("启用、禁用分类:{};id:{}", status, id);Category category = new Category();category.setId(id);category.setStatus(status);category.setUpdateTime(LocalDateTime.now());category.setUpdateUser(BaseContext.getCurrentId());categoryMapper.updateById(category);}
}

3、CategoryMapper的修改

mapper不用修改!!!

四、分类修改

1、CategoryController类修改

package com.sky.controller.admin;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/admin/category")
@Slf4j
@Api(tags = "分类相关操作")
public class CategoryController {@Autowiredprivate CategoryService categoryService;/*** 模糊查询和分页查询分类** @return*/@ApiOperation("模糊和分页查询分类")@GetMapping("/page")public Result<PageResult> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("查询条件:categoryPageQueryDTO:{}", categoryPageQueryDTO);IPage<Category> categoryList = categoryService.getCategoryList(categoryPageQueryDTO);PageResult pageResult = new PageResult();pageResult.setTotal(categoryList.getTotal());pageResult.setRecords(categoryList.getRecords());return Result.success(pageResult);}/*** 新增分类** @param categoryDTO 分类信息* @return*/@ApiOperation("新增分类")@PostMappingpublic Result<String> addCategory(@RequestBody CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);categoryService.addCategory(categoryDTO);return Result.success();}@ApiOperation("启用、禁用分类")@PostMapping("/status/{status}")public Result<String> changeStatus(@PathVariable Integer status, Long id) {log.info("启用、禁用分类:{};id:{}", status, id);categoryService.changeStatus(status, id);return Result.success();}@ApiOperation("修改分类")@PutMappingpublic Result<String> updateCategory(@RequestBody CategoryDTO categoryDTO) {log.info("修改分类:{}", categoryDTO);categoryService.updateCategory(categoryDTO);return Result.success();}
}

2、CategoryService和impl的修改

package com.sky.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;public interface CategoryService {/*** 根据前台查询条件查询分类列表** @param categoryPageQueryDTO* @return*/IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO);/*** 新增分类** @param categoryDTO 新的分类信息*/void addCategory(CategoryDTO categoryDTO);/*** 启用、禁用分类** @param status 修改后的状态* @param id     分类的id*/void changeStatus(Integer status, Long id);/*** 修改分类** @param categoryDTO 新的分类信息*/void updateCategory(CategoryDTO categoryDTO);
}
package com.sky.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sky.constant.MessageConstant;
import com.sky.context.BaseContext;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.entity.Dish;
import com.sky.entity.Setmeal;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.mapper.CategoryMapper;
import com.sky.mapper.DishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.service.CategoryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;@Service
@Slf4j
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("service:categoryPageQueryDTO:{}", categoryPageQueryDTO);LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotEmpty(categoryPageQueryDTO.getName()), Category::getName, categoryPageQueryDTO.getName()).like(categoryPageQueryDTO.getType() != null, Category::getType, categoryPageQueryDTO.getType()).orderByAsc(Category::getSort);IPage<Category> iPage = new Page<>(categoryPageQueryDTO.getPage(), categoryPageQueryDTO.getPageSize());return categoryMapper.selectPage(iPage, queryWrapper);}@Overridepublic void addCategory(CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);Category category = new Category();BeanUtils.copyProperties(categoryDTO, category);category.setStatus(0);category.setCreateUser(BaseContext.getCurrentId());category.setUpdateUser(BaseContext.getCurrentId());category.setCreateTime(LocalDateTime.now());category.setUpdateTime(LocalDateTime.now());categoryMapper.insert(category);}@Overridepublic void changeStatus(Integer status, Long id) {log.info("启用、禁用分类:{};id:{}", status, id);Category category = new Category();category.setId(id);category.setStatus(status);category.setUpdateTime(LocalDateTime.now());category.setUpdateUser(BaseContext.getCurrentId());categoryMapper.updateById(category);}@Overridepublic void updateCategory(CategoryDTO categoryDTO) {log.info("修改分类:{}", categoryDTO);Category category = categoryMapper.selectById(categoryDTO.getId());category.setName(categoryDTO.getName());category.setSort(categoryDTO.getSort());category.setUpdateUser(BaseContext.getCurrentId());category.setUpdateTime(LocalDateTime.now());categoryMapper.updateById(category);}
}

3、CategoryMapper的修改

mapper不用修改!!!

五、分类删除

        分类的删除不是单纯直接删除,而是需要判断被删除的分类下是否已经有菜品或者套餐,如果有则不允许删除。

1、新增分类的报错提示消息

package com.sky.handler;import com.sky.constant.MessageConstant;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import java.sql.SQLIntegrityConstraintViolationException;@RestControllerAdvice
@Slf4j
public class CategoryAdvice {@ExceptionHandler(DeletionNotAllowedException.class)public Result<String> systemException(DeletionNotAllowedException ex) {log.error("异常信息:{}", ex.getMessage());return Result.error(ex.getMessage());}@ExceptionHandlerpublic Result<String> doSQLException(SQLIntegrityConstraintViolationException ex) {log.error("异常信息:{}", ex.getMessage());String message = ex.getMessage();if (message.contains("Duplicate")) {return Result.error(message.split(" ")[2] + MessageConstant.ALREADY_EXIST);}return Result.error(MessageConstant.UNKNOWN_ERROR);}
}

2、CategoryController类修改

package com.sky.controller.admin;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/admin/category")
@Slf4j
@Api(tags = "分类相关操作")
public class CategoryController {@Autowiredprivate CategoryService categoryService;/*** 模糊查询和分页查询分类** @return*/@ApiOperation("模糊和分页查询分类")@GetMapping("/page")public Result<PageResult> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("查询条件:categoryPageQueryDTO:{}", categoryPageQueryDTO);IPage<Category> categoryList = categoryService.getCategoryList(categoryPageQueryDTO);PageResult pageResult = new PageResult();pageResult.setTotal(categoryList.getTotal());pageResult.setRecords(categoryList.getRecords());return Result.success(pageResult);}/*** 新增分类** @param categoryDTO 分类信息* @return*/@ApiOperation("新增分类")@PostMappingpublic Result<String> addCategory(@RequestBody CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);categoryService.addCategory(categoryDTO);return Result.success();}@ApiOperation("启用、禁用分类")@PostMapping("/status/{status}")public Result<String> changeStatus(@PathVariable Integer status, Long id) {log.info("启用、禁用分类:{};id:{}", status, id);categoryService.changeStatus(status, id);return Result.success();}@ApiOperation("修改分类")@PutMappingpublic Result<String> updateCategory(@RequestBody CategoryDTO categoryDTO) {log.info("修改分类:{}", categoryDTO);categoryService.updateCategory(categoryDTO);return Result.success();}@ApiOperation("删除分类")@DeleteMappingpublic Result<String> deleteCategoryById(Long id) {log.info("删除分类:{}", id);categoryService.deleteCategoryById(id);return Result.success();}
}

3、CategoryService和impl的修改

package com.sky.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;public interface CategoryService {/*** 根据前台查询条件查询分类列表** @param categoryPageQueryDTO* @return*/IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO);/*** 新增分类** @param categoryDTO 新的分类信息*/void addCategory(CategoryDTO categoryDTO);/*** 启用、禁用分类** @param status 修改后的状态* @param id     分类的id*/void changeStatus(Integer status, Long id);/*** 修改分类** @param categoryDTO 新的分类信息*/void updateCategory(CategoryDTO categoryDTO);/*** 根据id删除分类* 删除时需要判断该分类下有没有菜品或套餐,如果有则不能删除:通过category的id和dish以及setmeal的category_id关联查询** @param id 要删除的分类id*/void deleteCategoryById(Long id);
}

        impl中实现删除功能:通过分类表的id与菜品表和套餐表的category_id联查,查询是否含有该分类下的菜品和套餐。

package com.sky.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sky.constant.MessageConstant;
import com.sky.context.BaseContext;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.entity.Dish;
import com.sky.entity.Setmeal;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.mapper.CategoryMapper;
import com.sky.mapper.DishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.service.CategoryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;@Service
@Slf4j
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Autowiredprivate DishMapper dishMapper;@Autowiredprivate SetmealMapper setmealMapper;@Overridepublic IPage<Category> getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO) {log.info("service:categoryPageQueryDTO:{}", categoryPageQueryDTO);LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotEmpty(categoryPageQueryDTO.getName()), Category::getName, categoryPageQueryDTO.getName()).like(categoryPageQueryDTO.getType() != null, Category::getType, categoryPageQueryDTO.getType()).orderByAsc(Category::getSort);IPage<Category> iPage = new Page<>(categoryPageQueryDTO.getPage(), categoryPageQueryDTO.getPageSize());return categoryMapper.selectPage(iPage, queryWrapper);}@Overridepublic void addCategory(CategoryDTO categoryDTO) {log.info("新增分类:{}", categoryDTO);Category category = new Category();BeanUtils.copyProperties(categoryDTO, category);category.setStatus(0);category.setCreateUser(BaseContext.getCurrentId());category.setUpdateUser(BaseContext.getCurrentId());category.setCreateTime(LocalDateTime.now());category.setUpdateTime(LocalDateTime.now());categoryMapper.insert(category);}@Overridepublic void changeStatus(Integer status, Long id) {log.info("启用、禁用分类:{};id:{}", status, id);Category category = new Category();category.setId(id);category.setStatus(status);category.setUpdateTime(LocalDateTime.now());category.setUpdateUser(BaseContext.getCurrentId());categoryMapper.updateById(category);}@Overridepublic void updateCategory(CategoryDTO categoryDTO) {log.info("修改分类:{}", categoryDTO);Category category = categoryMapper.selectById(categoryDTO.getId());category.setName(categoryDTO.getName());category.setSort(categoryDTO.getSort());category.setUpdateUser(BaseContext.getCurrentId());category.setUpdateTime(LocalDateTime.now());categoryMapper.updateById(category);}@Overridepublic void deleteCategoryById(Long id) {log.info("分类的id:{}", id);// 1、获取该分类下的dishLambdaQueryWrapper<Dish> queryDish = new LambdaQueryWrapper<>();queryDish.eq(Dish::getCategoryId, id);List<Dish> dishes = dishMapper.selectList(queryDish);// 2、获取该分类下的setmealLambdaQueryWrapper<Setmeal> querySetmeal = new LambdaQueryWrapper<>();querySetmeal.eq(Setmeal::getCategoryId, id);List<Setmeal> setmeals = setmealMapper.selectList(querySetmeal);// 3、判断dish和setmeal是否为空,如果为空则执行删除分类的操作,否则提示该分类下有菜品或套餐,不允许删除if (dishes != null && !dishes.isEmpty()) {throw new DeletionNotAllowedException(MessageConstant.CATEGORY_BE_RELATED_BY_DISH);}if (setmeals != null && !setmeals.isEmpty()) {throw new DeletionNotAllowedException(MessageConstant.CATEGORY_BE_RELATED_BY_SETMEAL);}categoryMapper.deleteById(id);}
}

4、CategoryMapper的修改

mapper不用修改!!!

http://www.xdnf.cn/news/1378369.html

相关文章:

  • 【和春笋一起学C++】(三十七)类的析构函数
  • 死锁产生的条件是什么? 如何进行死锁诊断?
  • leetcode 974 和可被K整除的子数组
  • 集成电路学习:什么是YOLO一次性检测器
  • 关于国产 RAC 和分布式研讨
  • 【Python学习笔记】whl包打包
  • Day14——JavaScript 核心知识全解析:变量、类型与操作符深度探秘
  • Redis实战-优惠券秒杀解决方案总结大全
  • XC6SLX75-2FGG484C Xilinx Spartan-6 LX FPGA
  • 电子电气架构 --- 软件项目复杂性的驾驭思路
  • 基于Prometheus Pushgateway与Alertmanager的自定义指标监控与告警实践指南
  • C语言 | 高级C语言面试题
  • C语言二级考试环境配置教程【window篇】
  • 数学建模——马尔科夫链(Markov Chain Model)
  • Linux初始——基础指令篇
  • 数据结构:从堆中删除元素 (Deleting from a Heap)
  • 微服务-30.配置管理-动态路由
  • 3 无重复字符的最长子串
  • 第二阶段Winfrom-8:特性和反射,加密和解密,单例模式
  • Gopher URL协议与SSRF二三事
  • 入门概念|Thymeleaf与Vue
  • 路由基础(二):路由表和FIB表
  • Day7--HOT100--54. 螺旋矩阵,48. 旋转图像,240. 搜索二维矩阵 II
  • 【JAVA实现websocket】
  • Java设计模式之《外观模式》
  • 大模型安全概述、LlamaFirewall
  • 深度学习---卷积神经网络CNN
  • Git-远程操作
  • AI-Agent 深度科普:从概念到架构、应用与未来趋势
  • JVM之【Java对象在内存中的结构】