diff --git a/sky-server/src/main/java/com/sky/controller/admin/CategoryController.java b/sky-server/src/main/java/com/sky/controller/admin/CategoryController.java new file mode 100644 index 0000000..3ed6cc9 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/CategoryController.java @@ -0,0 +1,103 @@ +package com.sky.controller.admin; + +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.*; +import java.util.List; + +/** + * 分类管理 + */ +@RestController +@RequestMapping("/admin/category") +@Api(tags = "分类相关接口") +@Slf4j +public class CategoryController { + + @Autowired + private CategoryService categoryService; + + /** + * 新增分类 + * @param categoryDTO + * @return + */ + @PostMapping + @ApiOperation("新增分类") + public Result save(@RequestBody CategoryDTO categoryDTO){ + log.info("新增分类:{}", categoryDTO); + categoryService.save(categoryDTO); + return Result.success(); + } + + /** + * 分类分页查询 + * @param categoryPageQueryDTO + * @return + */ + @GetMapping("/page") + @ApiOperation("分类分页查询") + public Result page(CategoryPageQueryDTO categoryPageQueryDTO){ + log.info("分页查询:{}", categoryPageQueryDTO); + PageResult pageResult = categoryService.pageQuery(categoryPageQueryDTO); + return Result.success(pageResult); + } + + /** + * 删除分类 + * @param id + * @return + */ + @DeleteMapping + @ApiOperation("删除分类") + public Result deleteById(Long id){ + log.info("删除分类:{}", id); + categoryService.deleteById(id); + return Result.success(); + } + + /** + * 修改分类 + * @param categoryDTO + * @return + */ + @PutMapping + @ApiOperation("修改分类") + public Result update(@RequestBody CategoryDTO categoryDTO){ + categoryService.update(categoryDTO); + return Result.success(); + } + + /** + * 启用、禁用分类 + * @param status + * @param id + * @return + */ + @PostMapping("/status/{status}") + @ApiOperation("启用禁用分类") + public Result startOrStop(@PathVariable("status") Integer status, Long id){ + categoryService.startOrStop(status,id); + return Result.success(); + } + + /** + * 根据类型查询分类 + * @param type + * @return + */ + @GetMapping("/list") + @ApiOperation("根据类型查询分类") + public Result> list(Integer type){ + List list = categoryService.list(type); + return Result.success(list); + } +} diff --git a/sky-server/src/main/java/com/sky/mapper/CategoryMapper.java b/sky-server/src/main/java/com/sky/mapper/CategoryMapper.java new file mode 100644 index 0000000..56a34fd --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/CategoryMapper.java @@ -0,0 +1,50 @@ +package com.sky.mapper; + +import com.github.pagehelper.Page; +import com.sky.enumeration.OperationType; +import com.sky.dto.CategoryPageQueryDTO; +import com.sky.entity.Category; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import java.util.List; + +@Mapper +public interface CategoryMapper { + + /** + * 插入数据 + * @param category + */ + @Insert("insert into category(type, name, sort, status, create_time, update_time, create_user, update_user)" + + " VALUES" + + " (#{type}, #{name}, #{sort}, #{status}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})") + void insert(Category category); + + /** + * 分页查询 + * @param categoryPageQueryDTO + * @return + */ + Page pageQuery(CategoryPageQueryDTO categoryPageQueryDTO); + + /** + * 根据id删除分类 + * @param id + */ + @Delete("delete from category where id = #{id}") + void deleteById(Long id); + + /** + * 根据id修改分类 + * @param category + */ + void update(Category category); + + /** + * 根据类型查询分类 + * @param type + * @return + */ + List list(Integer type); +} diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java new file mode 100644 index 0000000..f37970f --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -0,0 +1,17 @@ +package com.sky.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface DishMapper { + + /** + * 根据分类id查询菜品数量 + * @param categoryId Long + * @return Integer + */ + @Select("select count(id) from dish where category_id = #{categoryId}") + Integer countByCategoryId(Long categoryId); + +} diff --git a/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java new file mode 100644 index 0000000..03cfee7 --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java @@ -0,0 +1,17 @@ +package com.sky.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface SetmealMapper { + + /** + * 根据分类id查询套餐的数量 + * @param id + * @return + */ + @Select("select count(id) from setmeal where category_id = #{categoryId}") + Integer countByCategoryId(Long id); + +} diff --git a/sky-server/src/main/java/com/sky/service/CategoryService.java b/sky-server/src/main/java/com/sky/service/CategoryService.java new file mode 100644 index 0000000..85ecfd1 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/CategoryService.java @@ -0,0 +1,49 @@ +package com.sky.service; + +import com.sky.dto.CategoryDTO; +import com.sky.dto.CategoryPageQueryDTO; +import com.sky.entity.Category; +import com.sky.result.PageResult; +import java.util.List; + +public interface CategoryService { + + /** + * 新增分类 + * @param categoryDTO + */ + void save(CategoryDTO categoryDTO); + + /** + * 分页查询 + * @param categoryPageQueryDTO + * @return + */ + PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO); + + /** + * 根据id删除分类 + * @param id + */ + void deleteById(Long id); + + /** + * 修改分类 + * @param categoryDTO + */ + void update(CategoryDTO categoryDTO); + + /** + * 启用、禁用分类 + * @param status + * @param id + */ + void startOrStop(Integer status, Long id); + + /** + * 根据类型查询分类 + * @param type + * @return + */ + List list(Integer type); +} diff --git a/sky-server/src/main/java/com/sky/service/impl/CategoryServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..1c98f80 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/CategoryServiceImpl.java @@ -0,0 +1,132 @@ +package com.sky.service.impl; + +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.sky.constant.MessageConstant; +import com.sky.constant.StatusConstant; +import com.sky.context.BaseContext; +import com.sky.dto.CategoryDTO; +import com.sky.dto.CategoryPageQueryDTO; +import com.sky.entity.Category; +import com.sky.exception.DeletionNotAllowedException; +import com.sky.mapper.CategoryMapper; +import com.sky.mapper.DishMapper; +import com.sky.mapper.SetmealMapper; +import com.sky.result.PageResult; +import com.sky.service.CategoryService; +import lombok.extern.slf4j.Slf4j; +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 { + + @Autowired + private CategoryMapper categoryMapper; + @Autowired + private DishMapper dishMapper; + @Autowired + private SetmealMapper setmealMapper; + + /** + * 新增分类 + * @param categoryDTO + */ + public void save(CategoryDTO categoryDTO) { + Category category = new Category(); + //属性拷贝 + BeanUtils.copyProperties(categoryDTO, category); + + //分类状态默认为禁用状态0 + category.setStatus(StatusConstant.DISABLE); + + //设置创建时间、修改时间、创建人、修改人 + category.setCreateTime(LocalDateTime.now()); + category.setUpdateTime(LocalDateTime.now()); + category.setCreateUser(BaseContext.getCurrentId()); + category.setUpdateUser(BaseContext.getCurrentId()); + + categoryMapper.insert(category); + } + + /** + * 分页查询 + * @param categoryPageQueryDTO + * @return + */ + public PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO) { + PageHelper.startPage(categoryPageQueryDTO.getPage(),categoryPageQueryDTO.getPageSize()); + //下一条sql进行分页,自动加入limit关键字分页 + Page page = categoryMapper.pageQuery(categoryPageQueryDTO); + return new PageResult(page.getTotal(), page.getResult()); + } + + /** + * 根据id删除分类 + * @param id + */ + public void deleteById(Long id) { + //查询当前分类是否关联了菜品,如果关联了就抛出业务异常 + Integer count = dishMapper.countByCategoryId(id); + if(count > 0){ + //当前分类下有菜品,不能删除 + throw new DeletionNotAllowedException(MessageConstant.CATEGORY_BE_RELATED_BY_DISH); + } + + //查询当前分类是否关联了套餐,如果关联了就抛出业务异常 + count = setmealMapper.countByCategoryId(id); + if(count > 0){ + //当前分类下有菜品,不能删除 + throw new DeletionNotAllowedException(MessageConstant.CATEGORY_BE_RELATED_BY_SETMEAL); + } + + //删除分类数据 + categoryMapper.deleteById(id); + } + + /** + * 修改分类 + * @param categoryDTO + */ + public void update(CategoryDTO categoryDTO) { + Category category = new Category(); + BeanUtils.copyProperties(categoryDTO,category); + + //设置修改时间、修改人 + category.setUpdateTime(LocalDateTime.now()); + category.setUpdateUser(BaseContext.getCurrentId()); + + categoryMapper.update(category); + } + + /** + * 启用、禁用分类 + * @param status + * @param id + */ + public void startOrStop(Integer status, Long id) { + Category category = Category.builder() + .id(id) + .status(status) + .updateTime(LocalDateTime.now()) + .updateUser(BaseContext.getCurrentId()) + .build(); + categoryMapper.update(category); + } + + /** + * 根据类型查询分类 + * @param type + * @return + */ + public List list(Integer type) { + return categoryMapper.list(type); + } +} diff --git a/sky-server/src/main/resources/mapper/CategoryMapper.xml b/sky-server/src/main/resources/mapper/CategoryMapper.xml new file mode 100644 index 0000000..deee331 --- /dev/null +++ b/sky-server/src/main/resources/mapper/CategoryMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + update category + + + type = #{type}, + + + name = #{name}, + + + sort = #{sort}, + + + status = #{status}, + + + update_time = #{updateTime}, + + + update_user = #{updateUser} + + + where id = #{id} + + + +