|
|
@@ -4,6 +4,7 @@ namespace biz\MQ\services;
|
|
|
|
|
|
use biz\base\services\BaseService;
|
|
|
use biz\MQ\classes\ChatClass;
|
|
|
+use biz\user\services\UserService;
|
|
|
use Yii;
|
|
|
|
|
|
class ChatService extends BaseService
|
|
|
@@ -16,14 +17,6 @@ class ChatService extends BaseService
|
|
|
Yii::$app->redis->executeCommand('INCRBY', [$key, 1]);
|
|
|
}
|
|
|
|
|
|
- //获取未读消息数
|
|
|
- public static function getUnreadNum($userId)
|
|
|
- {
|
|
|
- $key = ChatClass::getUnreadNumKey($userId);
|
|
|
- $respond = Yii::$app->redis->executeCommand('GET', [$key]);
|
|
|
- return is_numeric($respond) ? $respond : 0;
|
|
|
- }
|
|
|
-
|
|
|
//新增未回复客户 shish 2019.12.29
|
|
|
public static function addUnReplyUser($merchantId, $userId)
|
|
|
{
|
|
|
@@ -62,40 +55,58 @@ class ChatService extends BaseService
|
|
|
{
|
|
|
$now = time();
|
|
|
$cacheKey = ChatClass::getRecentlyUserKey($merchantId);
|
|
|
-
|
|
|
+
|
|
|
//删除10天前的联系人
|
|
|
$max = $now - 86400 * 10;
|
|
|
Yii::$app->redis->executeCommand('ZREMRANGEBYSCORE', [$cacheKey, 0, $max]);
|
|
|
-
|
|
|
+
|
|
|
Yii::$app->redis->executeCommand('ZADD', [$cacheKey, $now, "{$userId}"]);
|
|
|
}
|
|
|
|
|
|
//取最近联系人 shish 2019.12.29
|
|
|
public static function getRecentlyUserList($merchantId)
|
|
|
{
|
|
|
+ $userIdList = [12536630, 12536631, 12536632, 12536633, 12536634, 12536635];
|
|
|
+ $userId = $userIdList[array_rand($userIdList)];
|
|
|
+ self::addRecentlyUser($merchantId, $userId);
|
|
|
+
|
|
|
$cacheKey = ChatClass::getRecentlyUserKey($merchantId);
|
|
|
//返回有序集合,从高分到低分排序
|
|
|
$return = Yii::$app->redis->executeCommand('ZREVRANGE', [$cacheKey, 0, -1, 'WITHSCORES']);
|
|
|
if (empty($return)) {
|
|
|
return [];
|
|
|
}
|
|
|
- $list = [];
|
|
|
$i = 0;
|
|
|
$arr = [];
|
|
|
foreach ($return as $key => $val) {
|
|
|
if ($key % 2 == 0) {
|
|
|
- $arr[$i]['value'] = $val;
|
|
|
+ $arr[$i]['userId'] = $val;
|
|
|
} else {
|
|
|
- $arr[$i]['key'] = $val;
|
|
|
+ $arr[$i]['time'] = $val;
|
|
|
$i++;
|
|
|
}
|
|
|
}
|
|
|
- foreach ($arr as $key => $val) {
|
|
|
- $list[$val['key']] = $val['value'];
|
|
|
+ $userData = [];
|
|
|
+ //组合出最后聊天时间和未读消息数
|
|
|
+ foreach ($arr as $val) {
|
|
|
+ $userId = $val['userId'];
|
|
|
+ $time = $val['time'];
|
|
|
+ $num = ChatClass::getUnreadNum($userId);
|
|
|
+ $date = date("m-d H:i", $time);
|
|
|
+ if (date("Ymd") == date("Ymd", $time)) {
|
|
|
+ $date = date("H:i", $time);
|
|
|
+ }
|
|
|
+ $userData[$userId] = ['time' => $date, 'unReadNum' => $num];
|
|
|
}
|
|
|
- return $list;
|
|
|
+ $ids = array_column($arr, 'userId');
|
|
|
+ $infoList = UserService::getUserByIds($ids);
|
|
|
+ foreach ($infoList as $userId => $info) {
|
|
|
+ $infoList[$userId]['unReadNum'] = isset($userData[$userId]['unReadNum']) ? $userData[$userId]['unReadNum'] : 0;
|
|
|
+ $infoList[$userId]['chatTime'] = isset($userData[$userId]['time']) ? $userData[$userId]['time'] : date("m-d H:i", $info['visitTime']);
|
|
|
+ }
|
|
|
+ return array_values($infoList);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//保存已读消息记录 shish 2019.12.29
|
|
|
public static function saveRead($merchantId, $userId)
|
|
|
{
|
|
|
@@ -113,7 +124,7 @@ class ChatService extends BaseService
|
|
|
}
|
|
|
|
|
|
//取已读消息记录 shish 2019.12.29
|
|
|
- public static function getRead($userId)
|
|
|
+ public static function getReadList($userId)
|
|
|
{
|
|
|
$cacheKey = ChatClass::getReadKey($userId);
|
|
|
//返回有序集合,从高分到低分排序
|
|
|
@@ -137,5 +148,5 @@ class ChatService extends BaseService
|
|
|
}
|
|
|
return $list;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|