|
|
@@ -171,7 +171,7 @@ class ChatService extends BaseService
|
|
|
if ($key % 2 == 0) {
|
|
|
$arr[$i]['cId'] = $val;
|
|
|
} else {
|
|
|
- $arr[$i]['time'] = $val;
|
|
|
+ $arr[$i]['score'] = $val;
|
|
|
$i++;
|
|
|
}
|
|
|
}
|
|
|
@@ -179,10 +179,10 @@ class ChatService extends BaseService
|
|
|
//组合出最后聊天时间和未读消息数
|
|
|
foreach ($arr as $val) {
|
|
|
$customId = $val['cId'];
|
|
|
- $float = floatval($val['time']);
|
|
|
- $decimalPart = $float - floor($float);
|
|
|
- $unReadNum = intval($decimalPart * 10000);
|
|
|
- $time = intval($val['time']);
|
|
|
+ $score = floatval($val['score']);
|
|
|
+ $decimalPart = $score - floor($score);
|
|
|
+ $unReadNum = intval($decimalPart * 10000 + 0.5);// 加0.5 -- 使用四舍五入来处理浮点数精度问题
|
|
|
+ $time = intval($val['score']);
|
|
|
$date = date("Y-m-d H:i", $time);
|
|
|
|
|
|
$userData[$customId] = ['time' => $date, 'unReadNum' => $unReadNum];
|
|
|
@@ -222,4 +222,46 @@ class ChatService extends BaseService
|
|
|
return [];
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param int $shopId 门店id
|
|
|
+ * @param string $unit 单位分:个数(person)消息(message)
|
|
|
+ * @return int
|
|
|
+ */
|
|
|
+ public static function getUnReadMsgCount($shopId, $unit='person')
|
|
|
+ {
|
|
|
+ $cacheKey = ChatClass::getLatestUsersKey($shopId);
|
|
|
+ //返回有序集合,从高分到低分排序
|
|
|
+ $return = Yii::$app->redis->executeCommand('ZREVRANGE', [$cacheKey, 0, -1, 'WITHSCORES']);
|
|
|
+ if (empty($return)) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ $i = 0;
|
|
|
+ $arr = [];
|
|
|
+ foreach ($return as $key => $val) {
|
|
|
+ if ($key % 2 == 0) {
|
|
|
+ $arr[$i]['cId'] = $val;//customerId
|
|
|
+ } else {
|
|
|
+ $arr[$i]['score'] = $val;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $msgCount = 0;
|
|
|
+ foreach ($arr as $val) {
|
|
|
+ //$customId = $val['cId'];
|
|
|
+ $score = floatval($val['score']);
|
|
|
+ $decimalPart = $score - floor($score);
|
|
|
+ $unReadNum = intval($decimalPart * 10000 + 0.5); // 加0.5 -- 使用四舍五入来处理浮点数精度问题
|
|
|
+
|
|
|
+ //根据未读消息数的单位进行计算总数
|
|
|
+ if ($unit == 'person'){
|
|
|
+ $msgCount += ($unReadNum >= 1 ? 1 : 0);
|
|
|
+ } else if ($unit == 'message'){
|
|
|
+ $msgCount += $unReadNum;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $msgCount;
|
|
|
+ }
|
|
|
}
|