Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction de message privé dans le site en php

Comment implémenter la fonction de message privé dans le site en php

藏色散人
藏色散人original
2021-09-10 10:28:593169parcourir

Comment implémenter la fonction de message privé dans le site en PHP : 1. Lire le corps de la requête POST ; 2. Appeler le sous-module pour insérer le message du site envoyé à l'ensemble du site ou au groupe d'utilisateurs auquel il appartient ; ; 3. Obtenez le nombre de messages du site non lus ; 4. Vérifiez si le messageId appartient à l'utilisateur actuel. 5. Implémentez simplement la suppression par lots.

Comment implémenter la fonction de message privé dans le site en php

L'environnement d'exploitation de cet article : système windows7, version PHP7.1, ordinateur DELL G3

Comment php implémente-t-il la fonction de message privé sur le site ?

Mise en œuvre PHP d'idées et de solutions de conception de messages de site

1. Contexte

Actuellement, lorsque les utilisateurs de la plateforme d'exploitation et de maintenance communiquent, ils s'appuient davantage sur WeChat et les notifications par e-mail, tandis que la plateforme d'exploitation et de maintenance dans son ensemble Le produit a également besoin d'un service capable d'effectuer la communication interne - la messagerie intra-site.

Le ton de conception des messages sur site

Le ton de conception des messages sur site dépend de la façon dont les utilisateurs utilisent les messages sur site :

  • Les utilisateurs ne s'en tiendront pas à la page de l'opération et la plate-forme de maintenance, en attente des notifications de message et en affichant le contenu du message, puis accédez à la page que vous souhaitez utiliser.

  1. En d'autres termes, les messages sur site ne sont pas la première entrée, et la nature en temps réel des messages sur site n'a pas beaucoup d'importance.

  2. Contrairement à de nombreux sites de réseaux sociaux (Facebook, Zhihu, Weibo, etc.), les utilisateurs resteront sur la page principale du site de réseau social, actualisant constamment le nouveau contenu et vérifiant les nouveaux messages (principalement les messages privés personnels, les messages d'autres personnes). réponses, etc.) Il ne s'agit certainement pas de vérifier les messages de notification du système)

  • L'utilisateur décidera s'il doit accéder à la plateforme d'exploitation et de maintenance pour l'exploitation en fonction de la notification par e-mail

  • S'il y en a particulièrement beaucoup Dans les e-mails, par exemple, plusieurs bons de travail doivent être traités par l'utilisateur en même temps. Les utilisateurs effectueront également tous les travaux sur la page « Mes tâches » fournie par la plateforme de bons de travail.

  • Si l'e-mail est accidentellement supprimé et qu'il n'y a pas de lien email pour entrer directement dans le module à exploiter

  1. Ensuite, vous pouvez soit vous rendre sur la page désignée en demandant un lien/numéro de facture

  2. ou procédez directement dans le module Recherche correspondant

Les descriptions ci-dessus signifient que les utilisateurs n'utilisent fondamentalement pas de messages sur site, alors dans quelles circonstances utiliseront-ils des messages sur site ?

  • N'envoie pas d'e-mails, uniquement des notifications de message pour les messages sur le site, tels que des notifications à l'échelle du site, des opérations d'édition, des opérations de commentaires, etc.

  • Lorsqu'il n'y a pas d'enregistrement d'opération détaillé pour un module spécifique, vous peut vérifier l'heure d'apparition des messages sur le site

Actuellement, il n'y a que des notifications d'actualités sur les produits, et l'affichage des messages n'est pas classé et agrégé. À l'avenir, lors de l'ajout de notifications, de mentions, de likes à l'échelle du site. commentaires et autres types de messages sur le site, vous devez envisager de regrouper les messages par type.

2. Description des exigences

  1. Les messages sur site doivent généralement répondre à deux besoins :

  • Messages sur site d'utilisateurs à utilisateurs et messages sur site d'administrateurs à utilisateurs. : c'est-à-dire un envoi individuel

  • Messages sur site de l'administrateur à plusieurs utilisateurs, groupes d'utilisateurs et à l'ensemble du site : c'est-à-dire un envoi un-à-plusieurs

(Il existe également un -messages du site des utilisateurs sur les produits, tels que des commentaires et des questions sur un certain module, etc. )

Nos besoins actuels sont :

1 L'administrateur envoie des messages intra-site à plusieurs utilisateurs

Aucune vérification de l'authenticité des utilisateurs

Limiter la longueur du titre et la longueur du contenu (respectivement 45 octets), 150 octets, correspondant à 15 et 50 caractères chinois)

Limiter la longueur du pinyin du destinataire (maximum 50 octets)

[Apprentissage recommandé : "Vidéo PHP Tutoriel"]

2 Les utilisateurs peuvent afficher les messages de leur propre site

Filtrer par "Tous, Lus, Non lus"

Classés par source de message : plateforme d'ordres de travail, gestion des ressources, installation automatique, plateforme de vulnérabilités, plateforme de pannes. . .

3 Les utilisateurs peuvent supprimer les messages du site, les supprimer par lots

4 Les utilisateurs peuvent lire, lire par lots et marquer tous les messages du site comme lus

5 L'icône de message en haut de la page de la plateforme d'exploitation et de maintenance

  • affiche les messages non lus Le nombre de messages, s'il dépasse 99, il affichera 99+

  • Placez la souris dessus, et il y aura une liste déroulante montrant les 10 derniers messages non lus (affichant "heure" , "source", "titre")

  • liste déroulante Il y a deux boutons en bas : "Plus" pour charger plus de messages non lus ; "Afficher tout" pour accéder à la page de liste des messages du site (il est préférable pour ouvrir une autre fenêtre)

  • Cliquez sur les messages non lus dans la liste déroulante, affichez les détails dans une boîte contextuelle ; puis supprimez l'enregistrement dans la liste des messages non lus, marquez-le comme lu dans la base de données et le numéro des messages non lus dans l'icône de message est réduit d'un

6 Page Administrateur :

Mettre à jour l'utilisateur

Supprimer le message

Statistiques

Ajouter un module

Ajouter un type de message du site

Envoyer un message à l'échelle du site

"Quatre processus système"

Obtenez le liste des messages du site

  1. Appelez le sous-module pour insérer les messages du site envoyés à l'ensemble du site ou au groupe d'utilisateurs auquel j'appartiens

  2. Renvoyer les données de la base de données en fonction des conditions de requête

Obtenir le nombre de messages du site non lus

  1. Appelez le sous-module pour insérer les messages du site envoyés à l'ensemble du site ou au groupe d'utilisateurs auquel j'appartiens

  2. Renvoyer le numéro

Batch read

  1. Vérifier si le messageId appartient à l'utilisateur actuel

  2. Définir read sur 1 dans la table inbox_message, modifier update_time

Tous lus

update inbox_message set “read”=1, “update_time”=now where “receiver_name”=currentUser() and “read” = 0

Suppression par lots

  1. Vérifiez si le messageId appartient à l'utilisateur actuel

  2. Définissez supprimé à 1 dans la table inbox_message, modifiez update_time

Supprimez tout

update inbox_message set “deleted”=1, “update_time”=now where “receiver_name”=currentUser() and “deleted” = 0

5. Conception de base de données

Tableau de contenu des messages sur site

CREATE TABLE `inbox_message_text` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(128) NOT NULL DEFAULT '',
  `content` longtext NOT NULL,
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  `send_type` tinyint(4) NOT NULL DEFAULT '0',
  `creator_name` varchar(255) NOT NULL DEFAULT '',
  `deleted` tinyint(4) NOT NULL DEFAULT '0',
  `module_id` bigint(20) NOT NULL,
  `link` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

En plus de la source du message (module_name), le message sur site lui-même a également une description dimensionnelle appelée type de message (message_type), comme les messages de sécurité, les messages d'activité, messages de service, etc. Au sein de chaque grande catégorie, elle peut être divisée en sous-catégories, par exemple, messages d'activité - promotions

Les sources de messages et les types de messages peuvent être orthogonaux, c'est-à-dire que la plateforme de bons de travail peut également avoir des messages d'activité ; la source du message peut également être un type de message, appelé "message produit"

送 发 发

