From 9fcb79991e7022b93ce2f091fbc2d855437ec868 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Tue, 11 Nov 2025 11:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=8D=E7=A9=B9=E5=A4=96=E5=8D=96--=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8F=9C=E5=93=81-=E5=8A=9F=E8=83=BD=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sky/controller/admin/DishController.java | 33 +++++++++++++ .../java/com/sky/mapper/DishFlavorMapper.java | 15 ++++++ .../main/java/com/sky/mapper/DishMapper.java | 10 ++++ .../java/com/sky/service/DishService.java | 10 ++++ .../com/sky/service/impl/DishServiceImpl.java | 49 +++++++++++++++++++ .../resources/mapper/DishFlavorMapper.xml | 13 +++++ .../src/main/resources/mapper/DishMapper.xml | 10 ++++ 7 files changed, 140 insertions(+) create mode 100644 sky-server/src/main/java/com/sky/controller/admin/DishController.java create mode 100644 sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java create mode 100644 sky-server/src/main/java/com/sky/service/DishService.java create mode 100644 sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java create mode 100644 sky-server/src/main/resources/mapper/DishFlavorMapper.xml create mode 100644 sky-server/src/main/resources/mapper/DishMapper.xml 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 new file mode 100644 index 0000000..b3cbe19 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/DishController.java @@ -0,0 +1,33 @@ +package com.sky.controller.admin; + +import com.sky.dto.DishDTO; +import com.sky.result.Result; +import com.sky.service.DishService; +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.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Slf4j +@Api(tags = "菜品相关接口") +@RequestMapping("/admin/dish") +public class DishController { + + @Autowired + private DishService dishService; + + + @PostMapping + @ApiOperation("新增菜品") + public Result add(@RequestBody DishDTO dto){ + log.info("新增菜品:{}",dto); + dishService.saveDishWitchFlavor(dto); + + 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 new file mode 100644 index 0000000..451353c --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java @@ -0,0 +1,15 @@ +package com.sky.mapper; + +import com.sky.entity.DishFlavor; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface DishFlavorMapper { + /** + * 菜品口味的批量插入 + * @param flavors + */ + void insertBath(List flavors); +} 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 eece6f8..0d96856 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -1,6 +1,10 @@ package com.sky.mapper; +import com.sky.annotation.AutoFill; +import com.sky.entity.Dish; +import com.sky.enumeration.OperationType; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Select; @Mapper @@ -14,4 +18,10 @@ public interface DishMapper { @Select("select count(id) from dish where category_id = #{categoryId}") Integer countByCategoryId(Long categoryId); + /** + * 新增菜品 + * @param dish + */ + @AutoFill(OperationType.INSERT) + void insert(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 new file mode 100644 index 0000000..18feac4 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/DishService.java @@ -0,0 +1,10 @@ +package com.sky.service; + +import com.sky.dto.DishDTO; + +public interface DishService { + /* + 新增菜品和它的口味 + */ + void saveDishWitchFlavor(DishDTO dto); +} 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 new file mode 100644 index 0000000..3f4b707 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java @@ -0,0 +1,49 @@ +package com.sky.service.impl; + +import com.sky.dto.DishDTO; +import com.sky.entity.Dish; +import com.sky.entity.DishFlavor; +import com.sky.mapper.DishFlavorMapper; +import com.sky.mapper.DishMapper; +import com.sky.service.DishService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class DishServiceImpl implements DishService { + @Autowired + private DishMapper dishMapper; + + @Autowired + private DishFlavorMapper dishFlavorMapper; + + + /* + 新增菜品和它的口味 + */ + @Override + @Transactional //启用spring的事务操作,让菜品的添加和口味的添加,同时成功或失败 + public void saveDishWitchFlavor(DishDTO dto) { + //添加一条Dish数据 + Dish dish = new Dish(); + BeanUtils.copyProperties(dto,dish); + //注意:新增菜品时,要通过主键回显,获取数据库生成的id + dishMapper.insert(dish); + //如果有口味数据,添加DishFlavor数据 + List flavors = dto.getFlavors(); + if (flavors != null && flavors.size() > 0) { + //插入菜品口味数据之前,先将菜品的id补充完整 +// flavors.forEach(flaver->flaver.setDishId(dish.getId())); + for (DishFlavor flavor : flavors) { + flavor.setDishId(dish.getId()); + } + //菜品口味的插入(可以遍历逐个insert,也可以批量插入) + dishFlavorMapper.insertBath(flavors); + } + + } +} diff --git a/sky-server/src/main/resources/mapper/DishFlavorMapper.xml b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml new file mode 100644 index 0000000..00f3d8e --- /dev/null +++ b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml @@ -0,0 +1,13 @@ + + + + + + insert into dish_flavor(dish_id, name, value) + values + + (#{flavor.dishId},#{flavor.name},#{flavor.value}) + + + diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml new file mode 100644 index 0000000..5030690 --- /dev/null +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -0,0 +1,10 @@ + + + + + + insert into dish (name, category_id, price, image, description, create_time, update_time, create_user, update_user,status) + values (#{name},#{categoryId},#{price},#{image},#{description},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status}) + +