点餐小程序实战教程13餐桌管理

news2024/9/29 20:34:43

目录

  • 1 创建数据源
  • 2 搭建管理后台
  • 3 生成餐桌码
  • 4 找到自己的appid和secret
  • 5 小程序里获取餐桌信息
  • 总结

我们上一篇介绍了点餐界面的菜品展示功能。现实中如果你去餐馆用餐,总是给餐桌贴一个二维码,服务员会告诉你扫码点餐。

扫码大家现在都已经非常熟练了,一般是打开微信,用扫一扫的功能扫码,会打开餐馆的小程序,在顶部会显示当前餐桌的编号,之后就是点餐了。

那这种一桌一码是如何实现的呢?我们本篇就介绍一下利用小程序码来实现一桌一码的功能。

1 创建数据源

要管理餐桌,我们先需要创建一个数据源来录入餐桌的信息。打开应用编辑器,切换到数据源视图,点击+号创建数据源
在这里插入图片描述
录入数据源的名称餐桌
在这里插入图片描述
点击添加一列,输入字段名称编号,类型选择自动编号,最小位数选择1,起始值选择1
在这里插入图片描述
继续添加列,输入餐桌容纳人数,类型选择数字
在这里插入图片描述
继续添加列,输入餐桌状态,类型选择枚举
在这里插入图片描述
枚举值设置为空闲、使用中
在这里插入图片描述

2 搭建管理后台

切换到应用视图,打开我们的管理后台应用
在这里插入图片描述
点击创建页面图标
在这里插入图片描述
选择表格与表单页模板,在右侧选择餐桌数据源,布局选择左侧导航布局
在这里插入图片描述
切换到页面布局视图
在这里插入图片描述
选择左侧导航布局,选中布局组件,在右侧点击添加平级菜单,选择餐桌列表页面
在这里插入图片描述
点击页面设计视图,回到设计状态
在这里插入图片描述
点击实时预览,查看具体的效果
在这里插入图片描述
在这里插入图片描述
录入几条数据
在这里插入图片描述

3 生成餐桌码

后台搭建好之后,我们需要创建一个API来生成餐桌码。具体的思路是先调用小程序的token接口,获取接口的token。得到token之后再去调用小程序码接口,将返回的二进制数据写入到云存储,保存成图片。

有了图片之后,我们需要给后台增加一个下载二维码的功能,这样餐馆就可以打印二维码贴到餐桌上

为了保存我们的图片,我们需要在数据源再增加一列,餐桌码,类型选择图片
在这里插入图片描述
切换到APIs视图,点击+号创建API
在这里插入图片描述
选择云开发云函数
在这里插入图片描述
输入名称和标识,点击管理云函数
在这里插入图片描述
点击新建云函数
在这里插入图片描述
输入函数名称,createQRCode
在这里插入图片描述
点击确定完成云函数的创建
在这里插入图片描述
点击列表的函数名称,打开我们的云函数
在这里插入图片描述
切换到函数代码
在这里插入图片描述
点击文件,添加一个package.json文件
在这里插入图片描述
在这里插入图片描述
在package.json里输入如下配置信息

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {},
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@cloudbase/node-sdk": "latest",
    "axios":"latest",
    "fs":"latest"
  }
}

在index.js里输入如下代码

const axios = require('axios');
const tcb = require('@cloudbase/node-sdk');
const fs = require('fs');

const app = tcb.init();

async function getAccessToken() {
  const appid = '****';//替换成你自己的
  const secret = '***';//替换成你自己的
  const response = await axios.get(`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`);
  return response.data.access_token;
}

exports.main = async (event, context) => {
  const { scene, page } = event;

  try {
    // Step 1: Get Access Token
    const token = await getAccessToken();
    console.log("token",token)
    // Step 2: Generate QR Code using the native request
    const response = await axios.post(`https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${token}`, {
      scene: scene || 'a=1',
      page: page || 'pages/index/index',
      width: 430,
      env_version:"trial"
    }, {
      responseType: 'arraybuffer'  // Get the image as binary data
    });
    console.log(response.data)
    // Step 3: Save the QR code as a temporary file
    const tempFilePath = '/tmp/qrcode.png'; // Temporary path for cloud functions
    fs.writeFileSync(tempFilePath, response.data); // Save QR code image to temp file

    // Step 4: Upload QR code to Cloud Storage
    const uploadResult = await app.uploadFile({
      cloudPath: `qrcodes/table-${scene}.png`, // Cloud storage path
      fileContent: fs.createReadStream(tempFilePath) // Read the temp file as stream
    });

    // Step 5: Clean up the temporary file
    fs.unlinkSync(tempFilePath); // Delete the temp file after upload

    return {
      success: true,
      fileID: uploadResult.fileID, // Return file ID for further access
    };
  } catch (err) {
    console.error(err); // Log the error for debugging
    return {
      success: false,
      error: err,
    };
  }
};

代码的意思是访问二维码的接口并上传到云存储里

代码写好之后,点保存并安装依赖,安装完毕后会多一个node_modules文件夹,这个就是我们云函数需要使用到的第三方的库
在这里插入图片描述
之后点击测试,输入如下入参

{
    "scene": "3",
    "page": "pages/index/index"
}

点击运行测试可以看到结果
在这里插入图片描述
我们上传完毕后会返回文件的fileID,这个时候点击云存储,在对应的目录下查看文件是否上传成功
在这里插入图片描述
云函数开发好之后,回到我们的API界面,选择我们创建好的云函数,设置好入参和出参
在这里插入图片描述
在我们的后台应用,给表格的组件操作列添加一个按钮,内容修改为生成餐桌码,调用我们的云函数即可
在这里插入图片描述
在这里插入图片描述
云函数调用成功之后我们将生成的图片回写到表里
在这里插入图片描述

4 找到自己的appid和secret

打开微信公众平台,打开开发管理,在开发设置下找到你自己的appid和secret
在这里插入图片描述
一般密钥是需要点击重置获取,在弹窗里复制重置后的密钥,保存到电脑里,之后打开云函数替换就可以

5 小程序里获取餐桌信息

打开我们的小程序,在顶部添加一个文本组件
在这里插入图片描述
在代码区我们创建一个变量用来接收扫码之后的餐桌编号
在这里插入图片描述
餐桌编号我们是在页面加载的时候从入参里得到,点击右下角的代码编辑器
在这里插入图片描述
在onLoad函数里我们进行赋值操作
在这里插入图片描述

$w.page.dataset.state.table = query.scene

这样用户扫码之后就可以显示对应的餐桌编号信息,后续在点餐的时候就可以和餐桌进行关联

总结

我们本篇带着大家实现了一下扫码点餐时显示餐桌信息的功能,涉及到创建数据源,编制API,显示餐桌编号等诸多功能。总体上,低代码如果涉及到云函数开发的,还是比较复杂的。一个是要知道微信小程序服务部分各个接口的调用逻辑关系,另外就是选用合适的第三方库调用接口,过程中还涉及到云开发的接口调用,还需要仔细调试才可以。

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

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

相关文章

“从零开始学排序:简单易懂的算法指南“

“一辈人有一辈人要做的事!!!” 这一期的节目呢,是关于排序的内容,相信大家对此一定很熟悉吧! 排序: 排序是将一组元素按照一定的规则或标准进行组织和排列的过程。 冒泡排序: 冒…

此连接非私人连接

当你手机浏览器输入网站打开提示“此连接非私人连接,此网站可能在冒充来窃取你的个人或财务信息。你应回到之前的页面”这是因为该网站的SSL数字证书到期导致,需要此网站的管理员重新申请数字证书替换之前的文件才可以实现。 注意:如果你不是…

Token: 数据库、存储系统和API安全的应用

一. Token Token是一种常见的计算机术语,它在不同的上下文中有不同的含义。在身份验证和授权的上下文中,Token通常指的是服务端生成的一串字符串,作为客户端进行请求的一个令牌。当用户登录后,服务器会生成一个Token并返回给客户…

【高阶数据结构】平衡二叉树(AVL)的删除和调整

🤡博客主页:醉竺 🥰本文专栏:《高阶数据结构》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多《高阶数据结构》点击专栏链接查看&a…

记一次教学版内网渗透流程

信息收集 如果觉得文章写的不错可以共同交流 http://aertyxqdp1.target.yijinglab.com/dirsearch dirsearch -u "http://aertyxqdp1.target.yijinglab.com/"发现 http://aertyxqdp1.target.yijinglab.com/joomla/http://aertyxqdp1.target.yijinglab.com/phpMyA…

DialFRED基准:具有对话能力的具身智能Agent

目录 一、DialFRED数据集1.1 数据集规模与任务结构1.2 任务实例的构成1.3 人类标注的问答数据1.4 Oracle自动生成答案1.5 任务多样性与数据增强1.6 数据集的词汇多样性1.7 任务和环境的多样性 二、提问者-执行者框架2.1 框架概述2.2 提问者模型设计2.3 执行者模型设计2.4 强化学…

【读书笔记-《30天自制操作系统》-25】Day26

本篇仍然是围绕着命令行窗口做文章。首先优化命令行窗口的移动速度,然后增加多个命令行窗口功能。接着优化了命令行窗口的关闭,最后增加了两个命令start与ncst。 1. 优化命令行窗口移动速度 首先对命令行窗口的移动速度进行优化。主要的优化点有以下几…

WEB服务器——Tomcat

