基于微信小程序的懒人美食帮小程序

news2024/9/21 13:16:59

文末联系获取源码

开发语言:Java

框架:springboot

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/myeclipse/idea

Maven包:Maven3.3.9

浏览器:谷歌浏览器

小程序框架:uniapp

小程序开发软件:HBuilder X

小程序运行软件:微信开发者

一、前言介绍

人民生活水平的提高就会造成生活节奏越来越快,很多人吃饭都采用点外卖的方式。现在点外卖的平台已有很多,大多都需要安装它们的APP才可以使用。如果一味的使用外卖平台不仅会造成商家成本的增加,还不利于商家订单的配送。开发小程序+SpringBoot懒人菜品帮可以解决这些间题,实现借助微信就可以点餐。

本小程序+SpringBoot懒人菜品帮采用Java语言和Mysql数据库进行设计,技术采用微信小程序,可以不安装App软件就实现订餐。本系统实现管理员和用户、商家、配送员四个角色的功能。用户主要在微信端操作,内容有菜品信息,用户可以在线点餐和管理订单信息以及查看配送情况。商家可以发布菜品和管理订单、查看配送情况。管理员可以审核菜品以及管理订单等。配送员可以接单完成配送。本系统可以实现线上的订餐,帮助商家更好的销售餐品。 

二、系统功能分析

(1)本系统的使用角色为管理员、商家和用户、配送员,管理员可以管理菜品信息.、订单信息、商家信息、用户信息、配送信息等。

(2)用户可以浏览菜品、商家,在线订餐和查询配送情况,管理订单等。

(3)商家可以管理菜品信息和订单信息并查询配送情况。

(4)配送员可以在线接单和管理配送信息。

2.1系统功能结构设计

本系统的功能结构为用户界面、管理员界面和商家界面、配送员界面,不同角色负责的功能不同,对系统的功能设计采用系统功能结构图进行展示。本系统的功能结构图如下图所示: 

三、小程序端 

3.1用户登录功能模块的实现界面 

本系统需要登录才可以使用相关功能。用户登录功能的操作步骤为,用户点击用户登录功能,可以跳转到用户登录的窗口界面里,在用户登录的窗口界面里输入账号和密码,然后点击登录按钮。用户登录窗口的界面实现如下图所示: 

3.2用户注册功能的实现界面

本功能设计的目的是帮助游客在线订餐。用户和配送员都可以注册。在注册时需要设置账号和密码。用户注册功能的实现界面如下图所示:

3.3首页功能的设计实现

用户登录后可进入首页,在首页里可以看到商家信息和菜品信息,可以进行菜品搜索和购买。首页功能的实现界面如下图所示:

3.4用户信息管理功能的实现界面

用户可以修改自己注册时填写的资料,可以设置头像以及手机号。用户信息管理功能的实现界面如下图所示: 

3.5菜品功能的实现界面

用户可以浏览菜品信息,也可以根据菜品的名称进行搜索,菜品信息可以看到图片和价格,菜品信息的实现界面如下图所示: 

3.6菜品分类功能的实现界面

用户可以在前台浏览菜品的所有分类,也可以搜索菜品分类。菜品分类功能的实现界面如下图所示: 

3.7立即订购功能的实现界面

用户在前台选择喜欢的菜品后可以立即订购,在订购时需要选择地址,立即订购功能的实现界面如下图所示: 

3.8我的功能的实现界面

在我的功能里,用户可以管理订单信息,进行订单配送查询和查询配送完成的订单。我的功能实现界面如下图所示: 

四、商家权限的功能实现

商家可以管理菜品信息和订单信息,可以管理配送订单和查询已完成的所有配送。商家权限的功能实现界面如下图所示: 

五、管理员权限的功能实现

管理员可以管理菜品分类、菜品信息、订单信息、用户信息、商家信息、配送员信息等。管理员权限的功能实现界面如下图所示: 

六、配送员权限的功能实现

配送员可以查询订单和进行接单并完成配送。配送员角色的功能实现界面如下图所示: 

七、部分核心代码

