Пример #1
0
 /**
  * 按用户ID发送私信
  * 
  * @param int $uid
  * @param string $content
  * @param int $fromUid
  * @return WindidError|boolean
  */
 public function sendMessageByUid($uid, $content, $fromUid = 0)
 {
     if (!$uid || !$fromUid) {
         return false;
     }
     if (!isset($this->_blackList[$uid])) {
         $this->_blackList[$uid] = $this->_getUserBlackDs()->getBlacklist($uid);
     }
     //生成新消息
     $dm = new WindidMessageDm();
     $dm->setCreatedUserId($fromUid)->setToUid($uid)->setContent($content);
     if (($result = $dm->beforeAdd()) instanceof WindidError) {
         return $result;
     }
     $messageId = $this->_getMessageDs()->addMessage($dm);
     $lastMessage = $this->_getLastMessage($fromUid, $uid, $content);
     //=========================发件人对话信息=========================
     $dm = new WindidMessageDm();
     $dm->setLastMessage($lastMessage);
     $dialog = $this->_getMessageDs()->getDialogByUid($fromUid, $uid);
     if ($dialog) {
         $dialogId = $dialog['dialog_id'];
         $dm->increaseMessageCount()->setModifiedTime(Windid::getTime());
         $this->_getMessageDs()->updateDialog($dialogId, $dm);
     } else {
         $dm->setToUid($fromUid)->setFromUid($uid)->setMessageCount(1);
         $dialogId = $this->_getMessageDs()->addDialog($dm);
     }
     //添加发件人联系
     $dm = new WindidMessageDm();
     $dm->setDialogId($dialogId)->setMessageId($messageId)->setIsRead(1)->setIsSend(1);
     $this->_getMessageDs()->addRelation($dm);
     $dm = new WindidMessageDm();
     $dm->setLastMessage($lastMessage);
     if (in_array($fromUid, $this->_blackList[$uid])) {
         return false;
     }
     //=========================收件人对话信息=========================
     $dialog = $this->_getMessageDs()->getDialogByUid($uid, $fromUid);
     // 分组已存在更新数量
     if ($dialog) {
         $dialogId = $dialog['dialog_id'];
         $dm->increaseUnreadCount()->increaseMessageCount()->setModifiedTime(Windid::getTime());
         $this->_getMessageDs()->updateDialog($dialogId, $dm);
     } else {
         // 分组不存在添加一条
         $dm->setToUid($uid)->setFromUid($fromUid)->setUnreadCount(1)->setMessageCount(1);
         //新增私信分组记录
         $dialogId = $this->_getMessageDs()->addDialog($dm);
     }
     //添加收件人联系
     $dm = new WindidMessageDm();
     $dm->setDialogId($dialogId)->setMessageId($messageId);
     $this->_getMessageDs()->addRelation($dm);
     $this->resetUserMessages($uid);
     //TODO后期要改掉
     return true;
 }