新增菜品

This commit is contained in:
bunny 2024-01-07 00:40:22 +08:00
parent 61b71ae77e
commit 483ef1cabb
7 changed files with 147 additions and 1 deletions

View File

@ -0,0 +1,37 @@
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.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;
import javax.annotation.Resource;
@RestController
@RequestMapping("/admin/dish")
@Api(tags = "菜品相关接口")
@Slf4j
public class DishController {
@Resource
private DishService dishService;
/**
* 新增菜品和口味
*
* @param dishDTO DishDTO
* @return Result
*/
@ApiOperation("新增菜品")
@PostMapping("")
public Result<String > save(@RequestBody DishDTO dishDTO) {
log.info("新增菜品:{}", dishDTO);
dishService.saveWithFlavor(dishDTO);
return Result.success();
}
}

View File

@ -0,0 +1,14 @@
package com.sky.mapper;
import com.sky.entity.DishFlavor;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface DishFlavorMapper {
/**
* 香口味表中插入n条数据
* @param flavors List<DishFlavor>
*/
void insertBatch(List<DishFlavor> flavors);
}

View File

@ -1,5 +1,8 @@
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.Select;
@ -8,8 +11,17 @@ public interface DishMapper {
/**
* 根据分类id查询菜品数量
*
* @param categoryId Long
* @return Integer
*/
Integer countByCategoryId(Long categoryId);
/**
* 新增菜品和口味
*
* @param dish Dish
*/
@AutoFill(value = OperationType.INSERT)
void insert(Dish dish);
}

View File

@ -0,0 +1,12 @@
package com.sky.service;
import com.sky.dto.DishDTO;
public interface DishService {
/**
* 新增菜品和口味
*
* @param dishDTO DishDTO
*/
void saveWithFlavor(DishDTO dishDTO);
}

View File

@ -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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Service
@Slf4j
public class DishServiceImpl implements DishService {
@Resource
private DishMapper dishMapper;
@Resource
private DishFlavorMapper dishFlavorMapper;
/**
* 新增菜品和口味
*
* @param dishDTO DishDTO
*/
@Override
@Transactional
public void saveWithFlavor(DishDTO dishDTO) {
Dish dish = new Dish();
BeanUtils.copyProperties(dishDTO, dish);
// 插入数据
dishMapper.insert(dish);
// 获取Insert语句生成的主键值
Long dishId = dish.getId();
List<DishFlavor> flavors = dishDTO.getFlavors();
if (flavors != null && !flavors.isEmpty()) {
flavors.forEach(dishFlavor -> {
dishFlavor.setDishId(dishId);
});
// 香口味表中插入n条数据
dishFlavorMapper.insertBatch(flavors);
}
}
}

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.DishFlavorMapper">
<!-- 香口味表中插入n条数据 -->
<insert id="insertBatch">
insert into dish_flavor (dish_id, name, value )
values
<foreach collection="flavors" item="df" separator=",">
( #{df.dishId},#{df.name},#{df.value})
</foreach>
</insert>
</mapper>

View File

@ -2,7 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.DishMapper">
<select id="countByCategoryId" resultType="java.lang.Integer">
<!-- 新增菜品和口味 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into dish (id, name, category_id, price, image, description, status, create_time, update_time,
create_user, update_user)
values (#{id}, #{name}, #{categoryId}, #{price}, #{image}, #{description}, #{status}, #{createTime},
#{updateTime}, #{createUser}, #{updateUser});
</insert>
<!-- 根据分类id查询菜品数量 -->
<select id="countByCategoryId" resultType="java.lang.Integer" >
select count(id)
from dish
where category_id = #{categoryId}