当前位置: 首页 > news >正文

【外卖系统】新增菜品

需求分析

在后台中,通过新增功能来添加一个新的菜品,在添加菜品时需要选择当前菜品所属的菜品分类,并且需要上传的菜品图片。

代码开发

需要添加的类和基本接口:实体类DishFlavor、Mapper接口DishFlavorMapper、业务层接口DishFlavorService、业务层实现类DishFlavorServiceImpl、控制层DishController

  • 页面发送ajax请求,请求服务器端获取菜品分类数据并展示到下拉框
  • 页面发送请求进行图片上传,请求服务端将图片保存到服务器
  • 页面发送请求进行图片下载,将上传的图片进行回显
  • 点击保存按钮,发送ajax请求,将菜品相关数据以json形式提交到服务端

获取菜品分类列表(下拉框)

// 获取菜品分类列表
const getCategoryList = (params) => {return $axios({url: '/category/list',method: 'get',params})
}

前端发送aiax请求的地址是'/category/list',所以应该在CategoryController中写这个方法
添加菜品功能,通过调试前端发现查看菜品分类没有报错。
在这里插入图片描述在这里插入图片描述

 /*** 根据条件,获取菜品分类列表* @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());//添加排序条件 优先使用sort排序 当sort相同的情况下 使用更新时间进行排序queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);List<Category> list = categoryService.list(queryWrapper);return R.success(list);}

排序也是正确的
在这里插入图片描述

上传图片

这里我上传了两次,第一次上传的图片超过了2MB,所以报错了,然后我只能上传大笨狗,上传成功了。下图分别是上传和浏览请求成功的提示。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

接受页面提交的数据

在这里插入图片描述数据格式:
在这里插入图片描述此时save()的参数不能直接使用Dish dish,因为通过前端传送的数据格式可以看到有flavors这个参数。
在这里插入图片描述解决办法:导入DishDto,用于封装页面提交的数据
检查封装的数据是否有问题:
在这里插入图片描述

2023-08-01 10:18:03.969  INFO 8552 --- [nio-8060-exec-2] c.s.reggie.controller.DishController     : DishDto(flavors=[DishFlavor(id=null, dishId=null, name=甜味, value=["无糖","少糖","半糖","多糖","全糖"], createTime=null, updateTime=null, createUser=null, updateUser=null, isDeleted=null), DishFlavor(id=null, dishId=null, name=温度, value=["热饮","常温","去冰","少冰","多冰"], createTime=null, updateTime=null, createUser=null, updateUser=null, isDeleted=null)], categoryName=null, copies=null)

测试代码:

 @PostMappingpublic R<String> save(@RequestBody DishDto dishDto)//记得封装要加RequestBody注解{log.info(dishDto.toString());return null;}

在这里插入图片描述新增大笨狗成功。

/*** 菜品管理*/
@RestController
@RequestMapping("/dish")
@Slf4j
public class DishController {@Autowiredprivate DishService dishService;//菜品服务@Autowiredprivate DishFlavorService dishFlavorService;//菜品口味@PostMappingpublic R<String> save(@RequestBody DishDto dishDto)//记得封装要加RequestBody注解{log.info(dishDto.toString());dishService.saveWithFlavor(dishDto);return R.success("新增菜品成功...");}
package com.springboot.reggie.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.springboot.reggie.dto.DishDto;
import com.springboot.reggie.entity.Dish;
import com.springboot.reggie.entity.DishFlavor;
import com.springboot.reggie.mapper.DishMapper;
import com.springboot.reggie.service.DishFlavorService;
import com.springboot.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;@Service
@Slf4jpublic class DishServiceImpl extends ServiceImpl<DishMapper, Dish> implements DishService {@Autowiredprivate DishFlavorService dishFlavorService;/*** 新增菜品 同时保存对应的口味* @param dishDto*/@Transactional //需要加上事务控制 因为涉及到多张表的操作public void saveWithFlavor(DishDto dishDto){//保存菜品的基本信息到菜品表this.save(dishDto);Long dishId = dishDto.getId();//给菜品id赋值//菜品口味List<DishFlavor> flavors = dishDto.getFlavors();flavors =  flavors.stream().map((item)->{item.setDishId(dishId);return  item;}).collect(Collectors.toList());//保存菜品口味数据到菜品口味表dishFlavorService.saveBatch(flavors);}}
http://www.lryc.cn/news/111336.html

相关文章:

  • 使用docker搭建GPT服务
  • Qt项目---简单的计算器
  • Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述
  • 基于SpringBoot+Vue的地方美食分享网站设计与实现(源码+LW+部署文档等)
  • 在java中操作redis_Data
  • 嵌入式开发学习(STC51-14-时钟)
  • ES新特性部分
  • 数据结构——搜索二叉树
  • 3.3 Makefile的嵌套包含
  • 爬虫获取电影数据----以沈腾参演电影为例
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】
  • 2023年华数杯数学建模A题思路代码分析 - 隔热材料的结构优化控制研究
  • 阿里云二级域名配置
  • Webpack5 动态导入按需加载
  • 【Linux操作系统】Ubuntu和center两个Linux发行版本中指令的区别
  • c++基本数据结构
  • 路由器DHCP实验
  • Linux 电源子系统之充电、放电、低功耗
  • 捕捉时刻:将PDF文件中的图像提取为个性化的瑰宝(从pdf提取图像)
  • 【基础类】—HTTP协议类
  • 【Qt高级】QThread与QTimer组合使用引出的信号槽执行在哪个线程的思考【2023.08.06】
  • 用于大型图像模型的 CNN 内核的最新内容
  • 索尼电视怎么完全关机
  • AI介绍——chat gpt/文心一言/claude/bard/星火大模型/bing AI
  • C++ 访问控制——公有继承、私有继承、保护继承
  • python性能调试
  • 738. 单调递增的数字
  • ssh安全远程管理
  • 外部排序算法总结
  • Redis安装以及配置隧道连接(centOs)