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 auf der Site in PHP

藏色散人
藏色散人Original
2021-09-10 10:28:593169Durchsuche

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.

So implementieren Sie die Funktion für private Nachrichten auf der Site in PHP

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.

  1. Mit anderen Worten, Vor-Ort-Nachrichten sind nicht der erste Zugang, und die Echtzeitnatur von Vor-Ort-Nachrichten ist nicht von großer Bedeutung.

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

  1. Dann können Sie entweder auf die dafür vorgesehene Seite gehen, indem Sie nach einem Link/einer Ticketnummer fragen

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

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

  • 6 Administratorseite:

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

    1. Rufen Sie das Untermodul auf, um Site-Nachrichten einzufügen, die an die gesamte Site oder die Benutzergruppe, der ich angehöre, gesendet werden

    2. Nummer zurückgeben

    Batch-Lesen

    1. Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört

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

    Batch-Löschen

    1. Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört

    2. Gelöscht in der Tabelle „inbox_message“ auf 1 setzen, update_time ändern

    Alles löschen

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

    5. Datenbankdesign

    In-Site-Nachrichteninhaltstabelle

    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

    request Body Content-Type: Application/ json
    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;

    response

    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

    response

    http://127.0.0.1:10085/v1/message?query=message_text_id.module_id.name:xxx&limit=1
    Alle gelesenen PUT: /v1/read_all_messages

    response Wie oben

    .

    Löschen E- und Batch-Löschen von Site-Nachrichten: PUT / v1/delete_messages/:messageIds

    response Das Gleiche wie oben

    Alle Site-Nachrichten löschen: PUT /v1/delete_all_messages

    response Das Gleiche wie oben

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

    Titelinhalt Es gibt eine Längenüberprüfung, die 45 bzw. 150 Bytes beträgt

    • Modulname ist eine Liste, Sie müssen hier eine auswählen

    • 2 Andere Schnittstellen können sein Getestet über die Frontend-Seite

    • 8. Optimierung

    • Die ungelesene Liste kann in Fettschrift angezeigt werden, während die gelesene Liste in normalen Schriftarten angezeigt wird
    • Kategorisiert die Nachrichten auf der Website und beschriftet sie mit unterschiedlichen Breiten, um das Filtern, Suchen und Blockieren zu erleichtern

    Benutzer können den Empfang der Quelle der Site-Nachricht zulassen

    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

    • Management-Mitglieder können die Anzahl der auf der Site gesendeten Nachrichten, die Nutzung jedes Produkts und den Anteil der gelesenen Nachrichten zählen , die Zeit, zu der die Nachrichten gelesen wurden, die Art und Weise, wie die Nachrichten gelesen wurden (zum Öffnen klicken oder Batch-Vorgang) usw

      1 Klicken Sie auf das Symbol, um die neuesten N ungelesenen Nachrichten anzuzeigen.
    • Dropdown-Feld anzeigen über die Höhenbeschränkung des Dropdown-Felds
    • Wenn der ungelesene Messwert kleiner als N ist, kann sich das Dropdown-Feld an die Höhe anpassen
    • Wenn keine ungelesenen Nachrichten vorhanden sind, wird „Keine neuen“ angezeigt Noch Nachrichten" ), Titel
    • Nach unten schieben Sie das Dropdown-Feld, um mehr ungelesene Nachrichten anzuzeigen (erhalten Sie nur die ID, die kleiner als die Mindest-ID in der angezeigten Nachrichtenliste ist, d. h. Sie erhalten keine neuen Nachrichten, nachdem Sie auf das Symbol geklickt haben)

    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 Sekunden
    • Die Zahl Anzahl der ungelesenen Nachrichten wird um 1 reduziert.
    • Die Liste der ungelesenen Nachrichten löscht die aktuelle Nachricht (Slice). Uhrzeit), Titel, Inhalt der Nachricht Sie können weiterhin auf eine ungelesene Nachricht klicken.
    • 6 Klicken Sie erneut auf das Dropdown-Feld und den Rand des Symbols

      Stellen Sie die Schnittstelle wieder her, um alle 10 Sekunden die Anzahl der ungelesenen Nachrichten abzurufen
    • 7 Klicken Sie erneut auf das Symbol, um zum Status Nr. 1 zurückzukehren

    • Das Symbolverhalten von Alibaba Cloud ist:

    1. 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“

    2. 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 zwischen

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

      Andere Verhaltensweisen beim Aktualisieren der Seite sind davon nicht betroffen.

    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!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn