后续我还会不定期的增加新的功能到我们的项目里面来。。。

首页有以下几个功能点

这里点餐分两种

我后面会教大家如何生成桌号二维码,只需要把对应桌号的二维码贴在餐桌上,用户点击 扫码点餐 识别二维码,即可获取到桌号信息。
菜品浏览分两种


我们这里搜索有两个触发方式

如我这里只搜‘鱼’,那么菜品中所有包含鱼的都可以搜索到

首先菜品列表页可以直接添加商品到购物车

购物车弹起后可以做如下操作
这些操作都和菜品列表是联动的,也就是菜品列表和购物车里增删个数,都是可以同步的。我会在项目预览章节的视频里做具体演示。

下单页就是确认订单后进行下单支付的。有以下功能

支付页分两种方式
所以我们的源码提供两个版本

模拟支付

真实微信支付

我的订单页分以下几个状态

我们可以对店家进行评论。

可以查看所有评价和自己的评价


可以看出,我们可以选择就餐人数,排大桌或者小桌。我这里已排小桌为例

通过上图可以看出
后面我会把订阅消息功能加进来,这样到号后会有订阅消息提示。
个人中心分登录和未登录两种状态
未登录

已登录


客户直接在小程序里发消息给客服

客服可以在网页端,或者微信端管理消息

网页端客服

小程序端客服

客户可以直接在小程序端提建议,建议里可以添加图片

管理员可以在小程序后台,查看客户的反馈



可导航到饭店


购物车有内容时如下

购物车为空时如下

语音提示我会在视频课里具体演示

可以查看待制作订单

用户新下单后,会有语音提示

同样也有登录页,和上面厨师登录一样,这里重点看下排号管理页

管理员可以查看当前排号情况,可以叫号。
我们这里的可视化网页后台使用的时云开发自带的cms(内容管理)


我们可以在这里

比如我查询某个用户的所有订单

查询所有新下单还未上菜的订单

还有更多的功能,我会在视频课里给大家用视频来演示,这样更直观。
数据库我们这里用云开发自带的云数据库

视频课我会在B站免费提供给大家,欢迎关注,欢迎三连。 https://space.bilibili.com/419474640/video

配套笔记会在csdn上免费给到大家,欢迎关注,笔记会持续更新。 https://blog.csdn.net/qiushi_1990

目前源码和配套的一些资源暂时不免费,如果有需要的同学可以私聊石头哥,拿米来换。
笔记我也有整理一套电子书,大家也可以私聊石头哥获取电子书版的配套笔记。电子书笔记方便后期查询知识点。

可以联系石头哥配置商业版的点餐小程序。
另外石头哥提供配套解答服务。当然了,知识付费时代石头哥解答是要米的,毕竟石头哥精力有限,石头哥也是要吃面包的。石头哥有推出包月,包年解答服务。你在学习过程中有任何问题,或者工作中遇到任何编程问题,都可以来找石头哥 石头哥目前可以解答如下问题

我目前提供下面两个版本的源码,不同的源码适合不同的场景。后面也都会做具体讲解,所以后面源码导入部分一定要认真看,我模拟支付和真实支付都会做讲解。

我源码会在配套资料里给到付费用户,年卡用户也可以获取到

前期学习,只下载模拟支付版的源码

导入源码的时候一定要把appid换成你自己的。appid需要注册小程序才有的,所以学习这门课之前建议你先去看下我云开发基础课:《零基础人入门小程序云开发》

appid获取的位置如下图。

初始化云开发之前,必须先开通云开发。
点击云开发,进入云开发控制台。如果没有这个图标,说明你上面导入源码时用的不是自己的appid。所以一定要用自己的appid

获取环境id

把环境id复制到app.js里,把下面部分替换成你自己的环境id

这里要注意,选择的环境,必须和你app.js里填入的环境id保持一致。

cloud目录下的云函数都要部署一下



复制上传好的音频链接,到app.js里替换一下
我们上面源码导入成功,并把云开发环境初始化成功以后,接下来就来开通cms可视化网页后台
如下图所示,直接点击开通内容管理(CMS)即可

点击完开通以后,会有如下弹窗,直接点击确定即可。不要被付费吓着,官方每月会送我们一定的免费额度的。学习得话基本上够用了。

上面点完确定后,我们只是开启了按量付费功能,因为cms得使用必须要开通按量付费才可以得。所以还要再点一次开通。如下图

点完开通后,会有如下弹窗,直接点击下一步即可。

然后我们需要设置登录内容管理后台得账号和密码,然后点击确定即可

然后我们就等待内容管理功能得开通了,需要等几分钟。

开通成功以后,我们就可以通过下面这个地址进入管理后台了。

上面开通好以后,就可以通过后台地址登录管理后台了。如下

第一次登录,我们还需要创建一个项目

自己输入项目名和项目id即可

然后点击进入刚刚创建的项目

到这里我们的cmd可视化网页管理后台就创建好了,下面教大家如何导入数据。

把我为大家提前准备好的内容模型.json文件导入即可

导入完以后,可以看到多了以下几个表


数据我已经为大家准备好了,大家只需要按照我视频里的步骤把这两个数据导入到对应的表里即可。
菜品导入成功如下

轮播图导入成功如下

把lunbotu这个表的权限改为所有用户可读,仅创建者可读写。

把food这个表的权限改为 所有用户可读,仅创建者可读写。

