From 5419e321c85a1a67d058515a4dcf5ec6a1f09ae3 Mon Sep 17 00:00:00 2001 From: slhaf <2998813882@qq.com> Date: Thu, 12 Sep 2024 18:23:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8F=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sky/controller/admin/DishController.java | 27 +++++++++ .../java/com/sky/mapper/DishFlavorMapper.java | 10 ++++ .../main/java/com/sky/mapper/DishMapper.java | 11 ++++ .../java/com/sky/service/DishService.java | 14 +++++ .../com/sky/service/impl/DishServiceImpl.java | 59 +++++++++++++++++-- .../resources/mapper/DishFlavorMapper.xml | 6 ++ .../src/main/resources/mapper/DishMapper.xml | 20 +++++++ 7 files changed, 143 insertions(+), 4 deletions(-) diff --git a/sky-server/src/main/java/com/sky/controller/admin/DishController.java b/sky-server/src/main/java/com/sky/controller/admin/DishController.java index 9232dc1..048f3d0 100644 --- a/sky-server/src/main/java/com/sky/controller/admin/DishController.java +++ b/sky-server/src/main/java/com/sky/controller/admin/DishController.java @@ -5,6 +5,7 @@ import com.sky.dto.DishPageQueryDTO; import com.sky.result.PageResult; import com.sky.result.Result; import com.sky.service.DishService; +import com.sky.vo.DishVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -62,4 +63,30 @@ public class DishController { dishService.deleteBatch(ids); return Result.success(); } + + /** + * 根据id查询菜品 + * @param id + * @return + */ + @GetMapping("/{id}") + @ApiOperation("根据id查询菜品") + public Result getById(@PathVariable Long id) { + log.info("根据id查询菜品: {}",id); + DishVO dishVO = dishService.getByIdWithFlavor(id); + return Result.success(dishVO); + } + + /** + * 修改菜品 + * @param dishDTO + * @return + */ + @PutMapping + @ApiOperation("修改菜品") + public Result update(@RequestBody DishDTO dishDTO) { + log.info("修改菜品: {}",dishDTO); + dishService.updateWithFlavor(dishDTO); + return Result.success(); + } } diff --git a/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java index 0c11a11..a785252 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java @@ -3,6 +3,7 @@ package com.sky.mapper; import com.sky.entity.DishFlavor; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,4 +21,13 @@ public interface DishFlavorMapper { */ @Delete("delete from dish_flavor where dish_id = #{dishId}") void deleteByDishId(Long dishId); + + /** + * 根据菜品id集合批量删除口味数据 + * @param dishIds + */ + void deleteByDishIds(List dishIds); + + @Select("select * from dish_flavor where dish_id = #{dishId}") + List getByDishId(Long dishId); } diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java index 03b2e49..d3afb20 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -11,6 +11,8 @@ import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import java.util.List; + @Mapper public interface DishMapper { @@ -50,4 +52,13 @@ public interface DishMapper { */ @Delete("delete from dish where id = #{id}") void deleteById(Long id); + + /** + * 根据菜品ids集合批量删除菜品 + * @param ids + */ + void deleteByIds(List ids); + + @AutoFill(OperationType.UPDATE) + void update(Dish dish); } diff --git a/sky-server/src/main/java/com/sky/service/DishService.java b/sky-server/src/main/java/com/sky/service/DishService.java index 3b8ee37..9f3e88f 100644 --- a/sky-server/src/main/java/com/sky/service/DishService.java +++ b/sky-server/src/main/java/com/sky/service/DishService.java @@ -3,6 +3,7 @@ package com.sky.service; import com.sky.dto.DishDTO; import com.sky.dto.DishPageQueryDTO; import com.sky.result.PageResult; +import com.sky.vo.DishVO; import org.springframework.stereotype.Service; import java.util.List; @@ -28,4 +29,17 @@ public interface DishService { * @param ids */ void deleteBatch(List ids); + + /** + * 根据id查询菜品及口味 + * @param id + * @return + */ + DishVO getByIdWithFlavor(Long id); + + /** + * 修改菜品基本信息(及口味) + * @param dishDTO + */ + void updateWithFlavor(DishDTO dishDTO); } diff --git a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java index 723cf15..19f153d 100644 --- a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java @@ -64,6 +64,7 @@ public class DishServiceImpl implements DishService { /** * 菜品分页查询 + * * @param pageQueryDTO * @return */ @@ -72,11 +73,12 @@ public class DishServiceImpl implements DishService { //设置分页 PageHelper.startPage(pageQueryDTO.getPage(), pageQueryDTO.getPageSize()); Page page = dishMapper.pageQuery(pageQueryDTO); - return new PageResult(page.getTotal(),page.getResult()); + return new PageResult(page.getTotal(), page.getResult()); } /** * 菜品批量删除 + * * @param ids */ @Override @@ -86,20 +88,69 @@ public class DishServiceImpl implements DishService { //是否有起售中菜品 for (Long id : ids) { Dish dish = dishMapper.selectById(id); - if (dish.getStatus().equals(StatusConstant.ENABLE)){ + if (dish.getStatus().equals(StatusConstant.ENABLE)) { throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE); } } //是否关联套餐 List setmealIds = setmealDishMapper.getSetmealIdsByDishIds(ids); - if (setmealIds != null && !setmealIds.isEmpty()){ + if (setmealIds != null && !setmealIds.isEmpty()) { throw new DeletionNotAllowedException(MessageConstant.DISH_BE_RELATED_BY_SETMEAL); } //删除菜品 - for (Long id : ids) { + /*for (Long id : ids) { dishMapper.deleteById(id); //删除菜品口味 dishFlavorMapper.deleteByDishId(id); + }*/ + dishMapper.deleteByIds(ids); + dishFlavorMapper.deleteByDishIds(ids); + } + + /** + * 根据id查询菜品及口味 + * + * @param id + * @return + */ + @Override + public DishVO getByIdWithFlavor(Long id) { + //根据id查询菜品 + Dish dish = dishMapper.selectById(id); + + //根据菜品id查询口味 + List dishFlavors = dishFlavorMapper.getByDishId(id); + + //封装到DishVO对象 + DishVO dishVO = new DishVO(); + BeanUtils.copyProperties(dish, dishVO); + dishVO.setFlavors(dishFlavors); + + return dishVO; + } + + /** + * 修改菜品基本信息(及口味) + * + * @param dishDTO + */ + @Override + public void updateWithFlavor(DishDTO dishDTO) { + //修改菜品基本信息 + Dish dish = new Dish(); + BeanUtils.copyProperties(dishDTO, dish); + dishMapper.update(dish); + + //删除原有口味数据 + dishFlavorMapper.deleteByDishId(dishDTO.getId()); + + //重新插入新的口味数据 + List flavors = dishDTO.getFlavors(); + if (flavors != null && !flavors.isEmpty()) { + //设置dishId + flavors.forEach(dishFlavor -> dishFlavor.setDishId(dish.getId())); + //插入新的口味数据 + dishFlavorMapper.insertBatch(flavors); } } } diff --git a/sky-server/src/main/resources/mapper/DishFlavorMapper.xml b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml index cea219c..6e6f32c 100644 --- a/sky-server/src/main/resources/mapper/DishFlavorMapper.xml +++ b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml @@ -10,4 +10,10 @@ (#{df.dishId},#{df.name},#{df.value}) + + delete from dish_flavor where dish_id in + + #{dishId} + + \ No newline at end of file diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml index 834075b..d051d33 100644 --- a/sky-server/src/main/resources/mapper/DishMapper.xml +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -10,6 +10,26 @@ values (#{name}, #{categoryId}, #{price}, #{image}, #{description}, #{status}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser}) + + update dish + + name = #{name}, + category_id = #{categoryId}, + price = #{price}, + image = #{image}, + description = #{description}, + status = #{status}, + update_time = #{updateTime}, + update_user = #{updateUser}, + + where id = #{id} + + + delete from dish where id in + + #{id} + +