【开源】SpringBoot框架开发农家乐订餐系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 用户
    • 2.2 管理员
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询菜品类型
    • 4.2 查询菜品
    • 4.3 加购菜品
    • 4.4 新增菜品收藏
    • 4.5 新增菜品留言
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的农家乐订餐系统,包含了菜品类型模块、菜品档案模块、菜品收藏模块、菜品订餐模块、菜品资讯模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,农家乐订餐系统基于角色的访问控制,给订餐管理员、配送人员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

2.1 用户

  1. 用户登录和注册功能。
  2. 资讯功能:用户可以任意浏览资讯列表和详细信息菜品库:支持通过查询来查找所需要菜品。
  3. 菜品信息:击到菜品详情页面,可以查看菜品介绍、图片、价格、销售、已购买户评论。
  4. 菜品收藏:在操作信息.详情,下方点击“收藏",进行收藏。
  5. 菜品选购:在菜品的详情页面,点击“加入购物车”,也可以直接点击“立即购买”菜品购物车:列出打算下单的菜品列表,支持数量增加和减小。
  6. 取消订单:在“我的订单”列表中,针对没有付款的订单,点击“取消申请",删除订单去付款::在“我的订单”咧表中,点击“去付款”,模拟付款。
  7. 留言:填写留言的内容,提交到网站管理后台。

2.2 管理员

  1. 会员列表:查看所有注册会员信息,支持册除录入资讯:录入资讯标题、内容等信息。
  2. 管理资讯:查看已录入资讯列表,支持删除和修改留言列表:所有用户留言信息列表,支持册除。
  3. 菜品分类管理:支持录入、查看、修改和册除已有分类。
  4. 菜品录入:选择菜品分类、录入菜品名称、库存、已销售、价格、上传菜品图片、填写菜品介绍。
  5. 菜品管理:查看所有已经录入的菜品信息、支持修改和册除。
  6. 菜品订单:查看所有用户下单的订单信息,包括下单时间、费用、用户信息、订单菜品信息和备注等。
  7. 订单处理:处理菜品信息等。

三、系统展示

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


四、核心代码

4.1 查询菜品类型

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询菜品类型")
public Result<IPage<DishType>> getByPage(@ModelAttribute DishType dishType ,@ModelAttribute PageVo page){
    QueryWrapper<DishType> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(dishType.getTitle())) {
        qw.like("title",dishType.getTitle());
    }
    if(!ZwzNullUtils.isNull(dishType.getStatus())) {
        qw.eq("status",dishType.getStatus());
    }
    IPage<DishType> data = iDishTypeService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<DishType>>().setData(data);
}

4.2 查询菜品

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询菜品")
public Result<IPage<DishVariety>> getByPage(@ModelAttribute DishVariety dishVariety ,@ModelAttribute PageVo page){
    QueryWrapper<DishVariety> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(dishVariety.getTitle())) {
        qw.like("title",dishVariety.getTitle());
    }
    if(!ZwzNullUtils.isNull(dishVariety.getType())) {
        qw.eq("type",dishVariety.getType());
    }
    if(!ZwzNullUtils.isNull(dishVariety.getContent())) {
        qw.like("content",dishVariety.getContent());
    }
    IPage<DishVariety> data = iDishVarietyService.page(PageUtil.initMpPage(page),qw);
    User currUser = securityUtil.getCurrUser();
    for (DishVariety vo : data.getRecords()) {
        QueryWrapper<DishCollect> collQw = new QueryWrapper<>();
        collQw.eq("collect_id",currUser.getId());
        collQw.eq("dish_id",vo.getId());
        vo.setCollectFlag(iDishCollectService.count(collQw));
        QueryWrapper<DishOrder> orderQw = new QueryWrapper<>();
        orderQw.eq("dish_id",vo.getId());
        orderQw.eq("status","已加购");
        orderQw.last("limit 1");
        DishOrder order = iDishOrderService.getOne(orderQw);
        vo.setBuyNumber(order == null ? BigDecimal.ZERO : order.getNumber());
    }
    return new ResultUtil<IPage<DishVariety>>().setData(data);
}

