Skip to content

Commit 5e73feb

Browse files
v2.3.3
2 parents ba20b1e + d6ff62b commit 5e73feb

30 files changed

+1332
-573
lines changed

go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ require (
1212
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
1313
github.com/go-playground/validator/v10 v10.10.0
1414
github.com/golang/protobuf v1.5.2
15-
github.com/google/go-cmp v0.5.8
15+
github.com/google/go-cmp v0.5.5
16+
github.com/google/uuid v1.3.0 // indirect
1617
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect
1718
github.com/gorilla/websocket v1.4.2
1819
github.com/jinzhu/copier v0.3.4
@@ -32,9 +33,9 @@ require (
3233
github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20220106031843-2efeb10ca2f6
3334
golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect
3435
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
35-
golang.org/x/sys v0.0.0-20220209214540-3681064d5158 // indirect
36+
golang.org/x/sys v0.0.0-20220405052023-b1e9470b6e64 // indirect
3637
golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect
3738
google.golang.org/protobuf v1.28.0
38-
gorm.io/driver/sqlite v1.2.6
39-
gorm.io/gorm v1.22.4
39+
gorm.io/driver/sqlite v1.3.6
40+
gorm.io/gorm v1.23.8
4041
)

go.sum

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
6262
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
6363
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
6464
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
65-
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
6665
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
66+
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
67+
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
6768
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
6869
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
6970
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@@ -73,11 +74,9 @@ github.com/jinzhu/copier v0.3.4 h1:mfU6jI9PtCeUjkjQ322dlff9ELjGDu975C2p/nrubVI=
7374
github.com/jinzhu/copier v0.3.4/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
7475
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
7576
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
76-
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
77-
github.com/jinzhu/now v1.1.3 h1:PlHq1bSCSZL9K0wUhbm2pGLoTWs2GwVhsP6emvGV/ZI=
78-
github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
79-
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
80-
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
77+
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
78+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
79+
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
8180
github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=
8281
github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
8382
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
@@ -105,8 +104,8 @@ github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkL
105104
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA=
106105
github.com/lestrrat-go/strftime v1.0.5 h1:A7H3tT8DhTz8u65w+JRpiBxM4dINQhUXAZnhBa2xeOE=
107106
github.com/lestrrat-go/strftime v1.0.5/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g=
108-
github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA=
109-
github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
107+
github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
108+
github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
110109
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
111110
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
112111
github.com/minio/minio-go/v7 v7.0.22 h1:iXhsiRyYh1ozm/+jN2qGgEIahYjEkvcpuu6NcdpSxcA=
@@ -188,8 +187,8 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
188187
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
189188
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
190189
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
191-
golang.org/x/sys v0.0.0-20220209214540-3681064d5158 h1:rm+CHSpPEEW2IsXUib1ThaHIjuBVZjxNgSKmBLFfD4c=
192-
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
190+
golang.org/x/sys v0.0.0-20220405052023-b1e9470b6e64 h1:D1v9ucDTYBtbz5vNuBbAhIMAGhQhJ6Ym5ah3maMVNX4=
191+
golang.org/x/sys v0.0.0-20220405052023-b1e9470b6e64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
193192
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
194193
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
195194
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -222,13 +221,8 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
222221
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
223222
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
224223
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
225-
gorm.io/driver/sqlite v1.2.6 h1:SStaH/b+280M7C8vXeZLz/zo9cLQmIGwwj3cSj7p6l4=
226-
gorm.io/driver/sqlite v1.2.6 h1:SStaH/b+280M7C8vXeZLz/zo9cLQmIGwwj3cSj7p6l4=
227-
gorm.io/driver/sqlite v1.2.6/go.mod h1:gyoX0vHiiwi0g49tv+x2E7l8ksauLK0U/gShcdUsjWY=
228-
gorm.io/driver/sqlite v1.2.6/go.mod h1:gyoX0vHiiwi0g49tv+x2E7l8ksauLK0U/gShcdUsjWY=
229-
gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0=
230-
gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0=
231-
gorm.io/gorm v1.22.4 h1:8aPcyEJhY0MAt8aY6Dc524Pn+pO29K+ydu+e/cXSpQM=
232-
gorm.io/gorm v1.22.4 h1:8aPcyEJhY0MAt8aY6Dc524Pn+pO29K+ydu+e/cXSpQM=
233-
gorm.io/gorm v1.22.4/go.mod h1:1aeVC+pe9ZmvKZban/gW4QPra7PRoTEssyc922qCAkk=
234-
gorm.io/gorm v1.22.4/go.mod h1:1aeVC+pe9ZmvKZban/gW4QPra7PRoTEssyc922qCAkk=
224+
gorm.io/driver/sqlite v1.3.6 h1:Fi8xNYCUplOqWiPa3/GuCeowRNBRGTf62DEmhMDHeQQ=
225+
gorm.io/driver/sqlite v1.3.6/go.mod h1:Sg1/pvnKtbQ7jLXxfZa+jSHvoX8hoZA8cn4xllOMTgE=
226+
gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
227+
gorm.io/gorm v1.23.8 h1:h8sGJ+biDgBA1AD1Ha9gFCx7h8npU7AsLdlkX0n2TpE=
228+
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=

internal/cache/cache.go

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,35 @@ func (c *Cache) Update(userID, faceURL, nickname string) {
2828
c.userMap.Store(userID, UserInfo{faceURL: faceURL, Nickname: nickname})
2929
}
3030
func (c *Cache) UpdateConversation(conversation model_struct.LocalConversation) {
31-
c.userMap.Store(conversation.ConversationID, conversation)
31+
c.conversationMap.Store(conversation.ConversationID, conversation)
3232
}
3333
func (c *Cache) UpdateConversations(conversations []*model_struct.LocalConversation) {
3434
for _, conversation := range conversations {
35-
c.userMap.Store(conversation.ConversationID, *conversation)
35+
c.conversationMap.Store(conversation.ConversationID, *conversation)
3636
}
3737
}
38+
func (c *Cache) GetAllConversations() (conversations []*model_struct.LocalConversation) {
39+
c.conversationMap.Range(func(key, value interface{}) bool {
40+
temp := value.(model_struct.LocalConversation)
41+
conversations = append(conversations, &temp)
42+
return true
43+
})
44+
return conversations
45+
}
46+
func (c *Cache) GetAllHasUnreadMessageConversations() (conversations []*model_struct.LocalConversation) {
47+
c.conversationMap.Range(func(key, value interface{}) bool {
48+
temp := value.(model_struct.LocalConversation)
49+
if temp.UnreadCount > 0 {
50+
conversations = append(conversations, &temp)
51+
}
52+
return true
53+
})
54+
return conversations
55+
}
56+
3857
func (c *Cache) GetConversation(conversationID string) model_struct.LocalConversation {
3958
var result model_struct.LocalConversation
40-
conversation, ok := c.userMap.Load(conversationID)
59+
conversation, ok := c.conversationMap.Load(conversationID)
4160
if ok {
4261
result = conversation.(model_struct.LocalConversation)
4362
}

internal/conversation_msg/conversation.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ func (c *Conversation) setOneConversationUnread(callback open_im_sdk_callback.Ba
104104
apiReq.UnreadCount = int32(unreadCount)
105105
apiReq.FieldType = constant.FieldUnread
106106
c.setConversation(callback, apiReq, conversationID, localConversation, operationID)
107+
deleteRows := c.db.DeleteConversationUnreadMessageList(localConversation.ConversationID, localConversation.LatestMsgSendTime)
108+
if deleteRows == 0 {
109+
log.Error(operationID, "DeleteConversationUnreadMessageList err", localConversation.ConversationID, localConversation.LatestMsgSendTime)
110+
}
107111
}
108112

109113
func (c *Conversation) setOneConversationPrivateChat(callback open_im_sdk_callback.Base, conversationID string, isPrivate bool, operationID string) {
@@ -357,6 +361,28 @@ func (c *Conversation) SyncConversations(operationID string, timeout time.Durati
357361
log.Info(operationID, "cache update cost time", time.Since(cTime))
358362
log.Info(operationID, utils.GetSelfFuncName(), "all cost time", time.Since(ccTime))
359363
}
364+
func (c *Conversation) SyncConversationUnreadCount(operationID string) {
365+
var conversationChangedList []string
366+
allConversations := c.cache.GetAllHasUnreadMessageConversations()
367+
log.Debug(operationID, "get unread message length is ", len(allConversations))
368+
for _, conversation := range allConversations {
369+
log.Debug(operationID, "has unread message conversation is:", *conversation)
370+
if deleteRows := c.db.DeleteConversationUnreadMessageList(conversation.ConversationID, conversation.UpdateUnreadCountTime); deleteRows > 0 {
371+
log.Debug(operationID, conversation.ConversationID, conversation.UpdateUnreadCountTime, "delete rows:", deleteRows)
372+
if err := c.db.DecrConversationUnreadCount(conversation.ConversationID, deleteRows); err != nil {
373+
log.Debug(operationID, conversation.ConversationID, conversation.UpdateUnreadCountTime, "decr unread count err:", err.Error())
374+
} else {
375+
conversationChangedList = append(conversationChangedList, conversation.ConversationID)
376+
}
377+
}
378+
}
379+
if len(conversationChangedList) > 0 {
380+
if err := common.TriggerCmdUpdateConversation(common.UpdateConNode{Action: constant.ConChange, Args: conversationChangedList}, c.GetCh()); err != nil {
381+
log.NewError(operationID, utils.GetSelfFuncName(), err.Error())
382+
}
383+
}
384+
385+
}
360386

361387
func (c *Conversation) SyncOneConversation(conversationID, operationID string) {
362388
log.NewInfo(operationID, utils.GetSelfFuncName(), "conversationID: ", conversationID)

internal/conversation_msg/conversation_msg.go

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,16 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
103103
operationID := c2v.Value.(sdk_struct.CmdNewMsgComeToConversation).OperationID
104104
allMsg := c2v.Value.(sdk_struct.CmdNewMsgComeToConversation).MsgList
105105
syncFlag := c2v.Value.(sdk_struct.CmdNewMsgComeToConversation).SyncFlag
106+
if c.msgListener == nil || c.ConversationListener == nil {
107+
for _, v := range allMsg {
108+
if v.ContentType > constant.SignalingNotificationBegin && v.ContentType < constant.SignalingNotificationEnd {
109+
log.Info(operationID, "signaling DoNotification ", v, "signaling:", c.signaling)
110+
c.signaling.DoNotification(v, c.GetCh(), operationID)
111+
} else {
112+
log.Info(operationID, "listener is nil, do nothing ", v)
113+
}
114+
}
115+
}
106116
if c.msgListener == nil {
107117
log.Error(operationID, "not set c MsgListenerList")
108118
return
@@ -118,6 +128,7 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
118128
var isTriggerUnReadCount bool
119129
var insertMsg, updateMsg []*model_struct.LocalChatLog
120130
var exceptionMsg []*model_struct.LocalErrChatLog
131+
var unreadMessages []*model_struct.LocalConversationUnreadMessage
121132
var newMessages, msgReadList, groupMsgReadList, msgRevokeList, newMsgRevokeList sdk_struct.NewMsgList
122133
var isUnreadCount, isConversationUpdate, isHistory, isNotPrivate, isSenderConversationUpdate, isSenderNotificationPush bool
123134
conversationChangedSet := make(map[string]*model_struct.LocalConversation)
@@ -188,6 +199,7 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
188199
log.Debug(operationID, "ConversationUnreadNotification come here", unreadArgs.String())
189200
for _, v := range unreadArgs.ConversationIDList {
190201
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{ConID: v, Action: constant.UnreadCountSetZero}})
202+
c.db.DeleteConversationUnreadMessageList(v, unreadArgs.UpdateUnreadCountTime)
191203
}
192204
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{Action: constant.ConChange, Args: unreadArgs.ConversationIDList}})
193205
continue
@@ -251,23 +263,12 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
251263
case constant.SingleChatType:
252264
lc.ConversationID = utils.GetConversationIDBySessionType(v.RecvID, constant.SingleChatType)
253265
lc.UserID = v.RecvID
254-
//localUserInfo,_ := c.user.GetLoginUser()
255-
//c.FaceURL = localUserInfo.FaceUrl
256-
//c.ShowName = localUserInfo.Nickname
257266
case constant.GroupChatType:
258267
lc.GroupID = v.GroupID
259268
lc.ConversationID = utils.GetConversationIDBySessionType(lc.GroupID, constant.GroupChatType)
260269
case constant.SuperGroupChatType:
261270
lc.GroupID = v.GroupID
262271
lc.ConversationID = utils.GetConversationIDBySessionType(lc.GroupID, constant.SuperGroupChatType)
263-
//faceUrl, name, err := u.getGroupNameAndFaceUrlByUid(c.GroupID)
264-
//if err != nil {
265-
// utils.sdkLog("getGroupNameAndFaceUrlByUid err:", err)
266-
//} else {
267-
// c.ShowName = name
268-
// c.FaceURL = faceUrl
269-
//}
270-
271272
}
272273
if isConversationUpdate {
273274
if isSenderConversationUpdate {
@@ -329,6 +330,8 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
329330
if msg.SendTime > cacheConversation.UpdateUnreadCountTime {
330331
isTriggerUnReadCount = true
331332
lc.UnreadCount = 1
333+
tempUnreadMessages := model_struct.LocalConversationUnreadMessage{ConversationID: lc.ConversationID, ClientMsgID: msg.ClientMsgID, SendTime: msg.SendTime}
334+
unreadMessages = append(unreadMessages, &tempUnreadMessages)
332335
}
333336
}
334337
if isConversationUpdate {
@@ -456,7 +459,10 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
456459
}
457460
b7 := utils.GetCurrentTimestampByMill()
458461
log.Debug(operationID, "BatchInsertConversationList, cost time : ", b7-b6)
459-
462+
unreadMessageErr := c.db.BatchInsertConversationUnreadMessageList(unreadMessages)
463+
if unreadMessageErr != nil {
464+
log.Error(operationID, "insert BatchInsertConversationUnreadMessageList err:", unreadMessageErr.Error())
465+
}
460466
c.doMsgReadState(msgReadList)
461467
b8 := utils.GetCurrentTimestampByMill()
462468
log.Debug(operationID, "doMsgReadState cost time : ", b8-b7)
@@ -516,6 +522,7 @@ func (c *Conversation) doSuperGroupMsgNew(c2v common.Cmd2Value) {
516522
var isTriggerUnReadCount bool
517523
var insertMsg, updateMsg, specialUpdateMsg []*model_struct.LocalChatLog
518524
var exceptionMsg []*model_struct.LocalErrChatLog
525+
var unreadMessages []*model_struct.LocalConversationUnreadMessage
519526
var newMessages, msgReadList, groupMsgReadList, msgRevokeList, newMsgRevokeList sdk_struct.NewMsgList
520527
var isUnreadCount, isConversationUpdate, isHistory, isNotPrivate, isSenderConversationUpdate, isSenderNotificationPush bool
521528
conversationChangedSet := make(map[string]*model_struct.LocalConversation)
@@ -585,6 +592,7 @@ func (c *Conversation) doSuperGroupMsgNew(c2v common.Cmd2Value) {
585592
_ = proto.Unmarshal(tips.Detail, &unreadArgs)
586593
for _, v := range unreadArgs.ConversationIDList {
587594
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{ConID: v, Action: constant.UnreadCountSetZero}})
595+
c.db.DeleteConversationUnreadMessageList(v, unreadArgs.UpdateUnreadCountTime)
588596
}
589597
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{Action: constant.ConChange, Args: unreadArgs.ConversationIDList}})
590598
continue
@@ -730,6 +738,8 @@ func (c *Conversation) doSuperGroupMsgNew(c2v common.Cmd2Value) {
730738
if msg.SendTime > cacheConversation.UpdateUnreadCountTime {
731739
isTriggerUnReadCount = true
732740
lc.UnreadCount = 1
741+
tempUnreadMessages := model_struct.LocalConversationUnreadMessage{ConversationID: lc.ConversationID, ClientMsgID: msg.ClientMsgID, SendTime: msg.SendTime}
742+
unreadMessages = append(unreadMessages, &tempUnreadMessages)
733743
}
734744
}
735745
if isConversationUpdate {
@@ -865,7 +875,10 @@ func (c *Conversation) doSuperGroupMsgNew(c2v common.Cmd2Value) {
865875
}
866876
b7 := utils.GetCurrentTimestampByMill()
867877
log.Debug(operationID, "BatchInsertConversationList, cost time : ", b7-b6)
868-
878+
unreadMessageErr := c.db.BatchInsertConversationUnreadMessageList(unreadMessages)
879+
if unreadMessageErr != nil {
880+
log.Error(operationID, "insert BatchInsertConversationUnreadMessageList err:", unreadMessageErr.Error())
881+
}
869882
c.doMsgReadState(msgReadList)
870883
b8 := utils.GetCurrentTimestampByMill()
871884
log.Debug(operationID, "doMsgReadState cost time : ", b8-b7)

0 commit comments

Comments
 (0)