瀏覽代碼

修改列表

renjiaojiao 5 月之前
父節點
當前提交
eec19ac9c8
共有 1 個文件被更改,包括 23 次插入40 次删除
  1. 23 40
      rpc/internal/common/msglistService.go

+ 23 - 40
rpc/internal/common/msglistService.go

@@ -411,24 +411,6 @@ func FindUserClassUnreadAndClassAllMsg(userId string) (classUnreadCountMap map[i
 			return classUnreadCountMap, classUnreadMsgMap, classAllMsgMap, err
 		}
 	}
-	/*userUnreadArr := []uint32{}
-	if len(rdataArr) > 0 {
-		if len(userUnreadMsg) > 0 {
-			for _, v := range userUnreadMsg {
-				isExist := false
-				for _, v1 := range rdataArr {
-					if v == v1 {
-						isExist = true
-						break
-					}
-				}
-				if !isExist {
-					userUnreadArr = append(userUnreadArr, v)
-				}
-			}
-		}
-		userReadMsg = append(userReadMsg, rdataArr...)
-	}*/
 
 	sql := fmt.Sprintf(`select a2.group_id,bitmapToArray(bitmapAnd(a1.unreadArr,a2.msg_bitmap)) as unreadArr,bitmapToArray(bitmapAnd(a1.allMsg,a2.msg_bitmap)) as classMsgArr from 
 			(SELECT bitmapAndnot(mus.allMsg,mus.readMsg) unreadArr,mus.allMsg FROM message_user_summary mus WHERE mus.userId = '%s') a1,
@@ -449,20 +431,21 @@ func FindUserClassUnreadAndClassAllMsg(userId string) (classUnreadCountMap map[i
 		//处理已读
 		unreadArr := []uint32{}
 		if len(rdataArr) > 0 {
-			if len(group.ClassUnread) > 0 {
+			if len(rdataArr) > 0 {
+				rdataMap := make(map[uint32]bool)
 				for _, v := range rdataArr {
-					isExist := false
-					for _, v1 := range group.ClassUnread {
-						if v == v1 {
-							isExist = true
-							break
+					rdataMap[v] = true
+				}
+
+				if len(group.ClassUnread) > 0 {
+					for _, v := range group.ClassUnread {
+						if !rdataMap[v] {
+							unreadArr = append(unreadArr, v)
 						}
 					}
-					if !isExist {
-						unreadArr = append(unreadArr, v)
-					}
 				}
 				group.ClassUnread = unreadArr
+				group.ClassUnread = append(group.ClassUnread, rdataArr...)
 			}
 		}
 
@@ -519,32 +502,32 @@ func GetUserMsgSummary(userId string, isfilterActive bool) (userAllMsg, userRead
 	rdataArr := []uint32{}
 	if rdata != nil {
 		if json.Unmarshal(*rdata, &rdataArr); err != nil {
-			return nil, nil, nil, err
+			return userAllMsg, userReadMsg, userUnreadMsg, err
 		}
 	}
 	userUnreadArr := []uint32{}
 	if len(rdataArr) > 0 {
-		if len(userUnreadMsg) > 0 {
-			for _, v := range userUnreadMsg {
-				isExist := false
-				for _, v1 := range rdataArr {
-					if v == v1 {
-						isExist = true
-						break
+		if len(rdataArr) > 0 {
+			rdataMap := make(map[uint32]bool)
+			for _, v := range rdataArr {
+				rdataMap[v] = true
+			}
+
+			if len(userUnreadMsg) > 0 {
+				for _, v := range userUnreadMsg {
+					if !rdataMap[v] {
+						userUnreadArr = append(userUnreadArr, v)
 					}
 				}
-				if !isExist {
-					userUnreadArr = append(userUnreadArr, v)
-				}
 			}
+			userReadMsg = append(userReadMsg, rdataArr...)
 		}
-		userReadMsg = append(userReadMsg, rdataArr...)
 	}
 	//缓存
 	redis.Put(redisModule, key, map[string][]uint32{
 		"userAllMsg":    userAllMsg,
 		"userReadMsg":   userReadMsg,
-		"userUnreadMsg": userUnreadMsg,
+		"userUnreadMsg": userUnreadArr,
 	}, config.ConfigJson.RedisFailureTime)
 	return userAllMsg, userReadMsg, userUnreadMsg, nil
 }