7.1登录系统主要代码

 

/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );
		return R.ok().put("token", token);
	}

7.2上传文件关键代码

@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		/**
  		 * 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
   		 * 请将以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替换成你本地项目的upload路径,
 		 * 并且项目路径不能存在中文、空格等特殊字符
 		 */
//		FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

graalvm把springboot 3.0应用编译为原生应用

文章目录1、GraalVM Native Support依赖2、编译为原生应用2.1、编译为docker镜像2.2、编译为原生应用文件之前的文章《Graalvm 安装和静态编译&#xff08;https://blog.csdn.net/penngo/article/details/128006244&#xff09;》介绍了graalvm的安装和环境配置&#xff0c;普通…

【Rust】6. 结构体与方法

6.1 结构体的定义和实例化 6.1.1 结构体定义、创建实例 6.1.2 创建实例&#xff1a;字段初始化简写语法 6.1.3 创建实例&#xff1a;结构体更新语法&#xff08;注意&#xff1a;数据的移动特性&#xff01;&#xff09; .. 语法&#xff1a;指定了剩余未显式设置值的字段应有…

通信原理笔记—差分脉冲编码调制

目录 差分脉冲编码调制(DPCM)&#xff1a; 预测编码&#xff1a; 预测编码的基本原理: 信号预测的基本方法: ΔPCM与DPCM的主要区别: 差分脉冲编码调制(DPCM)&#xff1a; 实际信源的特点&#xff1a;实际信源大都是有记忆的信源&#xff1a;信源的相邻输出符号间(如&…

无广告,小体积,实用性拉满的5款软件

人类与99%的动物之间最大差别在于是否会运用工具&#xff0c;借助好的工具&#xff0c;能提升几倍的工作效率。 1. 无损放大图片——Bigjpg 大杀器&#xff01;深度卷积神经网络实现噪点和锯齿部分补充&#xff0c;从而达到图片无损放大。图片边缘也不会有毛刺和重影,。更重要…

(深度学习快速入门)第四章第二节:什么是卷积神经网络

文章目录一&#xff1a;为什么DNN不适合图像处理&#xff08;1&#xff09;图像的空间信息被丢失&#xff08;不具备空间不变性&#xff09;&#xff08;2&#xff09;参数爆炸二&#xff1a;什么是卷积神经网络三&#xff1a;CNN应用一&#xff1a;为什么DNN不适合图像处理 &…

【关于PostgreSQL的系统信息函数的OID】

一、自带的OID的相关脚本 在PostgreSQL的安装包的src/include/catalog目录下&#xff0c;有着两个脚本&#xff0c;unused_oids和 duplicate_oids。通过这两个可执行脚本&#xff0c;可以查看当前源码包配置里的符合要求的OID。unused_oids可以查看若根据当前源码包初始化产生…

YOLOv5训练结果性能分析

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 可参照以下博客一起看&#xff08;涉及一些概念解析&#xff09;深度学习之常用模型评估指标&#xff08;一&#xff09;—— 分类…

Python大数据处理利器,PySpark的入门实战

PySpark极速入门 一&#xff1a;Pyspark简介与安装 什么是Pyspark&#xff1f; PySpark是Spark的Python语言接口&#xff0c;通过它&#xff0c;可以使用Python API编写Spark应用程序&#xff0c;目前支持绝大多数Spark功能。目前Spark官方在其支持的所有语言中&#xff0c;…

OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)

1. 学习目标 学习图像的平移矩阵&#xff1b;学习 OpenCV 图像平移函数。 2. 图像的平移矩阵 平移是物体位置在水平和垂直方向的移动。 像素点 (x,y) 沿 x 轴平移 dx、沿 y 轴平移 dy&#xff0c;公式&#xff1a; 3. 图像平移函数 3.1 cv.warpAffine() 函数使用 cv.war…

R语言生物群落(生态)数据统计分析与绘图

包含&#xff1a;《R语言基础》、《tidyverse数据清洗》、《多元统计分析》、《随机森林模型》、《回归及混合效应模型》、《结构方程模型》、《统计结果作图》七合一版本 R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#…

