瑞吉外卖(16) - 新增菜品功能开发

news/2024/5/2 21:18:52/文章来源:https://blog.csdn.net/qq_39123467/article/details/127016623

文章目录

  • 需求分析
  • 数据模型
    • dish表
    • dis flaow表
  • 代码开发
    • 搭建框架
      • 新增dishFlavor实体类
      • 新增Mapper接口DishFlavorMapper
      • 新增业务接口DishFlavorService
      • 新增业务层实现类DishFlavorServiceImpl
      • 新增控制层DishController
    • 梳理交互过程
      • 编辑CategoryControoler
      • 下拉框功能测试
    • 导入DTO
      • 编写DishController
      • 添加菜品测试
      • 编写DishService接口
      • 编写DishServiceImpl
      • 编写ReggieApplication
      • 完善DishController
  • 功能测试

需求分析

在这里插入图片描述
新增完后在手机端显示
在这里插入图片描述

数据模型

在这里插入图片描述
在这里插入图片描述

dish表

在这里插入图片描述

dis flaow表

在这里插入图片描述

代码开发

在这里插入图片描述

搭建框架

新增dishFlavor实体类

package com.taotao.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;/**
菜品口味*/
@Data
public class DishFlavor implements Serializable {private static final long serialVersionUID = 1L;private Long id;//菜品idprivate Long dishId;//口味名称private String name;//口味数据listprivate String value;@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;@TableField(fill = FieldFill.INSERT_UPDATE)private LocalDateTime updateTime;@TableField(fill = FieldFill.INSERT)private Long createUser;@TableField(fill = FieldFill.INSERT_UPDATE)private Long updateUser;//是否删除private Integer isDeleted;}

新增Mapper接口DishFlavorMapper

package com.taotao.reggie.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.taotao.reggie.entity.DishFlavor;
import org.apache.ibatis.annotations.Mapper;/*** create by 刘鸿涛* 2022/9/23 19:32*/
@SuppressWarnings({"all"})
@Mapper
public interface DishFlavorMapper extends BaseMapper<DishFlavor> {}

新增业务接口DishFlavorService

package com.taotao.reggie.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.taotao.reggie.entity.DishFlavor;/*** create by 刘鸿涛* 2022/9/23 19:33*/
@SuppressWarnings({"all"})
public interface DishFlavorService extends IService<DishFlavor> {}

新增业务层实现类DishFlavorServiceImpl

package com.taotao.reggie.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.taotao.reggie.entity.DishFlavor;
import com.taotao.reggie.mapper.DishFlavorMapper;
import com.taotao.reggie.service.DishFlavorService;
import org.springframework.stereotype.Service;/*** create by 刘鸿涛* 2022/9/23 19:35*/
@SuppressWarnings({"all"})
@Service
public class DishFlavorServiceImpl extends ServiceImpl<DishFlavorMapper, DishFlavor> implements DishFlavorService {}

新增控制层DishController

package com.taotao.reggie.controller;import com.taotao.reggie.service.DishFlavorService;
import com.taotao.reggie.service.DishService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** create by 刘鸿涛* 2022/9/23 19:37*/
@SuppressWarnings({"all"})
/*** 菜品管理*/
@RestController
@RequestMapping("/dish")
public class DishController {@Autowiredprivate DishService dishService;@Autowiredprivate DishFlavorService dishFlavorService;}

梳理交互过程

在这里插入图片描述

编辑CategoryControoler

