Commit 4c6e5d2e authored by wwccw0591's avatar wwccw0591

pc

parent 1d203d0c
...@@ -132,17 +132,7 @@ class MessageServiceModel extends \Business\AbstractModel ...@@ -132,17 +132,7 @@ class MessageServiceModel extends \Business\AbstractModel
return $avatar; return $avatar;
} }
public function __destruct()
{
$store = \DAO\StoreModel::getInstance();
$member = \DAO\MemberModel::getInstance();
$messageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$mesageOneDao = \DAO\MessageOneModel::getInstance();
$store->unsetDb();
$member->unsetDb();
$messageHistoryDao->unsetDb();
$mesageOneDao->unsetDb();
}
public function unsetDb() public function unsetDb()
{ {
...@@ -245,6 +235,223 @@ class MessageServiceModel extends \Business\AbstractModel ...@@ -245,6 +235,223 @@ class MessageServiceModel extends \Business\AbstractModel
return $returnMemeber; return $returnMemeber;
} }
/**
* 删除用户消息
*
* @ccw
*/
public function remove($memberId, $messageHistoryId)
{
$memageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$memberHistory = $memageHistoryDao->getOneById($messageHistoryId);
$isSuccess = false;
if ($memberHistory['fromId'] == $memberId) {
if ($memberHistory['isDel'] == ApiConst::recieveRemove) {
$isSuccess = $memageHistoryDao->update($messageHistoryId, 'isDel', ApiConst::remove);
} else {
$isSuccess = $memageHistoryDao->update($messageHistoryId, 'isDel', ApiConst::sendRemove);
}
}
if ($memberHistory['toId'] == $memberId) {
if ($memberHistory['isDel'] == ApiConst::sendRemove) {
$isSuccess = $memageHistoryDao->update($messageHistoryId, 'isDel', ApiConst::remove);
} else {
$isSuccess = $memageHistoryDao->update($messageHistoryId, 'isDel', ApiConst::recieveRemove);
}
}
return $isSuccess;
}
/**
* 获得消息按钮
*
* @ccw
*/
public function getMessageButton($id, $buttonId)
{
$memageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$memberHistory = $memageHistoryDao->getOneById($id);
if (empty($memberHistory)) {
ErrorModel::throwException(CodeConfigModel::noExistMessage);
}
$message = unserialize($memberHistory['message']);
$buttonIndex = $buttonId - ApiConst::one;
$button = $message['buttons'][$buttonIndex];
if (empty($button)) {
ErrorModel::throwException(CodeConfigModel::noExistButton);
}
$retrunButton = $button;
$button['status'] = ApiConst::messageButtonIsClick;
$button['showType'] = ApiConst::messageButtonShowTypeGray;
$message['buttons'][$buttonIndex] = $button;
$message = serialize($message);
$messageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$messageHistoryDao->update($id, 'message', $message);
return $retrunButton;
}
public function update($fromId, $fromType, $toId, $toType)
{
$messageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$messageOneDao = \DAO\MessageOneModel::getInstance();
$messageOneDao->setDb(DbNameConst::masterDBConnectName);
$messageOneDao->updateUnreadField($fromId, $fromType, $toId, $toType);
$isSuccess = $messageHistoryDao->updateByFromIdAndSelfTypeAndToIdAndToType($fromId, $fromType, $toId, $toType);
return $isSuccess;
}
public function checkIsCanSend($memberId)
{
$memberDao = \DAO\MemberModel::getInstance();
$sendTime = $memberDao->getInfo($memberId, 'sendTime');
if (!empty($sendTime)) {
if (TIMESTAMP - $sendTime < 1) {
ErrorModel::throwException(CodeConfigModel::sendLimitError);
}
}
}
public function addMessage($fromId, $selfId, $fromName, $fromType, $message, $toId, $toUserId, $toName, $toType, $messageId = false)
{
$messageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$mesageOneDao = \DAO\MessageOneModel::getInstance();
$message['gmtCreate'] = TIMESTAMP;
$message['isRead'] = ApiConst::unread;
$message['type'] = (int)$message['type'];
$message['content'] = base64_encode($message['content']);
$serializeMessage = serialize($message);
//将消息添加到表messageHistory
$mesageHistory['fromId'] = $fromId;
$mesageHistory['fromType'] = $fromType;
$mesageHistory['toId'] = $toId;
$mesageHistory['toType'] = $toType;
$mesageHistory['title'] = $message['title'];
$mesageHistory['message'] = $serializeMessage;
$mesageHistory['type'] = $message['type'];
$mesageHistory['gmtCreate'] = time();
$mesageHistory['gmtUpdate'] = time();
if ($messageId) {
$mesageHistory['id'] = $messageId;
}
$messageHistoryDao->setDb(DbNameConst::masterDBConnectName);
$messageHistoryDao->db->doTransaction();
$res1 = $messageHistoryDao->add($mesageHistory);
//将最后一条消息更新到消息用户表messageOne
$messageOne['fromId'] = $fromId;
$messageOne['toUserId'] = $toUserId;
$messageOne['toUserName'] = $toName;
$messageOne['toType'] = $toType;
$messageOne['fromUserId'] = $selfId;
$messageOne['fromUserName'] = $fromName;
$messageOne['fromType'] = $fromType;
$messageOne['toId'] = $toId;
$messageOne['message'] = $serializeMessage;
//推送补充
$mesageHistory['fromUserId'] = $selfId;
$mesageHistory['fromUserName'] = $fromName;
$mesageHistory['fromAvatar'] = $this->getAvatar($fromType, $selfId);
$mesageHistory['toUserId'] = $toUserId;
$mesageHistory['toUserName'] = $toName;
//register_shutdown_function(array($messageHistoryDao,'sendMessage'),array($mesageHistory,$toId));
$mesageOneDao->setDb(DbNameConst::masterDBConnectName);
$res2 = $mesageOneDao->insertOrUpdate($messageOne);
$messageHistoryDao->db->doCommit();
unset($messageHistoryDao->db);
unset($messageHistoryDao);
unset($mesageOneDao);
//$messageHistoryDao->sendMessage($mesageHistory,$toId);
if ($res1 && $res2) {
return $res1;
} else {
return false;
}
}
public function addMessageCenterToDb()
{
$conf = \Yaf\Registry::get('config')->get('redis.database.params');
$this->baseRedis = new \Redis();
$this->baseRedis->pconnect($conf['host'], $conf['port']);
if (!empty($conf['password'])) {
$this->baseRedis->auth($conf['password']);
}
while ($center = $this->baseRedis->lPop('message_center')) {
$this->baseRedis->rPush('push_center', $center);
$addData = unserialize($center);
$addData['message'] = unserialize($addData['message']);
$this->addMessage($addData['fromId'], $addData['fromUserId'], $addData['fromUserName'], $addData['fromType'], $addData['message'], $addData['toId'], $addData['toUserId'], $addData['toUserName'], $addData['toType'], $addData['id']);
}
return true;
}
/**
* 新增用户消息
*
* @ccw`
*/
public function add($fromId, $selfId, $fromName, $fromType, $message, $toId, $toUserId, $toName, $toType)
{
$messageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$mesageOneDao = \DAO\MessageOneModel::getInstance();
$message['gmtCreate'] = TIMESTAMP;
$message['isRead'] = ApiConst::unread;
$message['type'] = (int)$message['type'];
$serializeMessage = serialize($message);
//将消息添加到表messageHistory
$mesageHistory['fromId'] = $fromId;
$mesageHistory['fromType'] = $fromType;
$mesageHistory['toId'] = $toId;
$mesageHistory['toType'] = $toType;
$mesageHistory['title'] = $message['title'];
$mesageHistory['message'] = $serializeMessage;
$mesageHistory['type'] = $message['type'];
$mesageHistory['gmtCreate'] = TIMESTAMP;
$mesageHistory['gmtUpdate'] = TIMESTAMP;
$messageHistoryDao->setDb(DbNameConst::masterDBConnectName);
$messageHistoryDao->db->doTransaction();
$res1 = $messageHistoryDao->add($mesageHistory);
//将最后一条消息更新到消息用户表messageOne
$messageOne['fromId'] = $fromId;
$messageOne['toUserId'] = $toUserId;
$messageOne['toUserName'] = $toName;
$messageOne['toType'] = $toType;
$messageOne['fromUserId'] = $selfId;
$messageOne['fromUserName'] = $fromName;
$messageOne['fromType'] = $fromType;
$messageOne['toId'] = $toId;
$messageOne['message'] = $serializeMessage;
//推送补充
$mesageHistory['fromUserId'] = $selfId;
$mesageHistory['fromUserName'] = $fromName;
$mesageHistory['fromAvatar'] = $this->getAvatar($fromType, $selfId);
$mesageHistory['toUserId'] = $toUserId;
$mesageHistory['toUserName'] = $toName;
//register_shutdown_function(array($messageHistoryDao,'sendMessage'),array($mesageHistory,$toId));
$mesageOneDao->setDb(DbNameConst::masterDBConnectName);
$res2 = $mesageOneDao->insertOrUpdate($messageOne);
$messageHistoryDao->db->doCommit();
register_shutdown_function(array($messageHistoryDao, "sendMessage"), $mesageHistory, $toId);
//$messageHistoryDao->sendMessage($mesageHistory,$toId);
if ($res1 && $res2) {
return $res1;
} else {
return false;
}
}
public function set($memberId, $pushData)
{
$memberDao = \DAO\MemberModel::getInstance(DbNameConst::masterDBConnectName);
if ($memberDao->setIsWxsend($memberId, $pushData) !== false) {
return true;
}
return false;
}
/** /**
* 登录业务 * 登录业务
* *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment