Commit 2a9c0d56 authored by chenchuanwen's avatar chenchuanwen

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into master_dev

parents e7592c17 8594183a
...@@ -39,7 +39,7 @@ class MessageServiceModel extends \Business\AbstractModel ...@@ -39,7 +39,7 @@ class MessageServiceModel extends \Business\AbstractModel
*/ */
private static $_instance = null; private static $_instance = null;
/** /**update
* 单例模式获取类实例 * 单例模式获取类实例
* *
* @ccw * @ccw
...@@ -92,9 +92,15 @@ class MessageServiceModel extends \Business\AbstractModel ...@@ -92,9 +92,15 @@ class MessageServiceModel extends \Business\AbstractModel
public function getUnreadCountByMemberIdAndType($toId) public function getUnreadCountByMemberIdAndType($toId)
{ {
$memberDb0Redis=\Redis\Db0\MemberRedisModel::getInstance();
$unredMessageCount=$memberDb0Redis->tableHGet($toId,'unread_message_count');
if($unredMessageCount===false){
$messageHistoryDao = \DAO\MessageHistoryModel::getInstance(); $messageHistoryDao = \DAO\MessageHistoryModel::getInstance();
$count = $messageHistoryDao->getUnreadCountByToIdAndToType($toId); $unredMessageCount = $messageHistoryDao->getUnreadCountByToIdAndToType($toId);
return $count; $memberDb0Redis->tableHset($toId,'unread_message_count',$unredMessageCount);
}
return $unredMessageCount;
} }
/** /**
...@@ -327,6 +333,12 @@ class MessageServiceModel extends \Business\AbstractModel ...@@ -327,6 +333,12 @@ class MessageServiceModel extends \Business\AbstractModel
$messageOneDao->setDb(DbNameConst::masterDBConnectName); $messageOneDao->setDb(DbNameConst::masterDBConnectName);
$messageOneDao->updateUnreadField($fromId, $fromType, $toId, $toType); $messageOneDao->updateUnreadField($fromId, $fromType, $toId, $toType);
$isSuccess = $messageHistoryDao->updateByFromIdAndSelfTypeAndToIdAndToType($fromId, $fromType, $toId, $toType); $isSuccess = $messageHistoryDao->updateByFromIdAndSelfTypeAndToIdAndToType($fromId, $fromType, $toId, $toType);
$memberDb0Redis=\Redis\Db0\MemberRedisModel::getInstance();
if($isSuccess){
$isSuccess=-1*$isSuccess;
$memberDb0Redis->tableHIncrBy($fromId,'unread_message_count',$isSuccess);
}
return $isSuccess; return $isSuccess;
} }
......
...@@ -55,6 +55,7 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -55,6 +55,7 @@ class MemberServiceModel extends \Business\AbstractModel
} }
$member['sendTime']=TIMESTAMP; $member['sendTime']=TIMESTAMP;
$this->memberDb0Redis->tableHMSet(trim($member['member_id']),$member,ApiConst::tenDaySecond); $this->memberDb0Redis->tableHMSet(trim($member['member_id']),$member,ApiConst::tenDaySecond);
$this->memberDb0Redis->tableHDel(trim($member['member_id']),'unread_message_count');
} }
......
...@@ -34,6 +34,12 @@ class AbstractModel { ...@@ -34,6 +34,12 @@ class AbstractModel {
*/ */
static $redis; static $redis;
public function __destruct(){
if(!empty(self::$redis)){
self::$redis->close();
}
}
/** /**
* 获取redis连接 * 获取redis连接
* *
......
...@@ -85,6 +85,14 @@ class MemberRedisModel extends \Redis\Db0\AbstractModel { ...@@ -85,6 +85,14 @@ class MemberRedisModel extends \Redis\Db0\AbstractModel {
return $res; return $res;
} }
public function tableHIncrBy($h,$key,$keysvalue){
return $this->hIncrBy($this->calcKey($h),$key,$keysvalue);
}
public function tableHDel($mid,$key){
$res=$this->hDel($this->calcKey($mid), $key);
return $res;
}
/** /**
* 类实例 * 类实例
......
...@@ -115,12 +115,13 @@ $serv->on('Message', function($server, $frame) use($conf){ ...@@ -115,12 +115,13 @@ $serv->on('Message', function($server, $frame) use($conf){
$redis->hSet(KEY_PRE.$memberId,'sendTime', time()); $redis->hSet(KEY_PRE.$memberId,'sendTime', time());
$server->push($frame->fd, responseJson(1,"sendMsg","success", $sendMessage)); $server->push($frame->fd, responseJson(1,"sendMsg","success", $sendMessage));
$messageService->addMessage($sendMessage['fromId'],$sendMessage['fromUserId'],$sendMessage['fromUserName'],$sendMessage['fromType'],$sendMessage['message'],$sendMessage['toId'],$sendMessage['toUserId'],$sendMessage['toUserName'],$sendMessage['toType'],$sendMessage['id']); $messageService->addMessage($sendMessage['fromId'],$sendMessage['fromUserId'],$sendMessage['fromUserName'],$sendMessage['fromType'],$sendMessage['message'],$sendMessage['toId'],$sendMessage['toUserId'],$sendMessage['toUserName'],$sendMessage['toType'],$sendMessage['id']);
$sendMessage['message']=serialize($sendMessage['message']); $sendMessage['message']=serialize($sendMessage['message']);
$redis->rPush('push_center',serialize($sendMessage)); $redis->rPush('push_center',serialize($sendMessage));
$redis->hIncrBy(KEY_PRE.$rev_data['toId'],'unread_message_count',\Our\ApiConst::one);
} }
$redis->close(); $redis->close();
unset($redis); unset($redis);
unset($memberDb0Redis);
// $messageService->unsetDb(); // $messageService->unsetDb();
unset($messageService); unset($messageService);
\Mysql\LinkMySQLModel::unsetDbConecet(); \Mysql\LinkMySQLModel::unsetDbConecet();
...@@ -231,6 +232,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) { ...@@ -231,6 +232,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
if($async_data){ if($async_data){
$value['message']=unserialize($value['message']); $value['message']=unserialize($value['message']);
$sendFd=$redis->hGet(KEY_PRE.$value['toId'],'fd'); $sendFd=$redis->hGet(KEY_PRE.$value['toId'],'fd');
$redis->hIncrBy(KEY_PRE.$value['toId'],'unread_message_count',\Our\ApiConst::one);
if(!empty($sendFd)){ if(!empty($sendFd)){
$serv->push($sendFd, responseJson(1,"fromMsg","success", $value)); $serv->push($sendFd, responseJson(1,"fromMsg","success", $value));
$redis->hSet(KEY_PRE.$value['fromId'],'sendTime', time()); $redis->hSet(KEY_PRE.$value['fromId'],'sendTime', time());
...@@ -244,6 +246,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) { ...@@ -244,6 +246,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
if($async_data){ if($async_data){
$sendFd=$redis->hGet(KEY_PRE.$data['data']['toId'],'fd'); $sendFd=$redis->hGet(KEY_PRE.$data['data']['toId'],'fd');
$data['data']['message']=unserialize($data['data']['message']); $data['data']['message']=unserialize($data['data']['message']);
$redis->hIncrBy(KEY_PRE.$data['data']['toId'],'unread_message_count',\Our\ApiConst::one);
if(!empty($sendFd)){ if(!empty($sendFd)){
$serv->push($sendFd, responseJson($sendFd,"fromMsg","success", $data['data'])); $serv->push($sendFd, responseJson($sendFd,"fromMsg","success", $data['data']));
$redis->hSet(KEY_PRE.$data['data']['fromId'],'sendTime', time()); $redis->hSet(KEY_PRE.$data['data']['fromId'],'sendTime', time());
......
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