服务器是可以使用java完成编写,是可以接受页面发送的请求和响应数据给前端浏览器的,而在开发中真正用到的Web服务器,我们不会自己写的,都是使用目前比较流行的web服务器。 如:Tomcat 1. 简介 Tomcat 是一个开源的轻量…

二维数组的存放

今天我水的文章是二维数组的存放 二维数组的存放方式其实和一维数组没有区别&#xff0c;但如果想要更直观的了解&#xff0c;我们可以把它们的地址打印出来。 代码如下&#xff1a; #include <stdio.h> int main() {int arr[3][3];//二维数组&#xff0c;int数组类型…

【高效管理集合】并查集的实现与应用

文章目录 并查集的概念主要操作优化技术应用场景 并查集的实现基本框架并查集的主要接口总体代码 并查集的应用省份的数量等式方程的可满足性 总结 并查集的概念 并查集&#xff0c;也称为不相交集&#xff0c;是一种树形的数据结构&#xff0c;用于处理一些不相交集合的合并及…

ClickHouse | 查询

1 ALL 子句 2 ARRAY JOIN 使用别名 :在使用时可以为数组指定别名&#xff0c;数组元素可以通过此别名访问&#xff0c;但数组本身则通过原始名称访问 3 DISTINCT子句 DISTINCT不支持当包含有数组的列 4 FROM子句 FROM 子句指定从以下数据源中读取数据: 1.表 2.子…

建筑资质应该怎么选?

建筑资质是建筑企业承接工程项目的必备条件&#xff0c;它不仅关系到企业的市场竞争力&#xff0c;还直接影响到企业的经营效益。因此&#xff0c;选择适合自己企业的建筑资质至关重要。以下是一些选择建筑资质时需要考虑的关键因素&#xff1a; 1. 明确企业定位 首先&#x…

金融教育宣传月 | 平安养老险百色中心支公司开展金融知识“消保县域行”宣传活动

9月22日&#xff0c;平安养老险百色中心支公司积极落实国家金融监督管理总局关于开展金融教育宣传月活动的相关要求&#xff0c;联合平安人寿百色中心支公司共同组成了平安志愿者小队&#xff0c;走进百色市四塘镇百兰村开展了一场别开生面的金融消费者权益保护宣传活动。此次活…

如何给你的项目添加测试覆盖率徽章

看完我的测试教程之后&#xff0c;想必大家都能写出一个测试覆盖率极高的小项目了。测试覆盖率既然这么高&#xff0c;不秀一秀岂不是白瞎了&#xff0c;下面我们就来通过第三方服务来给你的项目加上测试覆盖率徽章&#xff0c;涉及到的内容有yaml配置&#xff0c;githubAction…

Vue下载pubsub-js中错误问题解决

错误&#xff1a; 解决方法&#xff1a; 执行&#xff1a; npm config set registry https://registry.npm.taobao.org我执行以上方法后安装成功

关于北斗卫星导航系统,你都了解多少?

北斗卫星导航系统&#xff08;简称“北斗系统”&#xff09;&#xff0c; 英文全称是&#xff1a;Beidou Navigation Satellite System&#xff08;简称&#xff1a;BDS&#xff09;&#xff0c; 研发 的 初衷 是中国着眼于国家安全和经济社会发展需要&#xff0c;选择自主研发…

Java类的生命周期-初始化阶段

Java类的生命周期-初始化阶段 前两篇讲述了类生命周期的加载阶段和连接阶段&#xff0c;那么本篇我们来讲最为重要的初始化阶段&#xff0c;借助字节码文件与大厂面试题更好的理解类的初始化 头篇提到&#xff0c;类的生命周期可疑将他分为五个阶段&#xff0c;本篇要讲述的就是…

RIP路由(已被淘汰)

一、rip 路由原理 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;早期的动态路由协议&#xff0c;被广泛应用于TCP/IP网络中&#xff0c;尤其是在中小型网络中。基于距离矢量&#xff08;Distance-Vector&#xff09;算法来计算到达目的网络…

农场小程序带你走进生态农产品的世界

在快节奏的现代生活中&#xff0c;人们对食品安全的关注日益增强&#xff0c;对环境、健康农产品的需求也愈发迫切。然而&#xff0c;传统农产品市场往往信息不透明&#xff0c;消费者难以直接了解农产品的生长环境和生产过程&#xff0c;导致信任缺失。而农场小程序的出现&…

工程安全监测分析模型与智能算法模型方案

工程安全监测分析模型与智能算法模型 构建大坝安全监测智能分析模型&#xff0c;以大坝立体智能感知体系为依托&#xff0c;获取大坝变形、渗流渗压、环境变量等实时监测数据&#xff0c;作为模型输入&#xff0c;实现监测数据自动预处理、特征提取、误差分析、变化趋势分析等…