基于SSM的订餐系统---超详细实现菜品套餐新增模块

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

新增套餐

需求分析:

后台系统可以管理套餐系统,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并且需要上传套餐对应的图片,在客户端会按照套餐分类来展示对应的套餐。

数据模型:
新增套餐,就是将新增页面录入的套餐信息插入到setmeal表,还需要向setmeal_dish表插入套餐和菜品关联数据,所以在新增套餐时,涉及两个表。

代码开发-准备工作:
实体类 Setmeal、SetmealDish
DTO SetmealDto
Mapper接口 SetmealMapper、SetmealDishMapper
Service接口 SetmealService、SetmealDishService
Service实现类:SetmealServiceImpl、SetmealDishServiceImpl
控制层:SetmealController

交互过程:
1.页面发送ajax请求,请求服务端获取套餐分类数据并展示到下拉框 (前文已做)
2.页面发送ajax请求,请求服务端获取菜品分类并展示到菜品窗口中
3.页面发送ajax请求,根据菜品分类查询对应的菜品数据并展示到添加菜品窗口中
4.页面发送请求进行图片上传,请求服务端将图片保存到服务端(前文已做)
5.页面发送请求进行图片下载,将上传的图片进行回显(前文已做)
6.点击保存按钮,发送ajax请求,将套餐相关数据以json形式提交到服务端

代码开发:
1.页面发送ajax请求,请求服务端获取套餐分类数据并展示到下拉框 (前文已做)

  @GetMapping("/list")  //type=2
    public R<List<Category>> getCategoryList(Category category){
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(category.getType()!=null,Category::getType,category.getType());
        queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);
        List<Category> list = categoryService.list(queryWrapper);
        return R.success(list);
    }

2.页面发送ajax请求,请求服务端获取菜品分类并展示到菜品窗口中

  @GetMapping("/list")//type=1
    public R<List<Category>> getCategoryList(Category category){
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(category.getType()!=null,Category::getType,category.getType());
        queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);
        List<Category> list = categoryService.list(queryWrapper);
        return R.success(list);
    }

3.页面发送ajax请求,根据菜品分类查询对应的菜品数据并展示到添加菜品窗口中

/**
     * 根据分类id查对应的菜品数据
     * @param dish
     * @return
     */
    @GetMapping("/list")
    public R<List<Dish>> list(Dish dish){
        Long categoryId = dish.getCategoryId();
        LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(dish.getCategoryId()!=null,Dish::getCategoryId,dish.getCategoryId());
        queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
        List<Dish> list = dishService.list(queryWrapper);
        return R.success(list);
    }

4.页面发送请求进行图片上传,请求服务端将图片保存到服务端(前文已做)
5.页面发送请求进行图片下载,将上传的图片进行回显(前文已做)

@Slf4j
@RestController
@RequestMapping("/common")
public class CommonController {

    @Value("${reggie.path}")
    private String basePath;  //动态获取保存的地址

