免费分享一套微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~

news2024/11/20 18:23:27

大家好,我是java1234_小锋老师,看到一个不错的微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,分享下哈。
 

项目视频演示

【免费】微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) Java毕业设计,非常好的源码_哔哩哔哩_bilibili【免费】微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) Java毕业设计,非常好的源码项目来自互联网,免费开源分享,严禁商业。更多毕业设源码:http://www.java1234.com/a/bysj/javaweb/, 视频播放量 158、弹幕量 0、点赞数 7、投硬币枚数 0、收藏人数 6、转发人数 1, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:实战springboot+CAS单点登录系统,2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~,【免费】基于springboot的进销存(仓库)管理系统 Java毕业设计,【免费】Springboot+Vue校园二手交易平台系统 毕业设计 Java毕业设计,【免费】Springboot+Vue停车场管理系统 Java毕业设计,【小程序毕业设计·大作业】微信小程序开发_项目实例_食疗坊_安心食疗,【免费】springboot+vue医院管理系统 Java毕业设计,【Java实战项目】基于jsp+servlet的图书借阅管理系统-Java项目/Java毕业设计(附源码 数据库),【Java项目实战】基于Jsp+Servlet做出《学生学籍管理系统》(附源码+论文+课件资料)_毕业设计_Java实战项目_Java课设,微信小程序(java后端无废话版)视频教程icon-default.png?t=N7T8https://www.bilibili.com/video/BV17C4y1v7Cz/

项目介绍

随着当前社会人们的生活节奏越来越快,人们对生活效率的追求也越来越高,以往的传统的点餐方式已不能满足人们的需要,首先有些小型饭馆是需要顾客排队点餐,然后安排专人在台前记录,这样不仅造成时间上的浪费,还浪费人力,有些大型餐厅是当顾客入座后,安排服务员前去点餐,但这样有时候顾客爆满,也容易导致服务员忙不过来,效率低下。

对此,微信点餐小程序的应用就很关键,近几年微信小程序兴起,利用微信公众平台,顾客可以快速地浏览菜品,另外,在餐桌上贴好对应的桌号,顾客扫码即可进行点餐,还可以进行备注留言,无需服务员服务,不仅给顾客带来良好的用餐体验,还让餐厅的工作流程变得简单,同时还提高了餐厅的工作效率。

因此根据餐饮市场需求开发一个在安卓系统和苹果系统,都可以使用的手机微信跨平台点餐小程序,主要实现餐厅内点餐功能,同时实现商家的菜品以及店铺管理功能。本文介绍了该系统的研究目的,国内外发展状况,需求分析以及数据库设计和具体功能的设计与实现。经测试基本实现了设计目标,可以进一步进行推广应用。

系统展示

部分代码

package com.java1234.controller.admin;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.java1234.constant.SystemConstant;
import com.java1234.entity.Admin;
import com.java1234.entity.R;
import com.java1234.service.IAdminService;
import com.java1234.util.JwtUtils;
import com.java1234.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 管理员Controller
 * @author java1234_小锋
 * @site www.java1234.com
 * @company 南通小锋网络科技有限公司
 * @create 2022-02-05 7:42
 */
@RestController
public class AdminController {

    @Autowired
    private IAdminService adminService;

    private final static Logger logger= LoggerFactory.getLogger(AdminController.class);

    /**
     * 管理员登录
     * @param admin
     * @return
     */
    @PostMapping("/adminLogin")
    public R adminLogin(@RequestBody Admin admin){
        if(admin==null){
            return R.error();
        }
        if(StringUtil.isEmpty(admin.getUserName())){
            return R.error("用户名不能为空!");
        }
        if(StringUtil.isEmpty(admin.getPassword())){
            return R.error("密码不能为空!");
        }
        Admin resultAdmin = adminService.getOne(new QueryWrapper<Admin>().eq("userName", admin.getUserName()));
        if(resultAdmin==null){
            return R.error("用户名不存在!");
        }
        if(!resultAdmin.getPassword().trim().equals(admin.getPassword())){
            return R.error("用户名或者密码错误!");
        }
        String token = JwtUtils.createJWT("-1", "admin", SystemConstant.JWT_TTL);
        Map<String,Object> resultMap=new HashMap<String,Object>();
        resultMap.put("token",token);
        resultMap.put("resultAdmin",resultAdmin);
        return R.ok(resultMap);
    }

