博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WeCenter 学习笔记--私信功能
阅读量:5740 次
发布时间:2019-06-18

本文共 3639 字,大约阅读时间需要 12 分钟。

WeCenter 学习笔记--私信功能

数据表情况

  • 说明
    1. 数据表分为两个:一个是inbox_dialog用于存放会话,另一个是inbox用于存放两人的聊天信息
    2. inbox_dialog 主要用来确定一个会话。
      首先,通过sender_uid与recipient_uid用于确定发件人与收件人;
      然后,还要记录一下sender_count和recipient_count,以及sender_unread和recipient_unread数目;
      最后,add_time和update_time记录时间。
    3. inbox表主要用来记录具体的会话信息。
      首先,通过dialog_id以及uid(记录发送方的uid)来确定会话的信息;
      然后,通过add_time对会话信息message进行排序,然后传给前台;
      最后,通过sender_remove和recipient_remove记录用户是否删除信息。
      另外,通过receipt存放查看时间
  • 截图
    inbox_dialoginbox

代码

  • 发送私信接口
    • 分析
      1. 主要分为两种情况:一种是会话不存在,建立会话;另一种是会话存在,直接找到该会话。
      2. 然后根据inbox_dialog的id,向inbox表中插入聊天信息。
      3. 最后,更新一下未读信息数目。
      4. 在发送之前需要判断:message不能为空 接受私信的用户要存在 接受用户不能为自己 不能给禁止接受的人发送
    • 代码
public function send_message($sender_uid, $recipient_uid, $message)    {
if (!$sender_uid OR !$recipient_uid OR !$message) { return false; } if (! $inbox_dialog = $this->get_dialog_by_user($sender_uid, $recipient_uid)) { $inbox_dialog_id = $this->insert('inbox_dialog', array( 'sender_uid' => $sender_uid, 'sender_unread' => 0, 'recipient_uid' => $recipient_uid, 'recipient_unread' => 0, 'add_time' => time(), 'update_time' => time(), 'sender_count' => 0, 'recipient_count' => 0 )); } else { $inbox_dialog_id = $inbox_dialog['id']; } $message_id = $this->insert('inbox', array( 'dialog_id' => $inbox_dialog_id, 'message' => htmlspecialchars($message), 'add_time' => time(), 'uid' => $sender_uid )); $this->update_dialog_count($inbox_dialog_id, $sender_uid); $this->model('account')->update_inbox_unread($recipient_uid); //$this->model('account')->update_inbox_unread($sender_uid); if ($user_info = $this->model('account')->get_user_info_by_uid($sender_uid)) { $this->model('email')->action_email('NEW_MESSAGE', $recipient_uid, get_js_url('/inbox/'), array( 'user_name' => $user_info['user_name'], )); } return $message_id; }
public function send_action()    {        if (trim($_POST['message']) == '')        {            H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('请输入私信内容')));        }        if (!$recipient_user = $this->model('account')->get_user_info_by_username($_POST['recipient']))        {            H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('接收私信的用户不存在')));        }        if ($recipient_user['uid'] == $this->user_id)        {            H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('不能给自己发私信')));        }        if ($recipient_user['inbox_recv'])        {            if (! $this->model('message')->check_permission($recipient_user['uid'], $this->user_id))            {                H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('对方设置了只有 Ta 关注的人才能给 Ta 发送私信')));            }        }        // !注: 来路检测后面不能再放报错提示        if (!valid_post_hash($_POST['post_hash']))        {            H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('页面停留时间过长,或内容已提交,请刷新页面')));        }        $this->model('message')->send_message($this->user_id, $recipient_user['uid'], $_POST['message']);        if ($_POST['return_url'])        {            $rsm = array(                'url' => get_js_url(strip_tags($_POST['return_url']))            );        }        else        {            $rsm = array(                'url' => get_js_url('/inbox/')            );        }        H::ajax_json_output(AWS_APP::RSM($rsm, 1, null));    }
  • 私信列表接口
    • 分析
      1. 1.
    • 代码
  • 原文地址http://www.bieryun.com/2584.html
你可能感兴趣的文章
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
htm5新特性(转)
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>
SRE工程师到底是做什么的?
查看>>
解读:Red Hat为什么收购Ansible
查看>>
PHP json_encode() 函数介绍
查看>>
js动态设置元素高度
查看>>
Ossim下的安全合规管理
查看>>