4.3 加购菜品

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "加购")
public Result<DishOrder> addOne(@RequestParam String id, @RequestParam BigDecimal number){
    DishVariety dish = iDishVarietyService.getById(id);
    if(dish == null) {
        return ResultUtil.error("菜品不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<DishOrder> qw = new QueryWrapper<>();
    qw.eq("dish_id",dish.getId());
    qw.eq("status","已加购");
    qw.eq("order_id",currUser.getId());
    qw.last("limit 1");
    DishOrder order = iDishOrderService.getOne(qw);
    if(order != null) {
        order.setNumber(order.getNumber().add(number));
        iDishOrderService.saveOrUpdate(order);
        return ResultUtil.success();
    }
    DishOrder o = new DishOrder();
    o.setDishId(dish.getId());
    o.setTitle(dish.getTitle());
    o.setType(dish.getType());
    o.setContent(dish.getContent());
    o.setImage(dish.getImage());
    o.setPrice(dish.getPrice());
    o.setStatus("已加购");
    o.setNumber(number);
    o.setOrderId(currUser.getId());
    o.setOrderName(currUser.getNickname());
    o.setOrderTime(DateUtil.now());
    iDishOrderService.saveOrUpdate(o);
    return ResultUtil.success();
}

4.4 新增菜品收藏

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增收藏")
public Result<DishCollect> addOne(@RequestParam String id){
    DishVariety dish = iDishVarietyService.getById(id);
    if(dish == null) {
        return ResultUtil.error("菜品不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<DishCollect> qw = new QueryWrapper<>();
    qw.eq("dish_id",id);
    qw.eq("collect_id",currUser.getId());
    if(iDishCollectService.count(qw) > 0L) {
        return ResultUtil.success();
    }
    DishCollect dishCollect = new DishCollect();
    dishCollect.setDishId(dish.getId());
    dishCollect.setTitle(dish.getTitle());
    dishCollect.setType(dish.getType());
    dishCollect.setContent(dish.getContent());
    dishCollect.setImage(dish.getImage());
    dishCollect.setPrice(dish.getPrice());
    dishCollect.setCollectId(currUser.getId());
    dishCollect.setCollectName(currUser.getNickname());
    dishCollect.setCollectTime(DateUtil.now());
    iDishCollectService.saveOrUpdate(dishCollect);
    return ResultUtil.success();
}

4.5 新增菜品留言

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增菜品留言")
public Result<Message> insert(Message message){
    User currUser = securityUtil.getCurrUser();
    message.setUserId(currUser.getId());
    message.setUserName(currUser.getNickname());
    message.setUserTime(DateUtil.now());
    message.setReplyContent("");
    message.setReplyName("");
    message.setReplyTime("");
    message.setReplyId("");
    iMessageService.saveOrUpdate(message);
    return new ResultUtil<Message>().setData(message);
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

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

相关文章

Vulnhub靶机:hackable3

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hackable3&#xff08;10.0.2.53&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/hac…

HarmonyOS 横屏调试与真机横屏运行

我们有些程序 需要横屏才能执行出效果 我们在预览器上 点击如下图指向出 就进入一个横屏调试了 但 我们真机运行 依旧是竖着的 我们如下图 找到 module.json5 在 abilities 下面 第一个对象 最下面 加上 "orientation": "landscape"然后 我们再真机运…

matlab入门,在线编辑,无需安装matab

matlab相关教程做的很完善&#xff0c;除了B站看看教程&#xff0c;官方教程我觉得更加高效。跟着教程一步一步编辑&#xff0c;非常方便。 阅读 MATLAB 官方教程&#xff1a; MATLAB 官方教程提供了从基础到高级的教学内容&#xff0c;内容包括 MATLAB 的基本语法、数据处理…

[ai笔记5] 个人AI资讯助手实战

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第5篇分享&#xff0c;也是把ai场景化应用的第一篇实操内容&#xff01; 既然要充分学习和了解ai&#xff0c;自然少不了要时常看看ai相关资讯&#xff0c;所以今天特地用字节的“扣子”做了一个ai的资讯…

第2讲投票系统后端架构搭建

创建项目时&#xff0c;随机选择一个&#xff0c;后面会生成配置properties文件 生成文件 maven-3.3.3 设置阿里云镜像 <?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apache Software Foundation (ASF) under one or more cont…

一个三极管引脚识别的小技巧,再也不用对照手册啦

三极管是一个非常常用的器件,时不时的就需要用到他们,有些时候当我们拿到一颗三极管时 ,对于常用的友来说,三极管的引脚可能早已烂熟于心,而对于不常用或者初学者来说,三极管的引脚可以说是今天记下明天忘,后天搞混大后天重看手册(玩笑话),但是这种情况可以说每个人都…

springboot185基于vue.js的客户关系管理系统(crm)的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

Linux:开源世界的王者

在科技世界中&#xff0c;Linux犹如一位低调的王者&#xff0c;统治着开源世界的半壁江山。对于许多技术爱好者、系统管理员和开发者来说&#xff0c;Linux不仅仅是一个操作系统&#xff0c;更是一种信仰、一种哲学。 一、开源的魅力 Linux的最大魅力在于其开源性质。与封闭的…

【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、Cons…

Arcgis使用过程中常见问题解决方法

Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败&#xff1b;无法创建新的数据库&#xff0c;权限被拒绝&#xff08;如下图&#xff09;。 出现这个原因是你所用的电脑系统文件dao360.…

在spring中操作Redis

目录 创建项目 ​编辑 配置Redis 创建类 StringRedisTemplate set / get list set Hash zset 新年快乐&#xff01;&#xff01;&#xff01;&#xff01; 创建项目 选中maven项目&#xff0c;然后选择java8&#xff0c;输入名称之后&#xff0c;点击next。 随后选择…

蓝桥杯2023真题(2)

1.硬币兑换 #include <iostream> using namespace std; int main() {int a[5000] {0}, ans 0;//coin1for(int i 1; i < 2023; i){//coin2for(int j i 1; j < 2023; j){a[i j] i;ans max(ans, a[i j]);}}cout<<ans;return 0; }2.更小的数 //暴力枚举…

【python】print输出的格式化

在Python中&#xff0c;有几种方式来格式化prin函数的输出。以下是一些常见的方法&#xff1a; 1. 使用百分号 % 运算符&#xff08;传统方法&#xff09;: 使用 % 操作符来进行格式化是一种较老的方法&#xff0c;但它仍然有效。 name "Alice"age 25print("…

Python爬虫之Ajax数据爬取基本原理

前言 有时候我们在用 requests 抓取页面的时候&#xff0c;得到的结果可能和在浏览器中看到的不一样&#xff1a;在浏览器中可以看到正常显示的页面数据&#xff0c;但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档&#xff0c;而浏览器中…

Swift 初见

Swift 初见 学习swift的记录 控制台输出 print("hello world")可以无分号&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 变量声明 let 常量声明 如果在常量声明后再次修改他会报错 var 变量声明 一个常量的值&#xf…

###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 一. 两个主要软件的介绍 1.KeiluVision5软件 Keil uVision5是一款集成开发…

jsp计算机线上教学系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 计算机线上教学系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

【Langchain Agent研究】SalesGPT项目介绍(二)

【Langchain Agent研究】SalesGPT项目介绍&#xff08;一&#xff09;-CSDN博客 上节课&#xff0c;我们介绍了SalesGPT他的业务流程和技术架构&#xff0c;这节课&#xff0c;我们来关注一下他的项目整体结构、poetry工具和一些工程项目相关的设计。 项目整体结构介绍 我们把…

Java实现教学资源共享平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

备战蓝桥杯---组合数学2

本专题主要介绍容斥原理。 大家高中的时候肯定接触过韦恩图&#xff0c;容斥原理比较通俗的理解就是减去所有可能并加上重叠的部分。 我们直接看公式&#xff1a; 知道后&#xff0c;我们先看道模板题&#xff1a; 下面是AC代码&#xff1a; #include<bits/stdc.h> us…