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

文摘   2024-09-29 20:00   内蒙古  

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

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

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

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,显示餐桌编号等诸多功能。总体上,低代码如果涉及到云函数开发的,还是比较复杂的。一个是要知道微信小程序服务部分各个接口的调用逻辑关系,另外就是选用合适的第三方库调用接口,过程中还涉及到云开发的接口调用,还需要仔细调试才可以。


低代码布道师
分享微搭低代码使用教程,提问交流+知识星球50556232
 最新文章