首页 > 其他分享 >苍穹外卖 新增套餐接口

苍穹外卖 新增套餐接口

时间:2024-10-26 23:46:06浏览次数:5  
标签:org setmealDTO 外卖 套餐 import 苍穹 id setmeal

        新增套餐主要的坑:新增时操作数据库,不能使用简单的@Insert注解,因为要使用到数据库自增的id值,所以说必须使用XML配置数据库;必须要注意建立好套餐和对应菜品之间的关联。

        SetmealController

package com.sky.controller.admin;

import com.sky.dto.SetmealDTO;
import com.sky.result.Result;
import com.sky.service.SetMealService;
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.data.redis.core.RedisTemplate;
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/setmeal")
@Slf4j
@Api(tags = "套餐相关接口")
public class SetMealController {

    @Autowired
    private SetMealService setMealService;

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 新增套餐接口
     *
     * @param setmealDTO
     * @return
     */
    @PostMapping
    @ApiOperation("新增套餐")
    public Result save(@RequestBody SetmealDTO setmealDTO) {
        log.info("新增套餐:{}", setmealDTO);
        setMealService.save(setmealDTO);
        return Result.success();
    }
}

        SetmealService

/**
     * 新增套餐
     *
     * @param setmealDTO
     */
    @Override
    public void save(SetmealDTO setmealDTO) {
        // 将SetmealDTO对象封装为对应的setmealDTO对象
        Setmeal setmeal = new Setmeal();
        BeanUtils.copyProperties(setmealDTO, setmeal);
        // 因为有AOP编程,所以说不需要再为setmeal对象补充属性了
        // 直接调用Mapper中的方法添加新的套餐在数据库中
        setMealMapper.insert(setmeal);

        // 需要将套餐和对应的菜品建立联系,所以说需要将套餐的id和其对应的菜品id添加到setmeal_dish表中
        // 获取这次请求添加的套餐的id
        Long setmealId = setmeal.getId();
        log.info("setmealID:{}", setmealId);
        // setmealDTO中的setmealdishes是一个arraylist集合,其中存储的是SetmealDish对象,
        // 对象中有菜品的信息,需要为其补充菜品所属的套餐id
        // 获取当前套餐下存储的setmealDish的信息
        List<SetmealDish> setmealDishs = setmealDTO.getSetmealDishes();
        // 为当前套餐下存储的所有setmealDish关联当前套餐的id
        setmealDishs.forEach(new Consumer<SetmealDish>() {
            @Override
            public void accept(SetmealDish setmealDish) {
                setmealDish.setSetmealId(setmealId);
            }
        });
        // 批量保存套餐和菜品的关联关系
        setmealDishMapper.insertBatch(setmealDishs);
    }

        SetmealMapper

 /**
     * 插入一个新套餐
     *
     * @param setmeal
     */
    // TODO重大BUG,因为要使用自动自增的id给当前的setmeal对象,所以说不能直接使用@Insert注解,而必须使用xml配置SQL
    // useGeneratedKeys="true":表示在插入数据后,要使用数据库生成的键值(通常是自增主键)
    // keyProperty="id":指定将数据库生成的键值赋值给传入参数对象的id属性,这样才能将自增的id给setmeal对象
    @AutoFill(value = OperationType.INSERT)
    void insert(Setmeal setmeal);
<insert id="insert" parameterType="Setmeal" useGeneratedKeys="true" keyProperty="id">
    insert into setmeal
    (category_id, name, price, status, description, image, create_time, update_time, create_user, update_user)
    values (#{categoryId}, #{name}, #{price}, #{status}, #{description}, #{image}, #{createTime}, #{updateTime},
    #{createUser}, #{updateUser})
    </insert>

 

 

 

 

标签:org,setmealDTO,外卖,套餐,import,苍穹,id,setmeal
From: https://blog.csdn.net/Aishangyuwen/article/details/143261959

相关文章

  • 苍穹外卖 将菜品缓存到Redis
        CategoryController,用户端查询分类id及其分类下对应的菜品,假如是第一次查询,那么就从数据库中查询并加入redis缓存中,若不是第一次查询,那么直接从redis中查询,不再查询数据库。//redis缓存菜品,减少数据库的查询//在数据库中查找属于IO,假如有很多用户同时访问,那么......
  • UML外卖系统报告(包含具体需求分析)
    1、系统背景随着互联网技术的快速发展,外卖订餐服务逐渐成为人们生活中的一部分。传统的电话订餐方式面临诸多不便和限制,而基于互联网的外卖订餐系统则提供了更加便捷、快速和高效的订餐服务。这种系统通过将餐厅、顾客和配送人员连接起来,实现了点餐、支付、配送等关键环节......
  • 基于微信小程序的外卖点餐餐厅点餐美食点餐系统的设计与开发
    基于微信小程序的外卖点餐餐厅点餐美食点餐系统的设计与开发视频介绍:基于微信小程序的外卖点餐餐厅点餐美食点餐系统的设计与开发具体贴图链接:贴图链接缩略图如下:开发环境及工具:大等于jdk1.8,大于mysql5.5,idea,微信开发者工具技术说明:vue.js小程序java......
  • 苍穹外卖 用户端查询菜品分类接口
        CategoryControllerpackagecom.sky.controller.user;importcom.sky.entity.Category;importcom.sky.result.Result;importcom.sky.service.CategoryService;importio.swagger.annotations.Api;importio.swagger.annotations.ApiOperation;importlom......
  • 青训营 X 豆包MarsCode 技术训练营--小C的外卖超时判断
    题目小C点了一个外卖,并且急切地等待着骑手的送达。她想知道她的外卖是否超时了。已知小C在时刻t1点了外卖,外卖平台上显示的预计送达时间为t2,而实际送达时间为t3。需要判断外卖是否超时。如果外卖超时,则输出“Yes”;否则输出“No”。实际送达时间与预计送达时间在2......
  • 苍穹外卖--开发记录day06
    文章苍穹外卖day06一:店铺营业状态设置二:httpclient三:微信小程序开发1:介绍2:准备工作3:入门案例四:微信登录功能总结苍穹外卖day06一:店铺营业状态设置外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传因为我们店铺的营业状态就两个值,一个是1一个......
  • [瑞吉外卖]-08订单支付
    地址簿管理需求分析地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。用户的地址信息会存储在addressbook表,即地址表中。导入代码/***地址簿*/@DatapublicclassAddress......
  • sky_take_out苍穹外卖开发(day-1)
    软件开发整体介绍:      开发流程:             需求分析:                    需求规格说明书                    产品原型             设计:                   ......
  • python+flask框架的 基于Java的外卖系统设计与实现 前台mp48(开题+程序+论文) 计算机
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,外卖服务已成为人们日常生活中不可或缺的一部分。关于外卖系统的研究,现有研究主要以技术实现和用户体验优化为主......
  • python+flask框架的 基于Java的外卖系统设计与实现前台mp48(开题+程序+论文) 计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网的快速发展和人们生活节奏的加快,外卖服务已成为现代都市生活中不可或缺的一部分。关于外卖系统的研究,现有研究主要以技术实现和......