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 14668f3..08f3cc5 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 @@ -7,6 +7,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; @@ -75,4 +76,37 @@ public class DishController { 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 c9d5b50..55b4be8 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java @@ -4,6 +4,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; @@ -30,4 +31,13 @@ public interface DishFlavorMapper { * @param dishIds */ void deleteByDishIds(List dishIds); + + + /** + * 根据菜品id查询对应的口味数据 + * @param dishId + * @return + */ + @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 6d830ef..eaa6d22 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -62,4 +62,12 @@ public interface DishMapper { * @param ids */ void deleteByIds(List ids); + + + /** + * 根据id动态修改菜品数据 + * @param dish + */ + @AutoFill(value = 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 d8f79c2..0d05077 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 java.util.List; @@ -29,4 +30,19 @@ public interface DishService { * @param ids */ void deleteBatch(List ids); + + + /** + * 根据id查询菜品和对应的口味数据 + * @param id + * @return + */ + DishVO getByIdWithFlavor(Long id); + + + /** + * 根据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 3816988..17562bf 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 @@ -114,4 +114,52 @@ public class DishServiceImpl implements DishService { dishFlavorMapper.deleteByDishIds(ids); } + + + /** + * 根据id查询菜品和对应的口味数据 + * @param id + * @return + */ + @Override + public DishVO getByIdWithFlavor(Long id) { + + //根据id查询菜品数据 + Dish dish = dishMapper.getById(id); + + //根据id查询菜品关联的口味 + List dishFlavors = dishFlavorMapper.getByDishId(id); + + // 再封装到一起 DishVO + DishVO dishVO = new DishVO(); + BeanUtils.copyProperties(dish, dishVO); + dishVO.setFlavors(dishFlavors); + return dishVO; + } + + + /** + * 根据id修改菜品信息及其关联的口味信息 + * @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.size() > 0) { + flavors.forEach(dishFlavor -> { + dishFlavor.setDishId(dishDTO.getId()); + }); + dishFlavorMapper.insertBatch(flavors); + } + } } diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml index ffb367e..a009af9 100644 --- a/sky-server/src/main/resources/mapper/DishMapper.xml +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -10,7 +10,6 @@ (#{name}, #{categoryId}, #{price}, #{image}, #{description}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser}, #{status}) - delete from dish where id in @@ -18,7 +17,6 @@ - + + + update dish + + name = #{name}, + category_id = #{categoryId}, + price = #{price}, + image = #{image}, + description = #{description}, + status = #{status}, + update_time = #{updateTime}, + update_user = #{updateUser}, + + where id = #{id} + +