/** * 添加私信 * * @param WindidMessageDm $dm */ public function addMessage(WindidMessageDm $dm) { if (($result = $dm->beforeAdd()) !== true) { return $result; } return $this->_getDao()->addMessage($dm->getData()); }
/** * 按用户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; }