renjiaojiao vor 5 Monaten
Ursprung
Commit
138e63abe9
2 geänderte Dateien mit 22 neuen und 23 gelöschten Zeilen
  1. 1 0
      rpc/internal/common/getBuoyMsg.go
  2. 21 23
      rpc/internal/common/msglistService.go

+ 1 - 0
rpc/internal/common/getBuoyMsg.go

@@ -144,6 +144,7 @@ func PutRedisRead(userId string, msgId int) error {
 	if len(redisArr) > 0 {
 		userUnreadMsg = append(userUnreadMsg, redisArr...)
 	}
+	fmt.Println("存入redis值", userUnreadMsg)
 	redis.Put(redisModule, fmt.Sprintf(UserClearUnread, userId), userUnreadMsg, 60*5)
 	return nil
 }

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

@@ -409,14 +409,17 @@ func FindUserClassUnreadAndClassAllMsg(userId string) (classUnreadCountMap map[i
 	rdata, err := redis.GetNewBytes(redisModule, fmt.Sprintf(UserClearUnread, userId))
 	fmt.Println("erroer", err)
 	rdataArr := []uint32{}
+	fmt.Println("------", rdata, reflect.TypeOf(rdata))
 	if rdata != nil {
-		log.Println("-------", rdata, reflect.TypeOf(rdata))
 		if json.Unmarshal(*rdata, &rdataArr); err != nil {
 			fmt.Println("取出本次已读消息反序列化出错:", err)
 			return classUnreadCountMap, classUnreadMsgMap, classAllMsgMap, err
 		}
 	}
-
+	rdataMap := make(map[uint32]bool)
+	for _, v := range rdataArr {
+		rdataMap[v] = true
+	}
 	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,
 			(select msg_bitmap,group_id from message_summary ms  where 1=1 limit 10) a2`, userId)
@@ -435,23 +438,18 @@ func FindUserClassUnreadAndClassAllMsg(userId string) (classUnreadCountMap map[i
 		}
 		//处理已读
 		unreadArr := []uint32{}
-		if len(rdataArr) > 0 {
-			if len(rdataArr) > 0 {
-				rdataMap := make(map[uint32]bool)
-				for _, v := range rdataArr {
-					rdataMap[v] = true
-				}
-
-				if len(group.ClassUnread) > 0 {
-					for _, v := range group.ClassUnread {
-						if !rdataMap[v] {
-							unreadArr = append(unreadArr, v)
-						}
+		if len(rdataMap) > 0 {
+			if group.GroupId == 1 {
+				fmt.Println("*****", group.ClassUnread)
+			}
+			if len(group.ClassUnread) > 0 {
+				for _, v := range group.ClassUnread {
+					if !rdataMap[v] {
+						unreadArr = append(unreadArr, v)
 					}
 				}
-				group.ClassUnread = unreadArr
-				group.ClassUnread = append(group.ClassUnread, rdataArr...)
 			}
+			group.ClassUnread = unreadArr
 		}
 
 		findRes = append(findRes, group)
@@ -510,14 +508,13 @@ func GetUserMsgSummary(userId string, isfilterActive bool) (userAllMsg, userRead
 			return userAllMsg, userReadMsg, userUnreadMsg, err
 		}
 	}
+	rdataMap := make(map[uint32]bool)
+	for _, v := range rdataArr {
+		rdataMap[v] = true
+	}
 	userUnreadArr := []uint32{}
-	if len(rdataArr) > 0 {
+	if len(rdataMap) > 0 {
 		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] {
@@ -525,6 +522,7 @@ func GetUserMsgSummary(userId string, isfilterActive bool) (userAllMsg, userRead
 					}
 				}
 			}
+			userUnreadMsg = userUnreadArr
 			userReadMsg = append(userReadMsg, rdataArr...)
 		}
 	}
@@ -532,7 +530,7 @@ func GetUserMsgSummary(userId string, isfilterActive bool) (userAllMsg, userRead
 	redis.Put(redisModule, key, map[string][]uint32{
 		"userAllMsg":    userAllMsg,
 		"userReadMsg":   userReadMsg,
-		"userUnreadMsg": userUnreadArr,
+		"userUnreadMsg": userUnreadMsg,
 	}, config.ConfigJson.RedisFailureTime)
 	return userAllMsg, userReadMsg, userUnreadMsg, nil
 }