手动启动Oracle服务和Oracle监听服务和init.ora文件相关

Oracle 11g 安装未完全成功&#xff1b;安装完以后&#xff0c;服务只有2个&#xff1b;这样是用不了&#xff0c;oracle服务和oracle监听服务都没有&#xff1b; 尝试启动一下数据库&#xff0c;出现12560错误&#xff1b; 根据资料&#xff0c;可用如下命令启动Oracle服务&am…

【06】FreeRTOS临界段代码保护及调度器挂起与恢复

目录 1.临界段代码保护简介 2.临界段代码保护函数介绍 2.1任务级临界区调用格式示例 2.2中断级临界区调用格式示例 2.3函数调用特点 2.4任务级进入和退出临界段函数 2.5中断级进入和退出临界段函数 3.任务调度器的挂起和恢复 3.1任务调度器挂起函数vTaskSuspendAll() …

为什么大部分虚拟主机都配置SSD

对于任何站长来说&#xff0c;拥有一个不会加载的漂亮网站可能是毁灭性的。选择正确的托管服务对于确保网站始终以最佳状态运行至关重要。而由于新手站长呈爆发性增长态势&#xff0c;选择虚拟主机的站长日趋增多。本文就将介绍大部分虚拟主机都配置SSD的原因。SSD优势SSD在数据…

Windows下MySQL5与MySQL8的下载、安装、配置

MySQL版本简介 MySQL Community Server 社区版本&#xff0c;开源免费&#xff0c;自由下载&#xff0c;但不提供官方技术支持&#xff0c;适用于 大多数普通用户。MySQL Enterprise Edition 企业版本&#xff0c;需付费&#xff0c;不能在线下载&#xff0c;可以试用30天。提供…

EMT4J详细介绍与使用,帮你找到Java版本升级带来的问题,让你在项目jdk升级不在头疼

Java版本升级带来的问题 前因 java更新迭代速度巨快无比&#xff0c;Spring Framework 6 等项目已经至少需要 Java 17。但是&#xff0c;对于 Java 版本的采用是相对缓慢的。例如&#xff0c;在 Java 11 发布四年之后&#xff08;2022年&#xff09;&#xff0c;只有不到 49%…

[C语言]操作符

目录 1.操作符分类 2.算术操作符 3.位移操作符 3.1左移操作符 3.2右移操作符 4.位操作符 4.1’&‘&#xff08;按位与&#xff09; 4.2’|‘&#xff08;按位或&#xff09; 4.3‘^’&#xff08;按位异或&#xff09; 5.赋值操作符 5.1复合赋值符 6.单目操作…

IDEA搭建Finchley.SR2版本的SpringCloud父子基础项目-------Hystrix断路器

1.1分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系&#xff0c;每个依赖关系在某些时候将不可避免地失败。 服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C&#xff0c;微服务B和微服务C又调用其它的微服务&#xff0…

高薪前端都应该具备的开发好习惯

格拉德威尔曾提出过一个“一万小时定律”&#xff0c;即任何人从平凡到大师的必要条件&#xff0c;就是历经1万小时的锤炼&#xff0c;而这“1万小时”也不是达到就行&#xff1b;如何构成&#xff0c;才是能否成为行业资深的关键。总结起来&#xff0c;就是四个字&#xff1a;…

Databend 开源周报 第 77 期

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。 即刻体验云服务&#xff1a;https://app.databend.com 。 What’s New 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 Features & Improvements Meta 使用 expressin::TableSch…

蓝桥杯单片机快速得奖方法(分享一些实用技巧)

文章目录前言一、蓝桥杯单片机痛点1.LED灯微亮2.数码管微亮3.蜂鸣器乱叫4.驱动程序不会写5.按键程序灵敏度低容易误操作6.矩阵按键代码总是记不住一写就忘记7.使用大量延时函数导致程序运行效率低下二、痛点解决方法1.锁存器的错误操作2.代码不熟练3.没有高效的代码总结前言 又…