サイトにプライベート メッセージ機能を実装する
php メソッド: 1. POST リクエストのリクエスト本文を読み取ります; 2. サブモジュールを呼び出し、サイト全体またはユーザー グループに送信されるサイト メッセージを挿入します。に属しています; 3. 未読のサイトメッセージ数量を取得します; 4. messageId が現在のユーザーに属しているかどうかを確認します; 5. 一括削除を実現します。
この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
php はどのように実現しますか?サイトのプライベートメッセージ機能?
サイト メッセージ デザインのアイデアと計画の PHP 実装
1. 背景
現在使用している操作と計画メンテナンス プラットフォーム ユーザーは通信する際、WeChat や電子メール通知に依存することが多く、製品全体として、運用およびメンテナンス プラットフォームには内部コミュニケーション (サイト内メッセージング) を実行できるサービスも必要です。
オンサイト メッセージのデザイン トーン
オンサイト メッセージのデザイン トーンは、次によって異なります。ユーザーがオンサイト メッセージをどのように使用するか:
ユーザーは、運用および保守プラットフォームのページに固執せず、メッセージ通知を待ってメッセージの内容を表示し、その後、目的のページにジャンプします。操作される。
#言い換えれば、オンサイト メッセージは最初のエントリ ポイントではなく、オンサイト メッセージのリアルタイム性は重要ではありません。
多くのソーシャル ネットワーキング サイト (Facebook、Zhihu、Weibo など) とは異なり、ユーザーはソーシャル ネットワーキング サイトのメイン ページに留まり、常に新しいコンテンツを更新し、コンテンツをチェックします。新しいメッセージを同時に送信 (主に個人のプライベート メッセージ、他の人の返信などは、システム通知メッセージを確認することを目的としたものではありません)
ユーザーは、新しいメッセージを送信するかどうかを決定します。
多数の電子メールがある場合、たとえば、ユーザーが現場で処理する必要がある作業指示書が複数ある場合は、電子メール通知に基づいて運用および保守プラットフォームにアクセスします。同時に、ユーザーは作業指示プラットフォームが提供する「My To Do」ページですべての作業を実行します。
メールを誤って削除し、操作対象のモジュールに直接入るメールリンクがない場合
その後、「リンク/注文番号で指定したページに移動します」を要求することができます
または関連するモジュールを直接検索します
上記の記述では、ユーザーは基本的にオンサイトメッセージを利用しないことになりますが、どのような状況でオンサイトメッセージを利用するのでしょうか?
2. 要件の説明
タイトルの長さとコンテンツの長さを制限します (それぞれ 45 バイトと 150 バイト、中国語の 15 文字と 50 文字に相当します) 受信者のピンインの長さを制限します (最大 50 バイトの長さ) [推奨学習: 「
PHP ビデオ チュートリアル 」]
2 ユーザーは自分のサイト情報を表示できます 「すべて」をクリックします、既読、未読」フィルターメッセージ ソースごとに分類: 作業指示書プラットフォーム、リソース管理、自動インストール、脆弱性プラットフォーム、障害プラットフォーム。 。 。 3 ユーザーはサイト メッセージを削除および一括削除できます4 ユーザーはすべてのサイト メッセージを読み取り、一括読み取りし、既読としてマークすることができます 5運用保守プラットフォームページ上部のメッセージアイコン#ドロップダウン ボックスの下部には 2 つのボタンがあります: [詳細]、未読メッセージをさらに読み込む、[すべて表示] でサイトのメッセージ リスト ページにジャンプします (別のウィンドウを開くことをお勧めします)
統計モジュールの追加サイト メッセージ タイプの追加サイト全体のメッセージの送信#4. システム プロセス
サイト全体のメッセージを送信する
#POST リクエストのリクエスト本文を読むupdate inbox_message set “read”=1, “update_time”=now where “receiver_name”=currentUser() and “read” = 0
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;
messages ソースとメッセージ タイプは直交することができます。つまり、作業指示プラットフォームはアクティブなメッセージを持つこともできます。メッセージ ソースはメッセージのタイプであることもできます。 「製品メッセージ」と呼ばれる
社内メッセージ送信フォーム
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;
{
"title": "工单审批",
"content": "XXX提交了变更申请,请审批",
"to": "sunzhongyuan,shenli,wangya",
"module_name": "工单平台",
"link": "xxx"
}
{ "code": 200, "data": 32, "msg": "OK" }
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"
}
応答 上記と同じ
#サイト メッセージの削除と一括削除: PUT /v1/delete_messages/:messageIdsresponse 同上
サイトメッセージをすべて削除: PUT /v1/delete_all_messages
response 同上
メッセージ ソース リストを取得します: 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" }
1 サイトメッセージの送信
純粋なインターフェイス
受信ユーザーは次のように区切られます。カンマが含まれており、信頼性は検証されません。
受信ユーザーは長さチェック、50 バイトです。
タイトル コンテンツには長さチェックがあり、それぞれ 45 バイトと150 バイト
module_name はリストです。ここから 1 つ選択する必要があります
2 他のインターフェイスはフロントエンド ページを通じてテストできます
未読リストを太字で表示し、既読リストを太字で表示できます。通常のフォント
サイト上のメッセージを分類し、さまざまな緯度でラベルを付けると、フィルタリング、検索、ブロックに便利です
ユーザーは設定できます受信が許可されているサイト メッセージのメッセージ ソース
右上隅のアイコンの動作
1 アイコンをクリックすると、最新の N 件の未読メッセージが表示されます[ドロップダウン ボックスを表示]
2 ドロップダウン ボックスに、メッセージ ソース、時刻 (現在時刻からの相対値: 10 分前)、タイトル
ドロップダウン ボックスを下にスライドすると、さらに多くの未読メッセージが表示されます (表示されたメッセージ リストの最小 ID 未満の ID のみを取得します。つまり、アイコンをクリックした後に来る新しいメッセージは取得されません)
3 ドロップダウン ボックス内のメッセージをクリックします
ドロップダウン ボックスは消えません
減少します
#未読メッセージ リストは現在のメッセージ (スライス) を削除します。#ポップアップ ボックスを表示します
Alibaba Cloud のアイコンの動作は次のとおりです:
#未読メッセージの数は、ページが更新されたときに 1 回だけ要求され、その後は要求されません。その後は定期的に更新されます (もちろん、それも可能です。更新間隔が比較的長いためですが、見つかりませんでした。あるいは、長いリンクを確立するためにソケット メソッドが使用された可能性があります)
未読メッセージを表示するドロップダウン ボックスであるホバー アイコン
アイコンをクリックして、サイトのメッセージ管理ページに入ります。デフォルトは「未読メッセージ」です。
4 未読メッセージをクリックして新しいタブを開き、メッセージの詳細(詳細ページ)を表示します。タブは変更されないままです、つまり、未読メッセージが 1 つも減っておらず、クリックしたばかりのメッセージがドロップダウン ボックスから削除されません
5 最大 5 つのメッセージが表示されます。ページは更新されないため、常にこれら 5 になります。
6 その他の機能をスクロールする必要はありません。詳細を表示するには、クリックしてサイトのメッセージ管理ページに入ります。デフォルトは「未読メッセージ」です
アイコンをクリックすることとアイコンをクリックすることの違いは次のとおりです。アイコンをクリックするとサイトメッセージ管理ページの現在のページに直接ジャンプしますが、「もっと見る」をクリックすると新しいタブ#が作成されます。
未読メッセージの数を 10 秒ごとに取得するインターフェイスにより、ブラウザがプログレス バーを表示します。ユーザーの注意をそらして、この進行状況バーを非表示にします。 ページを更新するその他の動作には影響しません。
以上がPHPでサイトにプライベートメッセージ機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。