Ajar anda menggunakan EasyWeChat dan PHP untuk membina fungsi tempahan dan beratur bagi program mini WeChat
Pengenalan:
Dengan peningkatan populariti program mini WeChat, semakin banyak syarikat telah mula menyediakan perkhidmatan tempahan dan beratur dalam program mini. Artikel ini akan mengajar anda cara menggunakan EasyWeChat dan PHP untuk membina fungsi tempahan dan baris gilir applet WeChat, yang membolehkan pengguna membuat tempahan dalam talian segera dan menunggu dalam talian. Artikel ini akan memperkenalkan proses pelaksanaan khusus secara terperinci melalui contoh kod.
1. Keperluan persekitaran
2. Bina persekitaran
Muat turun EasyWeChat
Mula-mula, kami perlu memuat turun dan mengkonfigurasi EasyWeChat dalam projek kami. Ia boleh dipasang melalui komposer dan jalankan arahan berikut:
composer require overtrue/wechat
Konfigurasi aplikasi
Buat pembekal perkhidmatan baharu dalam aplikasi dan konfigurasikan EasyWeChat:
<?php // services/WeChatServiceProvider.php use EasyWeChatFactory; use PimpleContainer; use PimpleServiceProviderInterface; class WeChatServiceProvider implements ServiceProviderInterface { public function register(Container $app) { $config = [ 'app_id' => 'your-app-id', 'secret' => 'your-app-secret', 'token' => 'your-token', 'response_type' => 'array', 'log' => [ 'level' => 'debug', 'file' => '/path/to/your/log/file.log', ], ]; $app['wechat'] = function () use ($config) { return Factory::officialAccount($config); }; } }
Dalam kod di atas, anda perlu menggantikannya dengan ID dan rahsia daripada Key dan Token applet anda sendiri. Pada masa yang sama, konfigurasi log boleh dilakukan mengikut keperluan. . Dalam program mini, selepas pengguna mengisi maklumat tempahan yang berkaitan dan menyerahkannya, rekod tempahan akan dijana di latar belakang, dan maklumat dalam rekod akan dihantar kepada pengguna sebagai mesej templat.
Reka bentuk jadual pangkalan data
Pertama, buat jadual pangkalan data bernama
$app->register(new WeChatServiceProvider());
Halaman program mini
Dalam program mini, kita perlu membuat halaman temujanji, dan pengguna mengisi maklumat yang berkaitan dan menyerahkannya. Contohnya adalah seperti berikut:CREATE TABLE `appointment` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `openid` varchar(100) NOT NULL, `name` varchar(50) NOT NULL, `phone` varchar(20) NOT NULL, `date` date NOT NULL, `time` time NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
bindsubmit
untuk mengikat acara hantar borang Selepas pengguna mengisi maklumat dan mengklik butang hantar, acara boleh dicetuskan. appointment
的数据库表,用于存储用户预约信息。表结构参考如下:<view class="container"> <form bindsubmit="submitForm"> <view class="form-item"> <text>姓名:</text> <input type="text" name="name" placeholder="请输入姓名" bindinput="bindNameInput" /> </view> <view class="form-item"> <text>手机号:</text> <input type="number" name="phone" placeholder="请输入手机号" bindinput="bindPhoneInput" /> </view> <view class="form-item"> <text>日期:</text> <picker mode="date" bindchange="bindDateChange"> <view>{{ date }}</view> </picker> </view> <view class="form-item"> <text>时间:</text> <picker mode="time" bindchange="bindTimeChange"> <view>{{ time }}</view> </picker> </view> <view class="form-item"> <button form-type="submit" class="btn-submit">提交</button> </view> </form> </view>
小程序页面
在小程序中,我们需要创建一个预约页面,用户填写相关信息并提交。示例如下:
<?php // save appointment $openid = $_SESSION['openid']; $name = $_POST['name']; $phone = $_POST['phone']; $date = $_POST['date']; $time = $_POST['time']; $db->query("INSERT INTO appointment (openid, name, phone, date, time) VALUES ('$openid', '$name', '$phone', '$date', '$time')"); // send template message $app = $app['wechat']; $result = $app->template_message->send([ 'touser' => $openid, 'template_id' => 'your-template-id', 'url' => 'your-url', 'data' => [ 'first' => '您已成功预约!', 'keyword1' => $name, 'keyword2' => $date . ' ' . $time, 'remark' => '请准时到达!', ], ]); if ($result['errcode']) { // handle error echo $result['errmsg']; }
在上述代码中,我们使用了bindsubmit
来绑定表单的提交事件,用户填写信息后点击提交按钮即可触发该事件。
后台处理
在后台PHP中,我们需要编写处理预约请求的代码,将用户提交的信息保存到数据库中,并发送模板消息给用户。示例如下:
CREATE TABLE `queue` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `openid` varchar(100) NOT NULL, `name` varchar(50) NOT NULL, `phone` varchar(20) NOT NULL, `queue_no` int(11) unsigned NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上述代码中,我们首先从会话中获取用户的openid,并将用户提交的信息插入到数据库中。然后,使用EasyWeChat提供的模板消息功能给用户发送预约成功的模板消息。
四、实现排队功能
对于排队功能,我们可以使用数据库中的自增ID来进行计数。用户进行排队时,根据当前排队人数为其生成一个排队号,并将其排队号和相关信息保存到数据库中。用户可以随时查询自己的排队号和当前排队人数,并通过轮询来获取最新的排队状态。
数据库表设计
创建一个名为queue
的数据库表,用于存储用户排队信息。表结构参考如下:
<?php // query queue number $count = $db->query("SELECT COUNT(*) FROM queue")->fetchColumn(); echo $count;
查询当前排队人数
在后台PHP中,我们需要编写查询当前排队人数的代码,示例如下:
// index.js // enqueue function enqueue() { wx.request({ url: 'your-api-url', method: 'POST', data: { openid: getApp().globalData.openid, name: this.data.name, phone: this.data.phone }, success: function(res) { wx.showToast({ title: '排队成功', duration: 1500 }) } }) }
在上述示例代码中,我们使用SELECT COUNT(*)
来查询当前排队人数,并返回给前端。
用户排队
在小程序中,用户可以点击排队按钮进行排队,并将相关信息提交到后台进行处理。示例如下:
// index.js // get queue number function getQueueNumber() { var intervalId = setInterval(function() { wx.request({ url: 'your-api-url', method: 'GET', success: function(res) { var queueNo = res.data.queue_no; var count = res.data.count; if (queueNo > 0) { clearInterval(intervalId); wx.showModal({ title: '排队成功', content: '当前排队人数:' + count + ' 您的排队号:' + queueNo }) } } }) }, 2000); }
在上述示例代码中,我们使用wx.request
来发起后台请求,将用户的openid,姓名和手机号提交到后台进行排队处理。
查询排队号
用户可以随时查询自己的排队号,以及当前排队人数。在小程序中,我们可以使用setInterval
来进行轮询查询并更新页面显示。示例如下:
在上述示例代码中,我们使用wx.request
Pemprosesan latar belakang
queue
untuk menyimpan maklumat baris gilir pengguna. Rujukan struktur jadual adalah seperti berikut: 🎜rrreee🎜🎜🎜Soal bilangan semasa orang dalam baris gilir🎜Di latar belakang PHP, kita perlu menulis kod untuk menanyakan bilangan orang dalam baris gilir Contoh adalah seperti berikut:🎜rrreee 🎜Dalam kod contoh di atas, kami menggunakan SELECT COUNT( *)
untuk menanyakan bilangan orang dalam baris semasa dan mengembalikannya ke bahagian hadapan. 🎜🎜🎜🎜Beratur Pengguna🎜Dalam program mini, pengguna boleh mengklik butang giliran untuk beratur dan menyerahkan maklumat yang berkaitan ke latar belakang untuk diproses. Contohnya adalah seperti berikut: 🎜rrreee🎜Dalam kod contoh di atas, kami menggunakan wx.request
untuk memulakan permintaan latar belakang dan menyerahkan openid, nama dan nombor telefon mudah alih pengguna ke latar belakang untuk pemprosesan beratur. 🎜🎜🎜🎜Nombor giliran pertanyaan🎜Pengguna boleh menyemak nombor giliran mereka dan bilangan semasa orang dalam baris gilir pada bila-bila masa. Dalam program mini, kita boleh menggunakan setInterval
untuk melaksanakan pertanyaan tinjauan pendapat dan mengemas kini paparan halaman. Contohnya adalah seperti berikut: 🎜rrreee🎜Dalam kod contoh di atas, kami menggunakan wx.request
untuk meninjau dan menanyakan maklumat baris gilir pengguna Jika nombor giliran lebih daripada 0, ini bermakna baris gilir berjaya dan bilangan semasa orang dalam baris gilir dan Nombor giliran pengguna. 🎜🎜🎜🎜Ringkasan: 🎜Melalui langkah di atas, kita boleh membina applet WeChat yang mudah dengan fungsi tempahan dan giliran melalui EasyWeChat dan PHP. Pengguna boleh membuat tempahan dalam talian melalui program mini dan menyemak status beratur mereka dalam masa nyata, menyediakan pengguna dengan tempahan dan perkhidmatan beratur yang lebih mudah. Harap artikel ini membantu anda! 🎜Atas ialah kandungan terperinci Ajar anda menggunakan EasyWeChat dan PHP untuk membina fungsi tempahan dan baris gilir applet WeChat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!