Heim > Artikel > Backend-Entwicklung > So implementieren Sie die Funktion für private Nachrichten auf der Site in PHP
So implementieren Sie die Funktion für private Nachrichten in der Site in PHP: 1. Lesen Sie den Anforderungstext der POST-Anfrage. 2. Rufen Sie das Untermodul auf, um die Site-Nachricht einzufügen, die an die gesamte Site oder die Benutzergruppe, zu der sie gehört, gesendet wird 3. Ermitteln Sie die Anzahl der ungelesenen Site-Nachrichten. 4. Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört. 5. Implementieren Sie einfach die Stapellöschung.
Die Betriebsumgebung dieses Artikels: Windows7-System, PHP7.1-Version, DELL G3-Computer
Wie implementiert PHP die Funktion für private Nachrichten auf der Website?
PHP-Implementierung von Ideen und Lösungen für das Design von Site-Nachrichten
1. Hintergrund
Wenn Benutzer der Betriebs- und Wartungsplattform derzeit kommunizieren, verlassen sie sich derzeit mehr auf WeChat und E-Mail-Benachrichtigungen, während die Betriebs- und Wartungsplattform Als Ganzes benötigt das Produkt auch einen Dienst, der die interne Kommunikation durchführen kann – Intra-Site-Messaging.
Der Designton von On-Site-Nachrichten
Der Designton von On-Site-Nachrichten hängt davon ab, wie Benutzer On-Site-Nachrichten verwenden:
Benutzer halten sich nicht an die Betriebs- und Wartungsplattform Seite, warten Sie auf Nachrichtenbenachrichtigungen und sehen Sie sich den Nachrichteninhalt an, und springen Sie dann zu der Seite, die Sie bedienen möchten.
Mit anderen Worten, Vor-Ort-Nachrichten sind nicht der erste Zugang, und die Echtzeitnatur von Vor-Ort-Nachrichten ist nicht von großer Bedeutung.
Im Gegensatz zu vielen Social-Networking-Sites (Facebook, Zhihu, Weibo usw.) bleiben Benutzer auf der Hauptseite der Social-Networking-Site, aktualisieren ständig neue Inhalte und prüfen neue Nachrichten (hauptsächlich persönliche private Nachrichten anderer Personen). (Antworten usw.) Es ist definitiv nicht erforderlich, die Systembenachrichtigungsnachricht zu überprüfen.)
Der Benutzer entscheidet anhand der E-Mail-Benachrichtigung, ob er die Betriebs- und Wartungsplattform für den Betrieb betritt.
Wenn es besonders viele gibt B. E-Mails, gibt es mehrere Arbeitsaufträge, die vom Benutzer gleichzeitig bearbeitet werden müssen. Benutzer führen alle Arbeiten auch auf der Seite „Meine Aufgaben“ durch, die von der Arbeitsauftragsplattform bereitgestellt wird.
Wenn die E-Mail versehentlich gelöscht wird und kein E-Mail-Link vorhanden ist, um direkt auf das zu bedienende Modul zuzugreifen
Dann können Sie entweder auf die dafür vorgesehene Seite gehen, indem Sie nach einem Link/einer Ticketnummer fragen
oder fahren Sie direkt im entsprechenden Modul „Suche“ fort
Die obigen Beschreibungen bedeuten, dass Benutzer grundsätzlich keine On-Site-Nachrichten verwenden. Unter welchen Umständen werden sie On-Site-Nachrichten verwenden?
Senden Sie keine E-Mails, sondern nur Nachrichtenbenachrichtigungen für standortinterne Nachrichten, z. B. standortweite Benachrichtigungen, Bearbeitungsvorgänge, Kommentarvorgänge usw.
Wenn für ein bestimmtes Modul kein detaillierter Vorgangsdatensatz vorhanden ist, Sie können die Häufigkeit des Auftretens von standortinternen Nachrichten überprüfen
Derzeit gibt es nur Benachrichtigungen zu Produktneuigkeiten und die Anzeige von Nachrichten wird in Zukunft nicht kategorisiert und aggregiert, wenn Sie Benachrichtigungen, Erwähnungen, Likes und Kommentare auf der gesamten Website hinzufügen und andere Arten von In-Site-Nachrichten müssen Sie darüber nachdenken, Nachrichten nach Typ zu aggregieren.
2. Beschreibung der Anforderungen
In-Site-Nachrichten müssen normalerweise zwei Anforderungen erfüllen:
In-Site-Nachrichten von Benutzern an Benutzer und In-Site-Nachrichten von Administratoren an Benutzer : Das heißt, Eins-zu-Eins-Senden
Vor-Ort-Nachrichten des Administrators an mehrere Benutzer, Benutzergruppen und die gesamte Site: Das heißt, Eins-zu-Viele-Senden
(Es gibt auch eine In -Site-Nachricht von Benutzern zu Produkten, z. B. Feedback und Fragen zu einem bestimmten Modul usw.)
Unsere aktuellen Anforderungen sind:
1 Der Administrator sendet Intra-Site-Nachrichten an mehrere Benutzer
Keine Überprüfung der Benutzerauthentizität
Begrenzen Sie die Titellänge und die Inhaltslänge (jeweils 45 Bytes, 150 Bytes, entsprechend 15 und 50 chinesischen Schriftzeichen)
Begrenzen Sie die Pinyin-Länge des Empfängers (maximal 50 Bytes)
[Empfohlenes Lernen: „PHP-Video Tutorial"]
2 Benutzer können ihre eigenen Site-Nachrichten anzeigen
Filtern nach „Alle, Gelesen, Ungelesen"
Kategorisiert nach Nachrichtenquelle: Arbeitsauftragsplattform, Ressourcenverwaltung, automatische Installation, Schwachstellenplattform, Fehlerplattform. . .
3 Benutzer können Site-Nachrichten löschen, stapelweise löschen
4 Benutzer können alle Site-Nachrichten lesen, stapelweise lesen und als gelesen markieren
5 Das Nachrichtensymbol oben auf der Seite der Betriebs- und Wartungsplattform
zeigt ungelesene Nachrichten an. Die Anzahl der Nachrichten. Wenn sie 99 überschreitet, werden 99+ angezeigt. „Quelle“, „Titel“)
Dropdown-Feld Es gibt zwei Schaltflächen unten: „Mehr“, um weitere ungelesene Nachrichten zu laden; „Alle anzeigen“, um zur Seite mit der Nachrichtenliste der Website zu springen (am besten Öffnen Sie ein anderes Fenster)
Klicken Sie auf die ungelesenen Nachrichten im Dropdown-Feld, zeigen Sie Details über ein Popup-Feld an, löschen Sie dann den Datensatz in der ungelesenen Liste, markieren Sie ihn in der Datenbank als gelesen und geben Sie die Anzahl der Nachrichten an Ungelesene Nachrichten im Nachrichtensymbol werden um eins reduziert
Benutzer aktualisieren
Nachricht löschen
Statistiken
Modul hinzufügen
Site-Nachrichtentyp hinzufügen
Site-weite Nachricht senden
4. Systemprozess
Holen Sie sich die Liste von Site-Nachrichten
Rufen Sie das Untermodul auf, um Site-Nachrichten einzufügen, die an die gesamte Site oder die Benutzergruppe, der ich angehöre, gesendet werden
Datenbankdaten basierend auf Abfragebedingungen zurückgeben
Anzahl ungelesener Site-Nachrichten abrufen
Rufen Sie das Untermodul auf, um Site-Nachrichten einzufügen, die an die gesamte Site oder die Benutzergruppe, der ich angehöre, gesendet werden
Nummer zurückgeben
Batch-Lesen
Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört
Lesen in der Tabelle „inbox_message“ auf 1 setzen, Update-Zeit ändern
Alles gelesen
update inbox_message set “read”=1, “update_time”=now where “receiver_name”=currentUser() and “read” = 0
Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört
Gelöscht in der Tabelle „inbox_message“ auf 1 setzen, update_time ändern
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;
Zusätzlich zur Nachrichtenquelle (Modulname) verfügt die On-Site-Nachricht selbst auch über eine Dimensionsbeschreibung namens Nachrichtentyp (Message_type), z. B. Sicherheitsnachrichten, Aktivitätsnachrichten, Servicemeldungen usw. Innerhalb jeder Hauptkategorie kann sie in Unterkategorien unterteilt werden, zum Beispiel Aktivitätsmeldungen – Werbeaktionen
Nachrichtenquellen und Nachrichtentypen können orthogonal sein, das heißt, die Arbeitsauftragsplattform kann auch Aktivitätsmeldungen enthalten; Die Nachrichtenquelle kann auch ein Nachrichtentyp sein, der als „Produktnachricht“ bezeichnet wird /Message
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;Liste der Site-Nachrichten abrufen: GET /v1/message Benutzer-ID: xxx
{ "title": "工单审批", "content": "XXX提交了变更申请,请审批", "to": "sunzhongyuan,shenli,wangya", "module_name": "工单平台", "link": "xxx" }
{ "code": 200, "data": 32, "msg": "OK" }Lesen, Stapellesen Site-Nachrichten: PUT /v1/read_messages/:messageIds
http://127.0.0.1:10085/v1/message?query=message_text_id.module_id.name:xxx&limit=1Alle gelesenen PUT: /v1/read_all_messages response Wie oben
Alle Site-Nachrichten löschen: PUT /v1/delete_all_messages
response Das Gleiche wie obenGet die Nachrichtenquellenliste: GET /v1/ Modul
Antwort
{ "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" }
7. Hinweise zum Testen
1 Site-Nachricht senden
Reine Schnittstelle
Empfängerbenutzer werden durch Kommas getrennt, Authentizität nicht verifiziert
Empfängerbenutzer haben eine Längenüberprüfung, 50 BytesTitelinhalt Es gibt eine Längenüberprüfung, die 45 bzw. 150 Bytes beträgt
8. Optimierung
Der Administrator kann die Site-weiten Nachrichten und das Site-Personal hinzufügen, löschen, ändern und überprüfen und Site-weite Nachrichtenattribute, wie z. B. das Abbrechen einer Site-Nachricht, damit niemand sie sehen kann
3 Klicken Sie auf eine Nachricht im Dropdown-Feld
Das Dropdown-Feld verschwindet nicht
Trotzdem stoppt die Schnittstelle zum Abrufen der Anzahl ungelesener Nachrichten alle 10 SekundenDas Symbolverhalten von Alibaba Cloud ist:
Die Anzahl der ungelesenen Nachrichten wird beim Aktualisieren der Seite nur einmal abgefragt und dann nicht regelmäßig aktualisiert (natürlich kann es sein, dass die Aktualisierungszeit abgelaufen ist). Das Intervall ist relativ lang und wird nicht gefunden. Oder es wird ein Socket verwendet. Es wird ein langer Link hergestellt Auf der Nachrichtenverwaltungsseite der Website ist die Standardeinstellung „Ungelesene Nachrichten“
4 Klicken Sie auf die ungelesene Nachricht und öffnen Sie einen neuen Tab, um die Details der Nachricht anzuzeigen (Detailseite). Der ursprüngliche Tab-Inhalt bleibt unverändert , das heißt, es gibt keine ungelesene Nachricht minus eins und die gerade angeklickte Nachricht wird nicht aus dem Dropdown-Feld gelöscht
5 Es können bis zu 5 Nachrichten angezeigt werden, solange die Seite nicht aktualisiert wird Seien Sie immer diese 5 Nachrichten
6 Es gibt keine Funktion zum Scrollen mehr, nur mehr anzeigen, klicken Sie, um die Nachrichtenverwaltungsseite der Site aufzurufen, die Standardeinstellung ist „Ungelesene Nachrichten“
Der Unterschied zwischenund dem Klicken auf das Symbol ist: Klicken auf Das Symbol springt von der aktuellen Seite direkt zur Site-Nachrichtenverwaltungsseite und durch Klicken auf „Mehr anzeigen“ wird ein neuer Tab erstellt.
7 Es gibt eine zusätzliche Schaltfläche „Nachrichtenannahmeverwaltung“. Derzeit springt die Seite zur Site-Nachrichtenverwaltung Seite, aber die Standardeinstellung ist „Basic Reception Management“. Um die Aufmerksamkeit des Benutzers abzulenken, sollte der Fortschrittsbalken ausgeblendet werden.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Funktion für private Nachrichten auf der Site in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!