PHP에서 사이트에 비공개 메시지 기능을 구현하는 방법: 1. POST 요청의 요청 본문을 읽습니다. 2. 하위 모듈을 호출하여 전체 사이트 또는 해당 사이트가 속한 사용자 그룹에 보낸 사이트 메시지를 삽입합니다. 3. 읽지 않은 사이트 메시지 수를 가져옵니다. 4. messageId가 현재 사용자에게 속하는지 확인합니다.
이 기사의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터
PHP는 사이트에서 개인 메시지 기능을 어떻게 구현합니까?
사이트 메시지 디자인 아이디어 및 솔루션의 PHP 구현
1. 배경
현재 운영 및 유지 관리 플랫폼 사용자는 통신할 때 WeChat 및 이메일 알림에 더 의존하는 반면, 운영 및 유지 관리 플랫폼은 전체적으로 제품에는 내부 통신(사이트 내 메시징)을 수행할 수 있는 서비스도 필요합니다.
온사이트 메시지의 디자인 톤
온사이트 메시지의 디자인 톤은 사용자가 사이트 메시지를 어떻게 사용하는지에 따라 다릅니다.
사용자는 작업 페이지에 집착하지 않습니다. 플랫폼 유지 관리, 메시지 알림 대기, 메시지 내용 보기 등을 수행한 후 조작하려는 페이지로 이동합니다.
즉, 현장 메시지는 첫 번째 입장이 아니며, 현장 메시지의 실시간 성격은 중요하지 않습니다.
많은 소셜 네트워킹 사이트(Facebook, Zhihu, Weibo 등)와는 달리 사용자는 소셜 네트워킹 사이트의 메인 페이지에 머무르며 지속적으로 새로운 콘텐츠를 새로 고치고 새 메시지(주로 개인 비공개 메시지, 다른 사람의 메시지)를 확인합니다. 답변 등) 시스템 알림 메시지를 확인하는 것은 절대 아닙니다)
이메일 알림을 기반으로 운영을 위한 운영 및 유지 관리 플랫폼에 들어갈지 여부는 사용자가 결정합니다
특히 많은 경우 예를 들어, 이메일에는 사용자가 동시에 처리해야 하는 여러 작업 주문이 있으며, 사용자는 작업 주문 플랫폼에서 제공하는 "내 할 일" 페이지에서 모든 작업을 수행합니다.
실수로 이메일을 삭제하고, 운영할 모듈에 바로 들어갈 수 있는 이메일 링크가 없는 경우
그런 다음 링크/티켓 번호를 요청하여 지정된 페이지로 이동하실 수 있습니다
또는 해당 모듈에서 바로 진행 검색
위의 설명은 사용자들이 기본적으로 현장 메시지를 사용하지 않는다는 의미인데, 어떤 상황에서 현장 메시지를 사용하게 될까요?
이메일은 보내지 마시고, 사이트 전체 알림, 편집 작업, 댓글 작업 등 사이트 내부 메시지에 대해서만 메시지 알림을 보내세요.
특정 모듈에 대한 자세한 작업 기록이 없는 경우, 사이트 내 메시지 발생 시간을 확인할 수 있습니다
현재는 상품 소식 알림만 있고, 앞으로 사이트 전체 알림, 멘션, 좋아요, 댓글 추가 시 메시지 표시가 분류 및 집계되지 않습니다. 및 기타 유형의 사이트 내 메시지의 경우 유형별로 메시지를 집계하는 것을 고려해야 합니다.
2. 요구 사항 설명
사이트 내 메시지는 일반적으로 두 가지 요구 사항을 해결해야 합니다.
사용자가 사용자에게 보내는 사이트 내 메시지 및 관리자가 사용자에게 보내는 사이트 내 메시지 : 즉, 일대일 보내기
관리자의 현장 메시지를 여러 사용자, 사용자 그룹 및 전체 사이트에 보내는 것입니다. 즉, 일대다 보내기
( -특정 모듈에 대한 피드백 및 질문과 같은 제품에 대한 사용자의 사이트 메시지 )
현재 요구 사항은 다음과 같습니다.
1 관리자가 여러 사용자에게 사이트 내 메시지를 보냅니다.
사용자 진위 여부를 확인하지 않습니다.
제목 길이 및 내용 길이 제한(각각 45바이트, 150바이트, 한자 15자 및 50자에 해당)
수신자의 병음 길이 제한(최대 50바이트)
[추천 학습: "PHP 비디오 Tutorial"]
2명의 사용자는 자신의 사이트 메시지를 볼 수 있습니다.
"모두, 읽음, 읽지 않음"으로 필터링
메시지 소스별로 분류: 작업 주문 플랫폼, 리소스 관리, 자동 설치, 취약성 플랫폼, 오류 플랫폼. . .
3 사용자는 사이트 메시지를 삭제하고 일괄 삭제할 수 있습니다.
4 사용자는 사이트 메시지를 읽고, 일괄적으로 읽고, 모든 사이트 메시지를 읽음으로 표시할 수 있습니다.
5 운영 및 유지 관리 플랫폼 페이지 상단의 메시지 아이콘
읽지 않은 메시지 표시 메시지 수, 99개를 초과하면 99+
표시됩니다. 마우스를 올려놓으면 마지막 10개의 읽지 않은 메시지를 보여주는 드롭다운 상자가 나타납니다("시간" 표시). , "원본", "제목")
드롭다운 상자 하단에는 두 개의 버튼이 있습니다. 읽지 않은 메시지를 더 로드하려면 "더보기"를, 사이트 메시지 목록 페이지로 이동하려면 "모두 보기"를 클릭하세요. 다른 창을 열려면)
드롭다운 상자에서 읽지 않은 메시지를 클릭하고 팝업 상자를 통해 세부 정보를 표시한 다음 읽지 않은 목록에서 기록을 삭제하고 데이터베이스에서 읽음으로 표시하고 숫자를 확인하세요. 메시지 아이콘의 읽지 않은 메시지 수가 1개 감소합니다.
6 관리자 페이지:
사용자 업데이트
메시지 삭제
통계
모듈 추가
사이트 메시지 유형 추가
사이트 전체 메시지 보내기
4. 시스템 프로세스
사이트 메시지 보내기
POST 요청의 요청 본문 읽기
확인 길이
데이터베이스에 삽입
반환
받기 사이트 메시지 목록
하위 모듈을 호출하여 사이트 전체 또는 내가 속한 사용자 그룹에 보내는 사이트 메시지를 삽입하세요
쿼리 조건에 따라 데이터베이스 데이터를 반환합니다
읽지 않은 사이트 메시지 수 가져오기
서브 모듈을 호출하여 전체 사이트 또는 내가 속한 사용자 그룹에 보낸 사이트 메시지를 삽입합니다
숫자 반환
일괄 읽기
messageId가 현재 사용자에게 속하는지 확인
inbox_message 테이블에서 읽기를 1로 설정하고 update_time
모두 읽었습니다
update inbox_message set “read”=1, “update_time”=now where “receiver_name”=currentUser() and “read” = 0
messageId가 현재 사용자에게 속하는지 확인
inbox_message 테이블에서 삭제를 1로 설정하고 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;
사이트 메시지 자체에는 메시지 소스(module_name) 외에도 보안 메시지, 활동 메시지 등 메시지 유형(message_type)이라는 차원 설명이 있습니다. 서비스 메시지 등 각 주요 카테고리 내에서 활동 메시지 - 프로모션
등의 하위 카테고리로 나눌 수 있습니다. 메시지 소스와 메시지 유형은 직교할 수 있습니다. 즉, 작업 주문 플랫폼에도 활동 메시지가 있을 수 있습니다. 메시지 소스는 "제품 메시지"라는 메시지 유형일 수도 있습니다.
送 发 发
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" }사이트 메시지 목록 가져오기: GET /v1/message 사용자 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 위와 동일
De Lete 및 일괄 삭제 사이트 메시지: PUT /v1/delete_messages/:messageIds
response 위와 동일
모든 사이트 메시지 삭제: 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"
}
7. 테스트 관련 참고 사항
1 사이트 메시지 보내기
8. 최적화
아이콘 동작 오른쪽 상단
1 최신 읽지 않은 메시지 N개를 표시하려면 아이콘을 클릭하세요.
2 드롭다운 상자에 메시지 소스, 시간(현재 기준) 시간: 10분 전), 제목
3 드롭다운 상자에서 메시지를 클릭하세요
4 팝업 상자는 다음을 표시합니다. 메시지의 출처, 시간(절대 시간), 제목, 내용
5 팝업 상자를 닫거나 주변을 클릭하세요:
6 드롭다운 상자와 아이콘 주변을 다시 클릭하세요
7 1번 상태로 돌아가려면 아이콘을 다시 클릭하세요
Alibaba Cloud의 아이콘 동작은 다음과 같습니다.
읽지 않은 메시지 수는 페이지를 새로 고칠 때 한 번만 요청되며 그 이후에는 정기적으로 새로 고쳐지지 않습니다(물론 새로 고침 시간이 다를 수 있음). 간격이 비교적 길어 찾을 수 없거나 소켓 방식을 사용하여 긴 링크를 설정할 수 있습니다.)
읽지 않은 메시지를 표시하는 드롭다운 상자인 마우스오버 아이콘
아이콘을 클릭하여 들어갑니다. 사이트 메시지 관리 페이지에서 기본값은 "읽지 않은 메시지"입니다.
4 읽지 않은 메시지를 클릭하고 새 탭을 열어 메시지 세부 정보(세부 정보 페이지)를 표시합니다. 원본 탭 내용은 변경되지 않습니다. 즉, 읽지 않은 메시지에서 1을 뺀 항목이 없으며, 방금 클릭한 메시지는 드롭다운 상자에서 삭제되지 않습니다
5 페이지를 새로 고치지 않는 한 최대 5개의 메시지가 표시될 수 있습니다. 항상 이 5개의 메시지가 있어야 합니다
6 추가 스크롤 기능은 없으며 더 보기만 가능합니다. 사이트 메시지 관리 페이지에 들어가려면 클릭하세요. 기본값은 "읽지 않은 메시지"입니다.
아이콘 클릭과 아이콘 클릭의 차이점은 다음과 같습니다. 아이콘은 현재 페이지에서 사이트 메시지 관리 페이지로 바로 이동합니다. "더보기"를 클릭하면 새 탭이 생성됩니다
7 현재 페이지는 사이트 메시지 관리 페이지로 이동합니다. , 그러나 기본값은 "기본 수신 관리"입니다.
브라우저 진행률 표시줄 숨기기
매 10초마다 읽지 않은 메시지 수를 가져오는 인터페이스는 브라우저에서 진행률 표시줄을 표시하도록 트리거하여 작업에 방해가 됩니다. 사용자의 주의를 끌기 위해서는 진행 표시줄을 숨겨야 합니다.
페이지 새로고침의 다른 동작은 영향을 받지 않습니다.
위 내용은 PHP로 사이트에서 개인 메시지 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!