    /**
     * 修改密码
     * @param admin
     * @return
     */
    @PostMapping("/admin/modifyPassword")
    public R modifyPassword(@RequestBody Admin admin){
        if(StringUtil.isEmpty(admin.getUserName())){
            return R.error("用户名不能为空!");
        }
        if(StringUtil.isEmpty(admin.getNewPassword())){
            return R.error("新密码不能为空!");
        }
        adminService.update(admin);
        return R.ok();
    }


}
<template>
	<div id="backcont">
		<!-- logo -->
		<div class="meituan-content">
			<div class="login-cont">
				<div class="meituan-title">扫码点餐登录</div>
				<div class="meituan-user">
					<p>账号</p>
					<el-input class="inptflex" v-model="userName" placeholder="请输入账号"></el-input>
				</div>
				<div class="meituan-user">
					<p>密码</p>
					<el-input class="inptflex" v-model="password" placeholder="请输入密码" show-password></el-input>
				</div>
				<!-- 登录 -->
				<el-button v-if="regi == '注册'" type="success" class="meituan-btn" @click="signin()" :loading="load" :disabled="load">登录</el-button>
        <div style="text-align: center;padding-top: 10px"><a href="http://www.java1234.com/a/bysj/javaweb/" target="_blank">找毕业设计,上java1234</a></div>
			</div>
		</div>
	</div>
</template>

<script>
export default{
	data() {
		return {
			regi:'注册',
			load:false,
			userName: '',
			password:''
		}
	},
	methods:{
		// 登录
		async signin(){
		  if(this.userName==''){
        new this.mytitle(this.$message,'warning','请输入用户名!').funtitle()
        return;
      }
      if(this.password==''){
        new this.mytitle(this.$message,'warning','请输入密码!').funtitle()
        return;
      }
			this.load = true
			let obj = {userName:this.userName,password:this.password}
			try{
				let res = await new this.Request(this.Urls.m().login,obj).modepost()
        console.log(res)
				if(res.data.code != 0){
					new this.mytitle(this.$message,'warning','用户名或者密码错误!').funtitle()
				}else{
					let ids = '1'
          console.log("token:"+res.data.token)
					localStorage.setItem("nuvmenuid", JSON.stringify(ids))
					localStorage.setItem("token", res.data.token)
          localStorage.setItem("currentUser", JSON.stringify(res.data.resultAdmin))
          this.$router.push({name:'index'})
				}
				this.load = false
			}catch(e){
				console.log(e)
				this.load = false
				new this.mytitle(this.$message,'info','发生错误,重试').funtitle()
			}
		}
	}
}
</script>

<style scoped="scoped">
#backcont {
	background-image: url(../../../static/login/beijing.jpg);
	background-attachment: fixed;
	background-repeat: no-repeat;
	background-size: cover;
	-webkit-background-size: cover;
	moz-background-size: cover;
	min-height: 100vh;
}
.meituan-content {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}
.login-cont {
	width: 500px;
	height: 300px;
	background: #f9de80;
	border-radius: 5px;
}
.meituan-title {
	text-align: center;
	color: #000000;
	font-size: 30px;
	padding-top: 30px;
	font-family: Arial, Helvetica, sans-serif;
}
.meituan-user {
	width: 400px;
	margin: 0 auto;
	padding-top: 30px;
	height: 40px;
	display: flex;
	align-items: center;
}

.meituan-user p{width: 50px; color: #000000;
font-size:16px;
}

.inptflex{flex: 1;}

.reg-view{
	width: 400px;
	display: flex;
	justify-content: flex-end;
	margin: 0 auto;
	padding-top: 10px;
	cursor:pointer;
}

.meituan-btn {
	width: 200px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 20px auto 0 auto;
	font-size: 16px;
}
</style>

源码下载

CSDN 1积分下载:https://download.csdn.net/download/caofeng891102/88713929

或者免费领取加小锋老师wx:java9266

热门推荐

免费分享一套Springboot+Vue前后端分离的在线教育平台系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的停车场管理系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的学生网上请假系统,挺漂亮的-CSDN博客

免费分享一套 SpringBoot + Vue + ElementUI 的人力资源管理系统,挺漂亮的_element+springboot员工工资管理-CSDN博客

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

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

相关文章

etcd跨主机通信与Flannel

跨主机通信 Docker 默认的网络环境下 , 单台主机上的 Docker 容器可以通过 docker0 网桥直接通信 , 而不同主机上的 Docker 容器之间只能通过在主机上做端口映射进行通信。 这种端口映射方式对很多集群应用来说极不方便。 如果能让 Docker 容器之间直接使用自己的 IP 地址进…

如何通过UMC进行产品升级

随着互联网、云计算技术的深入发展&#xff0c;为降低企业大规模云应用建设的难度和成本&#xff0c;支持云应用开发、运行与运维一体化的云应用平台软件应运而生。在数通家族中对公司集成套件的云平台开发、部署、管理、运维进行统一管理&#xff0c;实现数据集成和共享的平台…

FFmpeg获取音视频流信息

文章目录 前言一、需求二、源码三、运行结果 前言 本文记录用 FFmpeg 获取视频流音频流的信息&#xff08;编码格式、分辨率、帧率、播放时长…&#xff09;&#xff0c;所用的工程基于上个博客编译成功的工程&#xff1a;使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c 一、需求…

HTML5网站小游戏源码系统:各种各样小游戏集合,你想要的这里都有+完整的安装代码包以及搭建教程

现如今&#xff0c;科技的不断发展&#xff0c;HTML5技术逐渐成为网页游戏开发的主流。为了满足广大游戏爱好者的需求&#xff0c;罗峰给大家推荐一款基于HTML5的网站小游戏源码系统。这款系统集成了众多经典小游戏&#xff0c;涵盖了各种类型&#xff0c;无论您是寻找休闲益智…

centos7安装ES

1.JDK安装 因为我这里安装的ES版本是7.9.3 因为项目用的1.8的JDK, 7.9.3又兼容1.8&#xff0c;我在这装了1.8的JDK 支持一览表的IP 支持一览表 | Elastic 先将jdk的tar.gz 文件拷入系统 tar -zxvf jdk-8u351-linux-x64.tar.gz 解压压缩包 配置环境变量 vim /etc/profile …

Burp Suite拦截信息或返回数据中文乱码,解决不显示中文

1.点击User options->Display。 2.点击change font&#xff0c;选择宋体。Charater sets选择UTF-8&#xff08;如果还是乱码&#xff0c;看一下请求或响应字符集 charserxxx&#xff09;。

美信科技盘古信息智能车间项目成功验收,打造电子元器件数字化工厂标杆

作为一家深耕于磁性元器件领域近二十年的制造企业&#xff0c;广东美信科技股份有限公司&#xff08;以下简称“美信科技”&#xff09;始终秉承着“为电磁赋能&#xff0c;创工业至美”的企业使命&#xff0c;为中国制造卓越发展贡献力量。在当今数字化时代&#xff0c;制造企…

orangepi 4lts 无线网卡wlan0隔几个小时自动掉线解决

发现问题&#xff1a;最近使用orangepi 4lts有线(内网&#xff09;和无线&#xff08;外网&#xff09;&#xff0c;同时连接&#xff0c;无线都是隔半天就掉线&#xff0c;不能自动重连 无线网卡关闭节能模式 1、查看无线网卡的运行状态 sudo iwconfig wlan0 状态说明&…

063:vue中一维数组与三维数组联动,类似购物车增减

