Ajar anda menggunakan EasyWeChat dan PHP untuk membina fungsi tempahan dan baris gilir applet WeChat

王林
Lepaskan: 2023-07-18 09:46:01
asal
2124 orang telah melayarinya

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

  • Persekitaran pelayan: Adalah disyorkan untuk menggunakan persekitaran Linux, dan memasang PHP dan MySQL
  • EasyWeChat: perpustakaan yang memudahkan pembangunan aplikasi WeChat.

2. Bina persekitaran

  1. 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
    Salin selepas log masuk
  2. 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);
         };
     }
    }
    Salin selepas log masuk

    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.

  3. Reka bentuk jadual pangkalan data
    Pertama, buat jadual pangkalan data bernama temu janji untuk menyimpan maklumat pelantikan pengguna. Rujukan struktur jadual adalah seperti berikut:

    $app->register(new WeChatServiceProvider());
    Salin selepas log masuk

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;
Salin selepas log masuk

  1. Dalam kod di atas, kami menggunakan 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>
      Salin selepas log masuk
    1. 小程序页面
      在小程序中,我们需要创建一个预约页面,用户填写相关信息并提交。示例如下:

      <?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'];
      }
      
      Salin selepas log masuk

    在上述代码中,我们使用了bindsubmit来绑定表单的提交事件,用户填写信息后点击提交按钮即可触发该事件。

    1. 后台处理
      在后台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;
      Salin selepas log masuk

      在上述代码中,我们首先从会话中获取用户的openid,并将用户提交的信息插入到数据库中。然后,使用EasyWeChat提供的模板消息功能给用户发送预约成功的模板消息。

    四、实现排队功能

    对于排队功能,我们可以使用数据库中的自增ID来进行计数。用户进行排队时,根据当前排队人数为其生成一个排队号,并将其排队号和相关信息保存到数据库中。用户可以随时查询自己的排队号和当前排队人数,并通过轮询来获取最新的排队状态。

    1. 数据库表设计
      创建一个名为queue的数据库表,用于存储用户排队信息。表结构参考如下:

      <?php
      // query queue number
      $count = $db->query("SELECT COUNT(*) FROM queue")->fetchColumn();
      
      echo $count;
      Salin selepas log masuk
    2. 查询当前排队人数
      在后台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
         })
       }
        })
      }
      Salin selepas log masuk

      在上述示例代码中,我们使用SELECT COUNT(*)来查询当前排队人数,并返回给前端。

    3. 用户排队
      在小程序中,用户可以点击排队按钮进行排队,并将相关信息提交到后台进行处理。示例如下:

      // 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);
      }
      Salin selepas log masuk

      在上述示例代码中,我们使用wx.request来发起后台请求,将用户的openid,姓名和手机号提交到后台进行排队处理。

    4. 查询排队号
      用户可以随时查询自己的排队号,以及当前排队人数。在小程序中,我们可以使用setInterval来进行轮询查询并更新页面显示。示例如下:

      rrreee

      在上述示例代码中,我们使用wx.requestPemprosesan latar belakang

      Di latar belakang PHP, kita perlu menulis kod untuk memproses permintaan pelantikan, menyimpan maklumat yang diserahkan oleh pengguna ke pangkalan data, dan menghantar mesej templat kepada pengguna . Contohnya adalah seperti berikut:
    5. rrreee
    Dalam kod di atas, kami mula-mula mendapatkan openid pengguna daripada sesi dan memasukkan maklumat yang dihantar oleh pengguna ke dalam pangkalan data. Kemudian, gunakan fungsi mesej templat yang disediakan oleh EasyWeChat untuk menghantar mesej templat kepada pengguna yang menunjukkan bahawa tempahan berjaya.


    🎜4. Laksanakan fungsi beratur 🎜🎜Untuk fungsi beratur, kita boleh menggunakan ID penambahan automatik dalam pangkalan data untuk mengira. Apabila pengguna beratur, nombor baris gilir dijana untuk pengguna berdasarkan bilangan semasa orang yang beratur, dan nombor giliran serta maklumat berkaitan disimpan dalam pangkalan data. Pengguna boleh menyemak nombor giliran mereka dan bilangan orang semasa dalam baris gilir pada bila-bila masa, dan mendapatkan status baris gilir terkini melalui tinjauan pendapat. 🎜🎜🎜🎜Reka bentuk jadual pangkalan data🎜Buat jadual pangkalan data bernama 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan