Maison >développement back-end >Problème PHP >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 : 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.
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.
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.
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
Ensuite, vous pouvez soit vous rendre sur la page désignée en demandant un lien/numéro de facture
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
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
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
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
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
Renvoyer le numéro
Batch read
Vérifier si le messageId appartient à l'utilisateur actuel
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
Vérifiez si le messageId appartient à l'utilisateur actuel
Définissez supprimé à 1 dans la table inbox_message, modifiez update_time
update inbox_message set “deleted”=1, “update_time”=now where “receiver_name”=currentUser() and “deleted” = 0
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"
送 发 发
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;
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
{
"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" }
{
"code": 200,
"data": "OK",
"msg": "OK"
}
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
8. Optimisation
1 Cliquez sur l'icône pour afficher les N derniers messages non lus
Afficher la liste déroulante
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
4 La boîte contextuelle affiche la source , heure (heure absolue), titre, contenu du message
La boîte pop-up disparaît
6 Cliquez à nouveau sur la liste déroulante et sur le pourtour de l'icône
La liste déroulante disparaît
7 Cliquez à nouveau sur l'icône pour revenir à l'état n°1
Le comportement de l'icône d'Alibaba Cloud est :
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)
icône de survol, qui est une liste déroulante qui affiche les messages non lus
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 entreet 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!