R
CREATE TABLE `inbox_message` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `message_text_id` bigint(20) NOT NULL,
  `receiver_name` varchar(255) NOT NULL DEFAULT '',
  `read` tinyint(4) NOT NULL DEFAULT '0',
  `deleted` tinyint(4) NOT NULL DEFAULT '0',
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `inbox_message_receiver_name_deleted_read_id` (`receiver_name`,`deleted`,`read`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Table source du message

CREATE TABLE `inbox_module` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `code` varchar(128) NOT NULL DEFAULT '',
  `name` varchar(128) NOT NULL DEFAULT '',
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
E

6, conception de l'API

Envoyer une lettre à la station : Post/V1 /Message

request Body Content-Type : Application/ json

{
    "title": "工单审批",
    "content": "XXX提交了变更申请,请审批",
    "to": "sunzhongyuan,shenli,wangya",
    "module_name": "工单平台",
    "link": "xxx"
}
response

{
    "code": 200,
    "data": 32,
    "msg": "OK"
}

Obtenir la liste des messages sur site : GET /v1/message User-Id : xxx

http://127.0.0.1:10085/v1/message?query=message_text_id.module_id.name:xxx&limit=1
{
    "code": 200,
    "data": {
        "data": [
            {
                "id": 1,
                "message_text": {
                    "id": 1,
                    "title": "title 2",
                    "content": "content 2",
                    "create_time": "2018-01-12 11:13:48",
                    "update_time": "2018-01-12 11:13:48",
                    "send_type": 1,
                    "creator_name": "sysadmin",
                    "deleted": 0,
                    "link": "xxx",
                    "Messages": null,
                    "module": {
                        "id": 4,
                        "code": "secure",
                        "name": "xxx",
                        "create_time": "2018-01-11 15:38:01",
                        "update_time": "2018-01-11 15:38:01",
                        "MessageTexts": null
                    }
                },
                "receiver_name": "xxx",
                "read": 0,
                "deleted": 0,
                "create_time": "2018-01-12 11:13:48",
                "update_time": "2018-01-12 11:13:48"
            }
        ],
        "total": 2
    },
    "msg": "OK"
}

read, Lecture par lots de messages sur site : PUT /v1/read_messages/:messageIds

response

{
    "code": 200,
    "data": "OK",
    "msg": "OK"
}

All read PUT : /v1/read_all_messages

response Comme ci-dessus

Supprimer et supprimer le site par lots messages : PUT /v1/delete_messages/:messageIds

response Comme ci-dessus

Supprimer tous les messages du site : PUT /v1/delete_all_messages

response Comme ci-dessus

Obtenez la liste des sources des messages : GET /v1/module

response

{
    "code": 200,
    "data": [
        {
            "id": 1,
            "code": "worksheet",
            "name": "工单平台",
            "create_time": "2018-01-11 15:21:38",
            "update_time": "2018-01-11 15:21:38",
            "MessageTexts": null
        },
        {
            "id": 2,
            "code": "cmdb",
            "name": "资源管理",
            "create_time": "2018-01-11 15:22:28",
            "update_time": "2018-01-11 15:22:28",
            "MessageTexts": null
        },
        ...
    ],
    "msg": "OK"
}

7. Notes sur les tests

1 Envoyer un message du site

    Interface pure
  • Les utilisateurs destinataires sont séparés par com mas, l'authenticité n'est pas vérifiée
  • Les utilisateurs destinataires ont une vérification de longueur, 50 octets
  • contenu du titre Il y a une vérification de longueur, qui est respectivement de 45 et 150 octets
  • module_name est une liste, vous devez en choisir une ici
  • 2 D'autres interfaces peuvent être testées via la page front-end

8. Optimisation

    La liste non lue peut être affichée en gras, tandis que la liste lue est dans des polices normales
  • Catégories les messages sur le site et les étiquete avec différentes latitudes pour faciliter le filtrage, la recherche et le blocage
  • Les utilisateurs peuvent configurer pour autoriser la réception de la source du message du site
  • L'administrateur peut ajouter, supprimer, modifier et vérifier l'ensemble du site messages, personnel du site et attributs de message à l'échelle du site, tels que l'annulation d'un message du site afin que personne ne puisse le voir
  • Les membres de la direction peuvent compter le nombre de messages envoyés sur le site, l'utilisation de chaque produit, la proportion des messages lus, l'heure à laquelle les messages ont été lus, la façon dont les messages ont été lus (clic pour ouvrir ou opération par lots), etc.

9. coin supérieur droit

1 Cliquez sur l'icône pour afficher les N derniers messages non lus

Afficher la liste déroulante

    Obtenez les N derniers messages non lus en temps réel
  • N peut être 5~10, la valeur spécifique dépend de la limite de hauteur de la liste déroulante
  • Lorsque la lecture non lue est inférieure à N, la liste déroulante peut s'adapter à la hauteur
  • S'il n'y a pas de messages non lus, elle le fera afficher "Aucun nouveau message pour l'instant" "
  • Arrêtez l'interface pour obtenir le nombre de messages non lus toutes les 10 secondes
  • 2 Dans la liste déroulante, la source du message, l'heure (par rapport à l'heure actuelle : il y a 10 minutes), titre

Bas Faites glisser la liste déroulante pour afficher plus de messages non lus (obtenez uniquement l'identifiant plus petit que l'identifiant minimum dans la liste des messages affichés, c'est-à-dire ne recevez pas de nouveaux messages après avoir cliqué sur le icône)

  • 3 Cliquez sur un message dans la liste déroulante

La liste déroulante ne disparaît pas

    Arrête toujours l'interface pour obtenir le nombre de messages non lus toutes les 10 secondes
  • Le nombre de messages non lus est réduit de 1
  • La liste des messages non lus supprime le message actuel (tranche)
  • Afficher la boîte contextuelle
  • 4 La boîte contextuelle affiche la source , heure (heure absolue), titre, contenu du message

  • 5 Fermez la boîte pop-up ou cliquez sur le pourtour :

La boîte pop-up disparaît

    Déroulez La boîte ne disparaît pas
  • Vous pouvez continuer à cliquer sur un message non lu
  • 6 Cliquez à nouveau sur la liste déroulante et sur le pourtour de l'icône

La liste déroulante disparaît

    Effacer les messages non lus existants liste de messages
  • Restaurez l'interface pour obtenir le nombre de messages non lus toutes les 10 secondes
  • 7 Cliquez à nouveau sur l'icône pour revenir à l'état n°1

Le comportement de l'icône d'Alibaba Cloud est :

  1. Le nombre de messages non lus ne sera demandé qu'une seule fois lors du rafraîchissement de la page, et ensuite il ne sera pas rafraîchi régulièrement (bien sûr, il se peut que le temps de rafraîchissement l'intervalle est relativement long et il n'est pas trouvé ; ou il peut être utilisé par socket, un lien long est établi)

  2. icône de survol, qui est une liste déroulante qui affiche les messages non lus

  3. Cliquez sur l'icône pour entrer la page de gestion des messages du site, la valeur par défaut est "messages non lus"

4 Cliquez sur le message non lu et ouvrez un nouvel onglet pour afficher les détails du message (page de détail). Le contenu de l'onglet d'origine reste inchangé. , c'est-à-dire qu'il n'y a pas de message non lu moins un, et le message sur lequel vous venez de cliquer n'est pas supprimé de la liste déroulante

5 Jusqu'à 5 messages peuvent être affichés Tant que la page n'est pas actualisée, elle le sera. soyez toujours ces 5 messages

6 Il n'y a pas de fonction de défilement supplémentaire, seulement afficher plus, cliquez pour accéder à la page de gestion des messages du site, la valeur par défaut est "messages non lus"

La différence entre
  • et cliquer sur l'icône est : cliquer sur le L'icône passera directement à la page de gestion des messages du site. Cliquer sur "Afficher plus" créera un nouvel onglet

7 Il y a un bouton supplémentaire "Gestion de l'acceptation des messages". Actuellement, la page passe à la page de gestion des messages du site, mais le la valeur par défaut est "Gestion de base de la réception"

Masquer la barre de progression du navigateur

L'interface permettant d'obtenir le nombre de messages non lus toutes les 10 secondes déclenchera l'affichage de la barre de progression par le navigateur, ce qui distrait l'attention de l'utilisateur, la barre de progression doit être masquée.

Les autres comportements d'actualisation de la page ne sont pas affectés.

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