首页 > 其他分享 >苍穹外卖 实现新增菜品及其口味接口

苍穹外卖 实现新增菜品及其口味接口

时间:2024-10-14 23:47:49浏览次数:9  
标签:dishDTO com org sky 外卖 菜品 dish import 苍穹

        DishController

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
@RequestMapping("/admin/dish")
@Api(tags = "菜品相关接口")
@Slf4j
public class DishController {

    @Autowired
    private DishService dishService;

    /**
     * 新增菜品
     *
     * @param dishDTO
     * @return
     */
    @PostMapping
    @ApiOperation("新增菜品")
    public Result save(@RequestBody DishDTO dishDTO) {
        log.info("新增菜品:{}", dishDTO);
        dishService.saveWithFlavor(dishDTO);
        return Result.success();
    }
}

        DishService

package com.sky.service;

import com.sky.dto.DishDTO;

public interface DishService {

    /**
     * 新增菜品和对应的口味
     *
     * @param dishDTO
     */
    public void saveWithFlavor(DishDTO dishDTO);
}
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.function.Consumer;

@Service
@Slf4j
public class DishServiceImp implements DishService {
    @Autowired
    private DishMapper dishMapper;

    @Autowired
    private DishFlavorMapper dishFlavorMapper;

    /**
     * 新增菜品和对应的口味
     *
     * @param dishDTO
     */
    @Transactional
    public void saveWithFlavor(DishDTO dishDTO) {
        Dish dish = new Dish();
        // 将DTO转换为对应的实体对象
        BeanUtils.copyProperties(dishDTO, dish);

        // 向菜品表中插入1条数据
        dishMapper.insert(dish);

        // 获取insert语句生成的主键值
        Long dishId = dish.getId();

        List<DishFlavor> flavors = dishDTO.getFlavors();
        if (flavors != null && !flavors.isEmpty()) {
            flavors.forEach(new Consumer<DishFlavor>() {
                @Override
                public void accept(DishFlavor dishFlavor) {
                    dishFlavor.setDishId(dishId);
                }
            });
            // 向口味表中插入n条数据
            dishFlavorMapper.insertBatch(flavors);
        }
    }

}

        DishMapper

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;

@Mapper
public interface DishMapper {

    /**
     * 查询对应分类关联的菜品数量
     *
     * @param id
     * @return
     */
    Integer countDishByCategory(Long id);

    /**
     * 新增菜品和对应口味
     *
     * @param dish
     */
    @AutoFill(value = OperationType.INSERT)
    void insert(Dish dish);
}

        XML文件

<?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.DishMapper">
    <select id="countDishByCategory" resultType="Integer">
        select count(*)
        from dish
        where category_id = #{id}
    </select>

    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        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})
    </insert>
</mapper>

        DishFlavorMapper

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 insertBatch(List<DishFlavor> flavors);
}

         XML配置文件

<?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">
    <insert id="insertBatch">
        insert into dish_flavor (dish_id, name, value) VALUES
        <foreach collection="flavors" item="dishFlavor" separator=",">
            (#{dishFlavor.dishId},#{dishFlavor.name},#{dishFlavor.value})
        </foreach>
    </insert>
</mapper>

 

 

 

 

标签:dishDTO,com,org,sky,外卖,菜品,dish,import,苍穹
From: https://blog.csdn.net/Aishangyuwen/article/details/142931869

相关文章

  • 参赛故事|学习金蝶云苍穹开发,我从大一就开始
    怀揣热爱,勇敢挑战:我的金蝶软件杯参赛之旅2024年5月,我正值大一,怀揣着对编程的热爱,然而心中却充满了疑惑。尽管在课堂上学到了很多理论知识,但面对实践时,总觉得自己缺乏真正的技术能力,心中有种空洞的感觉。每当看到其他同学展示自己完成的项目时,我不禁感到羡慕和渴望,想要通过实践来......
  • 参赛故事|我也想成为一名金蝶云苍穹开发布道师
    迷茫到突破站在人生的十字路口,作为一名大三学生,我感受到了前所未有的压力。毕业的脚步越来越近,校园内的竞争愈发激烈,身边的同学早已通过奖学金、竞赛获奖等为自己的简历增光添彩。而我,望着自己那份平淡无奇的简历,不禁感到迷茫和焦虑。如果没有突出的表现,毕业后的道路似乎变得渺茫......
  • 外卖点餐系统小程序的设计
    管理员账户功能包括:系统首页,个人中心,外卖员管理,餐厅管理,用户管理,菜品分类管理,菜品信息管理,外卖订单管理,订单配送管理微信端账号功能包括:系统首页,餐厅,公告信息,在线留言,我的开发系统:Windows架构模式:SSMJDK版本:JavaJDK1.8开发工具:IDEA(推荐)数据库版本:mysql5.7数据库可视......
  • 外卖点餐系统小程序的设计
    管理员账户功能包括:系统首页,个人中心,外卖员管理,餐厅管理,用户管理,菜品分类管理,菜品信息管理,外卖订单管理,订单配送管理微信端账号功能包括:系统首页,餐厅,公告信息,在线留言,我的开发系统:Windows架构模式:SSMJDK版本:JavaJDK1.8开发工具:IDEA(推荐)数据库版本:mysql5.7数据库可视......
  • 基于nodejs+vue基于O2O模式的外卖订餐系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,人们的生活方式正经历着深刻的变革。在快节奏的城市生活中,外卖订餐已成为众多消费者解决日常饮食需求的重要方式。传统的餐饮行业......
  • 毕业设计项目-基于ssm+vue的外卖点餐系统+vue源码+10000字论文
    项目简介基于SSM实现的,主要功能如下:审核说明本项目源码收集于互联网或用户分享,经我们对资料的认真审核整理,确保资源可以正常使用;悉知:有一定的基础同学可以自行导入idea或者eclipse中运行项目,我们并不提供免费的技术指导。项目技术spring/springmvc/mybatis/(jsp)/html/......
  • SSM外卖点餐软件APP-计算机毕业设计源码30768
     目 录摘要1绪论1.1研究背景1.2研究目的1.3论文结构与章节安排2 外卖点餐软件APP系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3操作可行性分析2.2系统流程分析2.2.1数据流程3.3.2业务流程2.3系统功能分析2.3.......
  • springboot+vue基于O2O模式的外卖订餐系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,人们的生活方式正经历着深刻的变革。特别是在餐饮领域,线上订餐已成为现代人日常生活的重要组成部分。近年来,O2O(OnlineToOffline)模式以其独特的线上线下融合优势,在外卖订餐行业中展现出巨大的发展潜力。传统......
  • [SpringBoot] 苍穹外卖--面试题总结--上
    前言     1--苍穹外卖-SpringBoot项目介绍及环境搭建详解-CSDN博客2--苍穹外卖-SpringBoot项目中员工管理详解(一)-CSDN博客3--苍穹外卖-SpringBoot项目中员工管理详解(二)-CSDN博客4--苍穹外码-SpringBoot项目中分类管理详解-CSDN博客5--苍穹外卖-SpringBoot项目......
  • 全国外卖霸王餐系统对接详细步骤操作?
    对接全国外卖霸王餐系统并选择适合的系统时,你可以考虑以下几个步骤和标准:明确业务需求:首先确定你的平台需要哪些功能,如展示霸王餐选项、下单、支付、订单跟踪等。选择信誉良好的服务提供商:选择提供稳定服务的API提供商,并确保其提供的接口能满足你的业务需求。了解API文档和......