    /**
     * 文件上传
     */
    @PostMapping("/upload")
    public R<String> upload(MultipartFile file){ //此处参数名要与前端发送的一致

        //使用UUID重新生成文件名称,防止文件名称重复
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        // 获得文件原始名称
        String fileName = file.getOriginalFilename();
        // 获得文件后缀名称
        String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
        // 生成最新的uuid文件名称
        String newFileName = uuid + "."+ suffixName;

        //创建一个目录文件
        File saveFile = new File(basePath);
        if(!saveFile.exists()){
            //目录不存在,创建该目录
            saveFile.mkdirs();
        }

        //file是一个临时文件,需要转存到指定位置,否则本次请求完成后临时文件会删除
        try {
            //将临时文件转存到指定位置
            file.transferTo(new File(basePath + newFileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return R.success(newFileName);
    }

    /**
     * 文件下载
     */
    @GetMapping("/download")
    public void download(String name, HttpServletResponse response){
        try {
            //输入流,通过输入流读取文件内容
            FileInputStream fileInputStream = new FileInputStream(new File(basePath+name));

            //输出流,通过输出流写回浏览器,在浏览器展示图片
            ServletOutputStream outputStream = response.getOutputStream();

            response.setContentType("image/jpeg");

            byte[] bytes = new byte[1024];
            int len=0;
            while ((len = fileInputStream.read(bytes))!=-1){
                outputStream.write(bytes,0,len);
                outputStream.flush();
            }

            //关闭资源
            outputStream.close();
            fileInputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

6.点击保存按钮,发送ajax请求,将套餐相关数据以json形式提交到服务端
Setmeal:

/**
 * 套餐
 */
@Data
public class Setmeal implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    //分类id
    private Long categoryId;

    //套餐名称
    private String name;

    //套餐价格
    private BigDecimal price;

    //状态 0:停用 1:启用
    private Integer status;

    //编码
    private String code;

    //描述信息
    private String description;

    //图片
    private String image;

    @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;
}

SetmealDish:

**
 * 套餐菜品关系
 */
@Data
public class SetmealDish implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long id;
    //套餐id
    private Long setmealId;
    //菜品id
    private Long dishId;
    //菜品名称 (冗余字段)
    private String name;
    //菜品原价
    private BigDecimal price;
    //份数
    private Integer copies;
    //排序
    private Integer sort;
    
    @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;
}

SetmealDto:

@Data
public class SetmealDto extends Setmeal {

    private List<SetmealDish> setmealDishes;

    private String categoryName;
}

SetmealController:

   @PostMapping()
    public R<String> save(@RequestBody SetmealDto setmealDto){
        setmealService.saveWithSetmealDishes(setmealDto);
        return R.success("添加成功");
    }

SetmealService:

public interface SetmealService extends IService<Setmeal> {
    public void saveWithSetmealDishes(SetmealDto setmealDto);
}

SetmealServiceImpl:

 @Override
    public void saveWithSetmealDishes(SetmealDto setmealDto) {
        //保存套餐基本信息
        this.save(setmealDto);

        //保存套菜中菜品信息
        //菜品信息
        List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();

        //将套餐分类id加入
        setmealDishes = setmealDishes.stream().map((item)->{
            Long setmealId = setmealDto.getId();
            item.setSetmealId(setmealId);
            return item;
        }).collect(Collectors.toList());

        setmealDishService.saveBatch(setmealDishes);
    }
Java点菜系统的源代码
11-19
系统的功能包括日常操作,如订购、打开、添加、返回等;检查当前的商业状况,预订和检查账单;支持注释信息,如味道、方法、返回菜肴的原因等。支持根据订购类别、菜品编号和其他订购模式进行浏览;它的功能涵盖前台的所有业务流程,适用于各种大、、小型餐馆
java实现动态权限(菜单管理)动态添加菜单,动态添加角色SSM框架
热门推荐
qq_39187822的博客
10-25 1万+
首先是数据库设计 Menu表(菜单表) Role表(角色表) Role_Menu表(角色菜单关系表) User表(用户表) User_Role表(用户角色关系表) 其他实体类就略过了 在Menu实体类添加了一个List<Menu>集合 在MenuMapper写了如下的方法 /** * 根据等级或父节点查询菜单信息 * @...
java开发点餐系统【对象练习】
qq_57420582的博客
06-29 475
java开发点餐系统
SpringCloud项目笔记(外卖订餐系统
weixin_44348734的博客
05-07 687
Class 1:微服务环境搭建 编写pom文件 创建eurekaserver(注册心)模块 创建configserver 创建服务提供者order 启动报错: 解决: <!--新版本的Spring Cloud对熔断器Hystrix有要求,Eureka必须添加对Hystrix的依赖才可以。--> <dependency> <groupId>org.springframework.cloud</groupId>
一个简易的点餐系统的数据库设计
Z______tz的博客
12-13 5418
一个简易的点餐系统的数据库设计 一、确定实体类和属性和关联关系,画出ER图 实体与属性 用户(用户id、账号、密码、用户类型、昵称、头像) 店铺(店铺id、店铺名、 创建时间、店铺图片、店铺简介、店铺评分、店铺状态、店主(用户)id) 餐品(餐品id、餐品名、餐点图片、、价格、库存、销量、餐点类型、店铺id) 订单(订单id、创建时间、完成时间、总价格、订单状态、食客(用户)id) 订单明细(明细id、餐品id、餐品数量、所属订单id) 评价(评价id、评价内容、创建时间、评价状态、明细id) 实体间的
03点餐项目的数据库设计
oliver3455的博客
07-01 872
03点餐项目的数据库设计
SSM订餐系统-实现点餐下单等全流程
05-15
从前做的毕业设计,现在分享出来,之前做的不是很好,可以借鉴。里面有各种资料,视频,文档,数据库,源码都有
基于JavaWeb的校园订餐系统论文-java-ssm-论文-校园订餐系统-文档-论文
最新发布
02-25
基于JavaWeb的校园订餐系统论文-java-ssm-论文-校园订餐系统-文档-论文 论文: !!!本文档只是论文参考文档! 需要项目源码、数据库sql、开发文档、毕设咨询等,请私信联系~ ① 系统环境:Windows/Mac ② 开发语言...
基于ssm校园订餐系统代码 - java - ssm- spring - springmvc - mybatis - 代码
01-11
基于ssm校园订餐系统代码 | java | ssm| spring | springmvc | mybatis | 代码 | 网站 1、技术栈:微信小程序,springboot,uniapp,vue,ajax,maven,mysql,MyBatisPlus 2、系统的实现 用户信息 图片素材 视频...
基于ssm的网上订餐系统代码 - java - ssm- spring - springmvc - mybatis - 代码
01-12
基于ssm的网上订餐系统代码 | java | ssm| spring | springmvc | mybatis | 代码 | 网站 1、技术栈: ssm- spring,ssm,uniapp,vue,ajax,maven,mysql,MyBatisPlus 2、系统的实现 用户信息 图片素材 视频素材 ...
基于SSM框架--市管理系统项目+实验报告
04-21
1.针对群文件的项目(SMBMS.rar),进行基于SSM框架的改造 2.说明: (1)主要涉及的功能有:登录、注销、查询用户列表、增加用户、用户修改、用户查看、文件上传。 (2)具体思路和方法参考第9、10和11章的相关...
Java---创建页面和菜单搭建
gaoqiandr的博客
10-22 1073
对于java搭建界面以及菜单的详细讲解,简单易懂
JAVA实现饭店点菜系统详解
m0_53793974的博客
08-03 7976
JAVA实现饭店点菜系统 在这个暑假,我会将一些 网络上比较经典的 java 编程练习题。 做一做,发布到 博客来。是对我自己学习的监督,也是为了方便 大家 借鉴学习交流。大家一起共同进步。 这个点菜系统,和我之前Java课程设计的 小学生数学练习 有点像。不过少了文件操作,相对比较简单。 我实现的效果 如图 最重要的 还是面向对象的思想,我们要理解并使用。 在点菜系统,我们为了方便 饭店添加菜谱 ,我们要使用一个list 集合 ,可以改变长度大小。 每一个 菜品 都是一个对象 我们要封装起来,
Maven+Spring+SpringMVC+MyBatis+JSP实现的点餐系统(前台+后台)java网上订餐jsp源代码Mysql
wjwjwjd的博客
11-02 38
Maven+Spring+SpringMVC+MyBatis+JSP实现的点餐系统(前台+后台)java网上订餐jsp源代码Mysql
毕业设计:基于java的网上订餐管理系统设计实现
2301_78287784的博客
11-05 1098
基于Java的网上订餐管理系统设计实现的系统性能评估是对系统在特定工作负载下的响应速度和资源利用率进行评估和分析,旨在验证系统是否能够满足用户在实际使用的性能需求。该系统采用了基于Java的MVC框架SpringMVC进行开发,使用了MySQL数据库进行数据存储和管理。该系统具有以下特点:1、支持多种订餐方式:用户可以选择在线订购、电话订购、窗口订购等多种订餐方式。2、支持多种支付方式:用户可以选择支付宝、微信支付、银联支付等多种支付方式。
基于java的高校网上订餐系统设计实现
biyesheji1000的专栏
08-16 904
基于Java的高校网上订餐系统设计实现的性能评估是对系统在特定工作负载下的响应速度和资源利用率进行评估和分析,旨在验证系统是否能够满足用户在实际使用的性能需求。1、并发性能评估:并发性能是指系统在多用户同时访问的情况下的表现。在这个系统,通过模拟多个用户同时进行登录、下单、修改订单等操作,评估系统的并发性能。测试结果显示,系统能够正确处理并发请求,同时保持较好的响应速度。
Java后端项目瑞吉外卖-新增菜品功能的实现
pyscl01的博客
02-11 741
Java后端项目瑞吉外卖新增菜品功能的详细实现
java实现简单的订餐系统(面向对象+数组)
weixin_45531755的博客
08-08 4243
java简单订餐系统实现
Day 5-2 新增菜品实现(多表操纵及Java8新特性)
weixin_48444028的博客
08-25 425
Lambda表达式 在Java 8 语言引入的一种新的语法元素和操作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符或箭头操作符。它将 Lambda 分为两个部分: 左侧:指定了 Lambda 表达式需要的参数列表 右侧:指定了 Lambda 体,是抽象方法的实现逻辑,也即Lambda 表达式要执行的功能。
基于ssm的e-hr管理系统设计实现
05-13
随着信息化的发展,电子人力资源管理系统(e-hr)成为了企业信息化建设的重要组成部分。本文针对ssm框架(Spring + SpringMVC + MyBatis)下的e-hr管理系统进行了设计实现。 系统采用了B/S(浏览器/服务器)模式,前端采用HTML、CSS、JavaScript等技术,后端采用Spring框架作为控制反转的容器和AOP(面向切面编程)的框架,SpringMVC框架作为请求的分发器,MyBatis框架作为持久化框架,实现了基于Web的电子人力资源管理。 系统主要功能包括: 1.用户管理:实现新建、删除、修改、查询用户信息的功能。 2.部门管理:实现部门的管理和查询功能。 3.员工管理:实现员工的管理和查询功能。 4.考勤管理:实现考勤记录的管理和查询功能。 5.薪酬管理:实现薪酬计算和统计功能。 6.培训管理:实现培训计划制定和实施情况的查询。 7.绩效管理:实现绩效考核的制定和绩效报告的查询。 在具体实现过程,我采用了Maven作为项目管理工具,并使用Git作为版本控制工具,保证了项目组合作的高效性。此外,我还在代码编写阶段,注重使用了面向对象的编程思想,提高了代码的可扩展性和可维护性。 综上所述,该e-hr管理系统基于ssm框架,以其良好的组合、普遍的适用性和效率较高的特点,实现了基于Web的电子人力资源管理,为企业管理和人力资源管理提供了便利,同时提高了信息化运营的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • SpringMVC的执行流程(超详细) 3228
  • 雪花算法生成的id过长,js处理时丢失精度,导致更新失败问题 2368
  • springboot首次整合Mongodb及可视化客户端Robo3T(附Mongodb和Robo3T安装包) 1471
  • 基于SSM的订餐系统--菜品新增(涉及多表插入,上传图片) 1364
  • 基于SSM的订餐系统 1259

分类专栏

  • springboot整合缓存技术 5篇
  • 基于SSM的订餐系统--套餐模块 1篇
  • 基于SSM的订餐系统 1篇
  • 项目中遇见的问题 7篇
  • 基于SSM的订餐系统-菜品管理模块 2篇
  • 基于SSM的订餐系统-员工模块 6篇
  • 基于SSM的订餐系统-菜品分类模块 2篇
  • 基于SSM的订餐系统-登录 2篇

最新评论

  • SpringBoot整合Redis缓存

    清晨敲代码: 你好,如果同时整合了redis和ehcache,是不是就不能使用@Cache注解了呢?只能注入对应的cachemanager来缓存呢?

  • 基于SSM的订餐系统---超详细实现菜品套餐新增模块

    芝士味的椒盐: 文章内容丰富,条理清晰,值得一波关注,希望作者也指点我一番!

  • 基于SSM的订餐系统---超详细实现菜品套餐新增模块

    YoLo♪: 期待大佬回访

  • 基于SSM的订餐系统---超详细实现菜品套餐新增模块

    爪哇斗罗: 向大佬致敬,仰望大佬表情包

  • 基于SSM的订餐系统---超详细实现菜品套餐新增模块

    今天也要写bug: 写的很详细,先收藏一波

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • SpringBoot整合Memcached缓存
  • SpringBoot整合Redis缓存
  • 数据淘汰策略LRU和LFU
2022年28篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码桐城网站定制多少钱绍兴关键词排名公司韶关推广网站哪家好福州推广网站哪家好杭州seo推荐巢湖SEO按天计费报价济宁seo网站优化哪家好甘孜外贸网站设计推荐宜春网页设计多少钱南平网站优化推广大浪网站设计公司海口百搜标王价格吉林关键词排名包年推广哪家好武威网站设计模板多少钱合肥设计公司网站报价永湖关键词按天收费推荐塔城至尊标王肇庆百姓网标王推广大鹏网站推广系统爱联网站优化按天收费报价嘉兴百搜标王哪家好菏泽SEO按天收费哪家好宁德模板制作多少钱延边网站制作设计多少钱宜宾网站开发多少钱忻州至尊标王哪家好茂名百搜标王公司吉安阿里店铺托管公司白山优化公司海西百度爱采购报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化