    /*** 根据条件查询分类数据* @param category* @return*/@GetMapping("list")public R<List<Category>> list(Category category){//条件构造器LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();//添加条件queryWrapper.eq(category.getType() != null,Category::getType,category.getType());//添加排序条件            根据Category的sort进行排序        根据category的更新时间进行排序queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);List<Category> list = categoryService.list(queryWrapper);return R.success(list);}

下拉框功能测试

在这里插入图片描述

导入DTO

在这里插入图片描述
在这里插入图片描述

package com.taotao.reggie.dto;import com.taotao.reggie.entity.Dish;
import com.taotao.reggie.entity.DishFlavor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;@Data
public class DishDto extends Dish {private List<DishFlavor> flavors = new ArrayList<>();private String categoryName;private Integer copies;
}

编写DishController

package com.taotao.reggie.controller;import com.taotao.reggie.common.R;
import com.taotao.reggie.dto.DishDto;
import com.taotao.reggie.service.DishFlavorService;
import com.taotao.reggie.service.DishService;
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;/*** create by 刘鸿涛* 2022/9/23 19:37*/
@SuppressWarnings({"all"})
/*** 菜品管理*/
@RestController
@RequestMapping("/dish")
@Slf4j
public class DishController {@Autowiredprivate DishService dishService;@Autowiredprivate DishFlavorService dishFlavorService;@PostMappingpublic R<String> save(@RequestBody DishDto dishDto){log.info(dishDto.toString());return null;}
}

添加菜品测试

在这里插入图片描述

编写DishService接口

在这里插入图片描述

编写DishServiceImpl

package com.taotao.reggie.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.taotao.reggie.dto.DishDto;
import com.taotao.reggie.entity.Dish;
import com.taotao.reggie.entity.DishFlavor;
import com.taotao.reggie.mapper.DishMapper;
import com.taotao.reggie.service.DishFlavorService;
import com.taotao.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
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.stream.Collectors;/*** create by 刘鸿涛* 2022/6/8 8:21*/
@SuppressWarnings({"all"})
@Slf4j
@Service
public class DishServiceImpl extends ServiceImpl<DishMapper, Dish> implements DishService {@Autowiredprivate DishFlavorService dishFlavorService;/*** 新增菜品,同时保存对应的口味数据* @param dishDto*/@Transactional@Overridepublic void saveWithFlavor(DishDto dishDto) {//保存菜品的基本信息到菜品表this.save(dishDto);Long dishId = dishDto.getId();  //菜品idList<DishFlavor> flavors = dishDto.getFlavors();flavors.stream().map((item) ->{item.setDishId(dishId);return item;}).collect(Collectors.toList());//保存菜品口味数据到菜品口味表dish_flavordishFlavorService.saveBatch(dishDto.getFlavors());}
}

编写ReggieApplication

在这里插入图片描述

完善DishController

在这里插入图片描述

功能测试

添加成功
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_12916.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

香橙派Orange Pi i96 初次使用遇到的坑和解决方法+附加c# iot .net 代码实例

香橙派Orange Pi i96这个主板是香橙派最便宜的一样主板&#xff0c;功能也不少&#xff0c;我觉得可以满足我的需求&#xff0c;如果可以用好的话&#xff0c;可以做很多东西&#xff0c;批量买也便宜&#xff0c;做出来的产品&#xff0c;定价也不用很高&#xff0c;符合效益 …

4计算机网络与信息安全——软件设计师

一、七层模型 内容&#xff1a; 习题&#xff1a; 局域网不能通过三层通信 二、网络技术标准与协议 一般分为4/5层(没有明确说明&#xff0c;了解主要几层即可) TCP协议: DHCP协议 DNS协议 递归直接回答&#xff0c;迭代刨根到底 三、网络类型与拓扑类型 计算机网络按不同…

一起Talk Android吧(第三百八十五回:数据绑定-DataBinding总结)

文章目录数据绑定使用方法7.单向数据绑8.双向数据绑定9.绑定事件演示结果使用总结各位看官们&#xff0c;大家好&#xff0c;上一回中咱们说的是数据绑定-DataBinding的例子,这一回中咱们继承介绍该例子。闲话休提&#xff0c;言归正转&#xff0c;让我们一起Talk Android吧&am…

线程池概念2

线程池类图 ExecutorService:是一个线程池最基本的接口&#xff0c;提供了提交任务&#xff0c;关闭线程池这些基本的方法。 ScheduledExecutorService:扩展接口&#xff0c;在基础线程池的功能上又新增了任务调度的功能&#xff0c;可以用来定时执行任务。 线程池状态 线程…

Devtools Console 面板输入了 1+1 ,浏览器内部发生了什么?

背景 新来的实习生妹子问了一个问题&#xff1a;「你看 Chrome 的 Devtools 调试工具&#xff0c;代码写一半还没运行下面就会提示输出结果&#xff0c;这个咋做到的&#xff1f;」 咋做的&#xff1f;对于 Devtools 的内部执行逻辑&#xff0c;咱不了解&#xff0c;但咱也不能…

WhatsApp和WhatsApp Business之间的区别

关键词&#xff1a;WhatsApp、WhatsApp Business WhatsApp 无疑是一款超级方便、免费且毫不费力的即时通讯应用程序。这就是庞大的用户群的原因。对于企业来说&#xff0c;它也是一个超级方便、免费且不费吹灰之力的即时通讯应用程序。特别是自从 WhatsApp 推出了 WhatsApp Bus…

《MySQL DBA封神打怪之路》专栏学习大纲

《MySQL DBA封神打怪之路》专栏学习大纲 文章目录《MySQL DBA封神打怪之路》专栏学习大纲1、作者介绍2、专栏介绍3、专栏部分文章截图3.1.所有文章一栏3.2.文章内容截图4、专栏大纲学习指南4.1对数据库的初步认识4.2.四种类型的SQL语句基本使用4.3.超丰富的多表联查案例4.4.事物…

消除笔去水印怎么做?教你怎么用这些消除笔软件

在网上看到好看的照片想要用作壁纸&#xff0c;但是上面有水印看起来不好看怎么办&#xff1f;我们可以用有消除笔的软件将图片水印去除&#xff0c;那么消除笔去水印怎么做呢&#xff1f;今天的这个教程分享给你们。方法一&#xff1a;借助“Styler”进行去水印操作 这是一款拥…

Echarts绘制geo地图属性设置大全(一)

1、Echarts版本 "echarts": "^5.3.3", 2、基础地图绘制&#xff08;以中国地图为例&#xff09; 绘制地图需要有用于绘制地理坐标系的数据&#xff0c;如示例使用的china.js <template><div ref"mapBar" class"map-class"&…

面试之HashMap

1.初始大小&#xff1a;HashMap默认初始大小是16&#xff0c;这个默认值是可以设置的&#xff0c;如果事先知道大概的数据量有多大&#xff0c;可以通过修改默认初始大小&#xff0c;减少动态扩容的次数&#xff0c;这样会大大提高HashMap的性能 2.动态扩容&#xff1a;最大 装…

兼容性测试包含哪几类呢?

兼容性测试包含哪几类呢? (1)浏览器方面 关于浏览器的兼容性测试&#xff0c;主要是检查页面的交互、元素和样式展示是否正常。我们都知道&#xff0c;目前市面上主流的浏览器非常多&#xff0c;像&#xff1a;360、搜狗、火狐等等。 在进行测试的时候&#xff0c;由于兼容性问…

2022出海东南亚:越南电商市场现状及网红营销特点

近几年&#xff0c;东南亚整体发展态势非常好&#xff0c;加上国内市场饱和&#xff0c;不少国内企业在计划出海或已经出海东南亚。作为东南亚第二大电商市场&#xff0c;越南自然也成了香饽饽&#xff0c;越南蓬勃发展的数字经济和电商领域&#xff0c;让其成为了卖家挖掘新商…

Vue 力导图d3js 实现

PowerBI 自定义组件推荐用D3JS 实现&#xff0c;实现一个PowerBI 的力导图组件&#xff0c;为调试方便&#xff0c;先用Vue 实现一个&#xff0c;然后再移植到PowerBI 中&#xff0c;话不多说&#xff0c;上效果&#xff1a; 体验入口 上代码是最好的老师&#xff1a; <t…

【easyExcel】后端将模板文件写入流供前端下载报错,easyexcel下载模板文件出错

目录事件起因环境和工具操作过程解决办法参考内容&#xff1a;结束语事件起因 报错内容&#xff08;我主要搜索的两个错误内容点&#xff09;&#xff1a; com.alibaba.excel.exception.ExcelGenerateException: Create workbook failure 和 Caused by: org.apache.poi.openx…

kingbaseES(人大金仓)数据库语法和常用函数 以及 踩坑记录

前言 最近公司弄了个新项目&#xff0c;数据库指定使用kingbase数据库 刚开始一看这名字都不知道这是啥数据库&#xff0c;后来百度一搜&#xff0c;看到中文名字就知道了。 虽然没用过&#xff0c;但那几个国产数据库也听说过 这不&#xff0c;刚开始用&#xff0c;语法都不熟…

概率统计·概率论的基本概念【条件概率】

条件概率 定义 条件概率与积事件的区别 条件概率——在A事件发生的前提下&#xff0c;发生B 积事件——AB同时发生 性质 **注意&#xff08;3&#xff09;要在B1&#xff0c;B2……是互斥事件 &#xff08;6&#xff09;用得多 纯乐&#xff0c;自己都说了&#xff08;6&…

数智赋能,美创助力绍兴市上虞区建设医共体管理平台

什么是医共体&#xff1f; 开展县域医共体建设是深化医改的重要步骤和制度创新&#xff0c;旨在通过医共体模式&#xff0c;推动医疗卫生服务供给侧结构性改革&#xff0c;调整优化医疗资源结构布局&#xff0c;促进医疗卫生工作重心下移和资源下沉&#xff0c;提升基层服务能力…

瑞吉外卖(14) - 上传文件功能开发

文章目录文件上传介绍文件上传代码实现查看效果新建CommonController类断点测试转存文件取消拦截器过滤LoginCheckFilter.java运行测试完善功能编写application.xml编写CommonController.java运行测试完善二级目录编写application.yml编写CommonControler.java测试成功文件上传…

使用streamstring实现格式化输入

目的&#xff1a;在windows系统写c项目&#xff0c;常用sscanf_s进行格式化输入。但是在ubuntu系统上发现sscanf_s不可用&#xff08;只有sscanf可用&#xff0c;但是它是c 99 的函数了&#xff09;。后面查阅知道&#xff0c;这个sscanf_s函数是微软专有的函数&#xff0c;不具…

linux 竞态与并发编程

前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 提示&#xff1a;以下是本篇文…