Maison  >  Article  >  développement back-end  >  Vous apprendre à utiliser EasyWeChat et PHP pour créer les fonctions de réservation et de file d'attente de l'applet WeChat

Vous apprendre à utiliser EasyWeChat et PHP pour créer les fonctions de réservation et de file d'attente de l'applet WeChat

王林
王林original
2023-07-18 09:45:132119parcourir

Vous apprendre à utiliser EasyWeChat et PHP pour créer les fonctions de réservation et de file d'attente des mini-programmes WeChat

Introduction :
Avec la popularité croissante des mini-programmes WeChat, de plus en plus d'entreprises ont commencé à fournir des services de réservation et de file d'attente dans des mini-programmes. Cet article vous apprendra comment utiliser EasyWeChat et PHP pour créer les fonctions de réservation et de file d'attente de l'applet WeChat, permettant aux utilisateurs d'effectuer des réservations en ligne instantanées et de faire la queue. Cet article présentera en détail le processus de mise en œuvre spécifique à travers des exemples de code.

1. Exigences environnementales

  • Environnement serveur : Il est recommandé d'utiliser un environnement Linux et d'installer PHP et MySQL
  • EasyWeChat : une bibliothèque qui facilite le développement d'applications WeChat ;

2. Construire l'environnement

  1. Télécharger EasyWeChat
    Tout d'abord, nous devons télécharger et configurer EasyWeChat dans notre projet. Il peut être installé via composer et exécuter la commande suivante :

    composer require overtrue/wechat
  2. Configurer l'application
    Créer un nouveau fournisseur de services dans l'application et configurer 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);
         };
     }
    }

    Dans le code ci-dessus, vous devez le remplacer par l'ID et le secret de votre propre applet Key et Token. Dans le même temps, la configuration des journaux peut être effectuée selon les besoins.

  3. Enregistrer le fournisseur de services
    Enregistrez WeChatServiceProvider auprès du fournisseur de services du projet :

    $app->register(new WeChatServiceProvider());

3. Implémentez la fonction de rendez-vous

Dans l'applet WeChat, nous pouvons implémenter la fonction de rendez-vous via des messages modèles. Dans le mini-programme, une fois que l'utilisateur a rempli les informations de réservation pertinentes et les a soumises, un enregistrement de réservation sera généré en arrière-plan et les informations contenues dans l'enregistrement seront envoyées à l'utilisateur sous forme de message modèle.

  1. Conception de table de base de données
    Tout d'abord, créez une table de base de données nommée rendez-vous pour stocker les informations de rendez-vous des utilisateurs. La référence de la structure du tableau est la suivante : appointment的数据库表,用于存储用户预约信息。表结构参考如下:

    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;
  2. 小程序页面
    在小程序中,我们需要创建一个预约页面,用户填写相关信息并提交。示例如下:

    <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>

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

  1. 后台处理
    在后台PHP中,我们需要编写处理预约请求的代码,将用户提交的信息保存到数据库中,并发送模板消息给用户。示例如下:

    <?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'];
    }
    

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

四、实现排队功能

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

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

    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;
  2. 查询当前排队人数
    在后台PHP中,我们需要编写查询当前排队人数的代码,示例如下:

    <?php
    // query queue number
    $count = $db->query("SELECT COUNT(*) FROM queue")->fetchColumn();
    
    echo $count;

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

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

    // 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
       })
     }
      })
    }

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

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

    // 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.requestrrreee

Mini page du programme

Dans le mini programme, nous devons créer une page de rendez-vous, et l'utilisateur remplit les informations pertinentes et les soumet. Un exemple est le suivant :
rrreee

🎜🎜Dans le code ci-dessus, nous utilisons bindsubmit pour lier l'événement de soumission du formulaire. Une fois que l'utilisateur a rempli les informations et cliqué sur le bouton de soumission, l'événement. peut être déclenché. 🎜
    🎜🎜Traitement en arrière-plan🎜En arrière-plan PHP, nous devons écrire le code pour traiter la demande de rendez-vous, enregistrer les informations soumises par l'utilisateur dans la base de données et envoyer le modèle de message à l'utilisateur . Un exemple est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous obtenons d'abord l'openid de l'utilisateur de la session et insérons les informations soumises par l'utilisateur dans la base de données. Ensuite, utilisez la fonction de message modèle fournie par EasyWeChat pour envoyer à l'utilisateur un modèle de message indiquant que la réservation est réussie. 🎜🎜🎜🎜4. Implémentez la fonction de file d'attente 🎜🎜Pour la fonction de file d'attente, nous pouvons utiliser l'ID à incrémentation automatique dans la base de données pour le comptage. Lorsqu'un utilisateur fait la queue, un numéro de file d'attente est généré pour l'utilisateur sur la base du nombre actuel de personnes faisant la queue, et le numéro de file d'attente et les informations associées sont enregistrés dans la base de données. Les utilisateurs peuvent vérifier leur numéro de file d'attente et leur numéro de file d'attente actuel à tout moment, et obtenir le dernier état de la file d'attente via une interrogation. 🎜🎜🎜🎜Conception de table de base de données🎜Créez une table de base de données nommée file d'attente pour stocker les informations de file d'attente des utilisateurs. La référence de la structure de la table est la suivante : 🎜rrreee🎜🎜🎜Requête du nombre actuel de personnes dans la file d'attente🎜En arrière-plan PHP, nous devons écrire du code pour interroger le nombre actuel de personnes dans la file d'attente, l'exemple est le suivant :🎜rrreee 🎜Dans l'exemple de code ci-dessus, nous utilisons SELECT COUNT( *) pour interroger le nombre actuel de personnes en ligne et le renvoyer au front-end. 🎜🎜🎜🎜File d'attente des utilisateurs🎜Dans le mini-programme, les utilisateurs peuvent cliquer sur le bouton de file d'attente pour mettre en file d'attente et soumettre les informations pertinentes en arrière-plan pour traitement. Un exemple est le suivant : 🎜rrreee🎜Dans l'exemple de code ci-dessus, nous utilisons wx.request pour lancer une demande en arrière-plan et soumettre l'openid, le nom et le numéro de téléphone portable de l'utilisateur en arrière-plan pour le traitement de la file d'attente. 🎜🎜🎜🎜Requête du numéro de file d'attente🎜Les utilisateurs peuvent vérifier leur numéro de file d'attente et le nombre actuel de personnes dans la file d'attente à tout moment. Dans le mini programme, nous pouvons utiliser setInterval pour effectuer des requêtes d'interrogation et mettre à jour l'affichage de la page. L'exemple est le suivant : 🎜rrreee🎜Dans l'exemple de code ci-dessus, nous utilisons wx.request pour interroger et interroger les informations de file d'attente de l'utilisateur. Si le numéro de file d'attente est supérieur à 0, cela signifie que la file d'attente est. réussi et le nombre actuel de personnes dans la file d'attente et le numéro de file d'attente de l'utilisateur. 🎜🎜🎜🎜Résumé : 🎜Grâce aux étapes ci-dessus, nous pouvons créer une applet WeChat simple avec des fonctions de réservation et de file d'attente via EasyWeChat et PHP. Les utilisateurs peuvent effectuer des réservations en ligne via le mini-programme et vérifier leur statut de file d'attente en temps réel, offrant ainsi aux utilisateurs des services de réservation et de file d'attente plus pratiques. J'espère que cet article vous aidera ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn