|
@@ -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
|
|
|
}
|