第063个 查看专栏目录: VUE ------ element UI javascript 一维数组与三维数组联动,一维数组转换为三为数组,源文件下载 .zip 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安…

常见的http状态码及其含义,以及状态码的分类

常见状态码及其含义&#xff1a; 状态码分类&#xff1a; HTTP状态码由三个十进制数字组成&#xff0c;第一个十进制数字定义了状态码的类型&#xff0c;后两个数字没有分类的作用。HTTP状态码共分为5种类型&#xff1a; 200&#xff1a;表示请求成功&#xff0c;服务器响应正…

适用于 Windows 的 4 个最佳免费数据恢复软件

计算机最重要的是用户数据。除了您的数据之外&#xff0c;关于计算机的其他一切都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除 丢失分区 损坏的分区 文件/文件夹删除是最常见的数据丢失类型。大多数时候&#xff0c;由于不小心删除文件/文件夹而…

大数据Doris(五十三):SQL函数之日期函数(一)

文章目录 SQL函数之日期函数 一、​​​​​​​CONVERT_TZ(DATETIME dt, VARCHAR from_tz, VARCHAR to_tz)

阴盘奇门八字排盘马星位置计算方法php代码

如下位置&#xff0c;马星的四个位置。 计算方法&#xff1a; 1。先根据出生年月日&#xff0c;计算得八字四柱。比如 2024年01月09日&#xff0c;四柱为 其中时柱地支为“申” 2。然后根据以下对应的数组&#xff0c;来找到id号&#xff0c;即马星位置。 根据下表来找到&am…

5 双指针问题-接雨水的问题

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 int ResetDatas(vector<int>& h…

Jmeter压缩包安装

JMeter安装及配置-Mac 本章要点 前置条件命令行安装压缩包安装 在Mac上安装对应的JMeter工具有两种方式&#xff1a;一种直接借助终端命令行brew进行安装&#xff1b;另外一种和Window电脑一样去JMeter官网下载压缩包安装。 JMeter不需要安装&#xff0c;但是JMeter作为java应用…

Spark避坑系列一(基础知识)

大家想了解更多大数据相关内容请移驾我的课堂: 大数据相关课程 剖析及实践企业级大数据 数据架构规划设计 大厂架构师知识梳理:剖析及实践数据建模 剖析及实践数据资产运营平台 Spark作为大数据领域离线计算的王者,在分布式数据处理计算领域有着极高的处理效率,而Python作为…

已安装MySQL5.7的基础上安装MySQL8教程

类似文章很多&#xff0c;但部分问题解决方案并不是很完整&#xff0c;且对细节描述不够清楚&#xff0c;特意总结一篇 在本机已经安装MySQL5.7的情况下新安装MySQL8.x的方案如下&#xff08;请按照步骤详细操作&#xff09;&#xff1a; 1.进入官网下载 https://dev.mysql.c…

小米机型解锁bl 绕过社区等级5才可以解锁的限制的教程

小米机型目前限制了解锁bl的机制。从以前单一的绑定解锁到目前绑定账号必须小米社区5级的条件限制。切必须要答题分数够才可以申请解锁。限制的根本原因也在为消费者提供更好的服务。避免刷机小白无基础常识解锁bl后第三方固件或者软件造成的故障。另外一方面也在于市场格机脚本…

Git LFS 大文件存储

Git 碰到大文件的困境 Git 是业界流行的分布式版本控制工具&#xff0c;本地仓库与远端仓库同样保存了全量的文件和变更历史&#xff0c;这样让代码协作变得简单和高效。但也正因为如此&#xff0c;Git针对大型文件&#xff08;例如图片、视频或其他二进制文件&#xff09;的版…

RK3566环境搭建

环境&#xff1a;vmware16&#xff0c;ubuntu 18.04 获取SDK前需要安装 sudo apt update sudo apt install -y repo git python 下载完成后先验证一下MD5码 md5sum rk356x_linux_release_v1.3.0b_20221213_split_dir/*firefly_split* 解压 rk3566ubuntu:/path/to$ mkdir ~…