把order这个表的权限改为所有用户可读,仅创建者可读写。

把admin这个表的权限改为所有用户可读,仅创建者可读写。

首先来给大家说下pages里的每个页面


cloud云函数如下

我会在视频里把每个页面的代码快速大致的给大家讲解下。这节可以作为选看,后面会手把手的教大家写一款属于自己的点餐小程序。
今天我们就来正式的开始手把手的开发了。后面的每一节都很重要,希望大家好好听。
首先是创建新项目,这里一定要记得用自己的appid,所以你要提前去注册一个属于自己的小程序,小程序的注册我小程序基础课里有讲过。 《10小时零基础入门小程序开发》

注意事项:一定要用自己的appid


本节知识点
这些知识点在基础课里都有讲解,所以这里不会讲太细,会带大家快速的过一遍。

我会在视频里教大家实现一个和上图一样的页面。
我会在视频里给大家做详细讲解。
这里只需要看一个重点知识点的文档即可,其余的知识点我在基础课里都有做讲解。
我们这一节的难点就在这个模糊搜索上,所以接下来会重点给大家讲解这个模糊搜索。这也是我们实现搜索功能的关键所在。
db.collection('food').where({
name: db.RegExp({
regexp: searchKey,
options: 'i'
})
}).get()
就是下面红色框里的这个区域

接下来就教大家如何开发这个区域。
首先去源码的image目录下,把我们需要的几个图片资源复制进来。

就是下面这几个,如果你前面跟着石头哥视频课操作的话,所有的图片资源应该都已经放好了。

这里先把整体代码截图给到大家,如下图所示。

左侧是wxml,右侧是wxss样式。这里每个分类都有自己的bindtap点击事件,点击后会跳转到不同的页面。
这里定义的点击事件,就是点击后做页面跳转,用到了 wx.navigateTo这个知识点。

对应的官方文档如下。

其实小程序里页面跳转有下面4种方式的。

我们这里最常用的就是 wx.navigateTo 。其实这些知识点,我在小程序基础入门课里有讲的:https://edu.csdn.net/course/detail/9531
到这里我们的九宫格分类区域就编写好了。
效果图如下

wxml页面代码如下,我会在视频课程里具体讲解

wxss页面代码如下

这里把几个重点知识给大家补充讲解下。
效果图和核心代码如下



这里主要用了flex布局的justify-content属性,用来定义了项目在主轴上的对齐方式

这里建议大家去百度下 flex 花5分钟学习下,绝对保证你收益终身。
我们这里可以有两种方式请求到数据 1,直接通过云开发数据库获取数据 2,也可以通过云函数获取数据
由于直接通云开发数据库获取数据,我基础课里讲了太多遍,这里我们就通过云函数来获取。云函数代码如下。

注意:云函数里面初始化云开发环境用下面的代码
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})

调用云函数的代码如下


如上图所示,点击查看更多时,依然是跳转到菜品列表页。


因为小程序内置的是腾讯地图,所以你需要到腾讯地图上查询经纬度。 首先,你要明确一个事情,任何位置都有它的 经纬度 ,所以你首先要获取到你想定位位置的经纬度。
腾讯地图经纬度查询:https://lbs.qq.com/tool/getpoint/index.html

如我这里的经纬度:30.353351,120.231010 要记住纬度在前,经度在后。所以我这里的纬度是30.353351,经度是120.231010
我先把代码截个图出来。

然后把代码贴出来给到大家
<map style="width:100%; height:700rpx;" longitude="{{longitude}}" latitude="{{latitude}}" scale="17"
markers="{{markers}}" bindmarkertap="navRoad" data-marker="{{markers[0]}}"
show-location />
<view class="phone" bindtap="Call">
地址:杭州市丁兰广场C座
</view>
<view class="phone" bindtap="Call">
电话:2501902696(可点击拨打)
</view>
这里我们用到了小程序的map组件来显示地图,可以直接设置经纬度和标记点。

我先把代码截图贴出来给到大家

然后把代码给到大家
Page({
data: {
//店铺经纬度
latitude: 30.353351,
longitude: 120.231010,
//标记点
markers: [{
id: 0,
name: "编程小石头",
address: "杭州市丁兰广场C座",
latitude: 30.353351,
longitude: 120.231010,
width: 50,
height: 50
}]
},
//拨打电话
Call() {
wx.makePhoneCall({
phoneNumber: '2501902696'
})
},
//导航
navRoad(event) {
console.log(event)
wx.getLocation({ //获取当前经纬度
type: 'wgs84', //返回可以用于wx.openLocation的经纬度,
success: function (res) {
wx.openLocation({ //使用微信内置地图查看位置。
latitude: event.currentTarget.dataset.marker.latitude, //要去的纬度-地址
longitude: event.currentTarget.dataset.marker.longitude, //要去的经度-地址
name: event.currentTarget.dataset.marker.name,
address: event.currentTarget.dataset.marker.address
})
}
})
}
})
这里其实就点击导航事件比较麻烦些,其他的都还好。注释里给大家标的很清楚了。
到这里其实代码已经完成了,但是我们导航的时候需要用到用户的位置权限,所以我们要在app.json里设置用户授权

如果不设置,点击导航会有如下提示或者调不起来导航。


所以我们要在app.json里设置如下权限

"requiredPrivateInfos": [
"chooseAddress",
"getLocation"
],
到这里我们就可以很方便的让用户找到我们了。