Skip to content

Commit 2ab9db4

Browse files
committed
Merge branch 'tuoyun'
# Conflicts: # internal/common/cos.go
2 parents 0f17840 + 433e7b4 commit 2ab9db4

File tree

11 files changed

+87
-70
lines changed

11 files changed

+87
-70
lines changed

internal/common/cos.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"open_im_sdk/pkg/constant"
8+
"open_im_sdk/pkg/log"
9+
710
"github.com/tencentyun/cos-go-sdk-v5"
811
"math/rand"
912
"net/http"
1013
"net/url"
1114
ws "open_im_sdk/internal/interaction"
12-
"open_im_sdk/pkg/constant"
13-
"open_im_sdk/pkg/log"
14-
1515
// "open_im_sdk/pkg/constant"
1616
"open_im_sdk/pkg/server_api_params"
1717
"open_im_sdk/pkg/utils"

internal/common/minio.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,7 @@ func (m *Minio) upload(filePath, fileType string, onProgressFun func(int)) (stri
6666
}
6767
// fake callback
6868
onProgressFun(100)
69-
reqParams := make(url.Values)
70-
log.NewInfo("", reqParams)
71-
7269
presignedURL := endPoint.String() + "/" + minioResp.BucketName + "/" + newName
73-
log.NewInfo("", presignedURL)
7470
return presignedURL, newName, nil
7571
}
7672

internal/conversation_msg/conversation.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -299,12 +299,23 @@ func (c *Conversation) typingStatusUpdate(callback open_im_sdk_callback.Base, re
299299

300300
}
301301

302-
func (c *Conversation) markC2CMessageAsRead(callback open_im_sdk_callback.Base, msgIDList sdk.MarkC2CMessageAsReadParams, sourceMsgIDList, userID, operationID string) {
302+
func (c *Conversation) markC2CMessageAsRead(callback open_im_sdk_callback.Base, msgIDList sdk.MarkC2CMessageAsReadParams, userID, operationID string) {
303303
var localMessage db.LocalChatLog
304+
var newMessageIDList []string
305+
messages, err := c.db.GetMultipleMessage(msgIDList)
306+
common.CheckDBErrCallback(callback, err, operationID)
307+
for _, v := range messages {
308+
if v.IsRead == false && v.ContentType < constant.NotificationBegin {
309+
newMessageIDList = append(newMessageIDList, v.ClientMsgID)
310+
}
311+
}
312+
if len(newMessageIDList) == 0 {
313+
common.CheckAnyErrCallback(callback, 201, errors.New("message has been marked read"), operationID)
314+
}
304315
conversationID := utils.GetConversationIDBySessionType(userID, constant.SingleChatType)
305316
s := sdk_struct.MsgStruct{}
306317
c.initBasicInfo(&s, constant.UserMsgType, constant.HasReadReceipt, operationID)
307-
s.Content = sourceMsgIDList
318+
s.Content = utils.StructToJsonString(newMessageIDList)
308319
options := make(map[string]bool, 5)
309320
utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false)
310321
utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false)
@@ -315,13 +326,13 @@ func (c *Conversation) markC2CMessageAsRead(callback open_im_sdk_callback.Base,
315326
s.SendTime = resp.SendTime
316327
s.Status = constant.MsgStatusFiltered
317328
msgStructToLocalChatLog(&localMessage, &s)
318-
err := c.db.InsertMessage(&localMessage)
329+
err = c.db.InsertMessage(&localMessage)
319330
if err != nil {
320331
log.Error(operationID, "inset into chat log err", localMessage, s, err.Error())
321332
}
322-
err2 := c.db.UpdateMessageHasRead(userID, msgIDList)
333+
err2 := c.db.UpdateMessageHasRead(userID, newMessageIDList)
323334
if err2 != nil {
324-
log.Error(operationID, "update message has read error", msgIDList, userID, err2.Error())
335+
log.Error(operationID, "update message has read error", newMessageIDList, userID, err2.Error())
325336
}
326337
_ = common.TriggerCmdUpdateConversation(common.UpdateConNode{ConID: conversationID, Action: constant.UpdateLatestMessageChange}, c.ch)
327338
//_ = common.TriggerCmdUpdateConversation(common.UpdateConNode{ConID: conversationID, Action: constant.ConChange, Args: []string{conversationID}}, c.ch)

internal/conversation_msg/conversation_msg.go

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,6 @@ func NewConversation(ws *ws.Ws, db *db.DataBase, p *ws.PostApi,
5151
return n
5252
}
5353

54-
//func NewConversation() *Conversation {
55-
// return &Conversation{}
56-
//}
57-
58-
//func (c *Conversation) Init(ws *ws.Ws, db *db.DataBase, ch chan common.Cmd2Value, loginUserID string, friend *friend.Friend, group *group.Group, user *user.User) {
59-
// c.Ws = ws
60-
// c.db = db
61-
// c.ch = ch
62-
// c.loginUserID = c.loginUserID
63-
// c.friend = friend
64-
// c.group = group
65-
// c.user = user
66-
// go common.DoListener(c)
67-
//}
68-
6954
func (c *Conversation) GetCh() chan common.Cmd2Value {
7055
return c.ch
7156
}
@@ -190,7 +175,9 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
190175
if isHistory {
191176
insertMsg = append(insertMsg, c.msgStructToLocalChatLog(msg))
192177
}
193-
178+
if msg.ContentType == constant.HasReadReceipt {
179+
msgReadList = append(msgReadList, msg)
180+
}
194181
}
195182
} else { //Sent by others
196183
if b, _ := c.db.MessageIfExists(msg.ClientMsgID); !b { //Deduplication operation
@@ -221,7 +208,6 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
221208
lc.UnreadCount = 1
222209
}
223210

224-
//u.doUpdateConversation(cmd2Value{Value: updateConNode{c.ConversationID, UpdateFaceUrlAndNickName, c}})
225211
if isConversationUpdate {
226212
c.updateConversation(&lc, conversationSet)
227213
newMessages = append(newMessages, msg)
@@ -285,21 +271,17 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
285271
c.doMsgReadState(msgReadList)
286272
c.revokeMessage(msgRevokeList)
287273
c.newMessage(newMessages)
288-
//u.doUpdateConversation(cmd2Value{Value: updateConNode{"", ConChange, ""}})
289274
log.Info(operationID, "trigger map is :", newConversationSet, conversationChangedSet)
290-
//u.doUpdateConversation(cmd2Value{Value: updateConNode{"", NewCon, mapKeyToStringList(newConversationSet)}})
291-
//u.doUpdateConversation(cmd2Value{Value: updateConNode{"", ConChange, mapKeyToStringList(conversationChangSet)}})
292-
if len(conversationChangedSet) != 0 {
293-
c.ConversationListener.OnConversationChanged(utils.StructToJsonString(mapConversationToList(conversationChangedSet)))
294-
}
295275
if len(newConversationSet) != 0 {
296276
c.ConversationListener.OnNewConversation(utils.StructToJsonString(mapConversationToList(newConversationSet)))
297277
}
278+
if len(conversationChangedSet) != 0 {
279+
c.ConversationListener.OnConversationChanged(utils.StructToJsonString(mapConversationToList(conversationChangedSet)))
280+
}
281+
298282
if isTriggerUnReadCount {
299283
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{"", constant.TotalUnreadMessageChanged, ""}})
300284
}
301-
//sdkLog("length msgListenerList", u.MsgListenerList, "length message", len(newMessages), "msgListenerLen", len(u.MsgListenerList))
302-
303285
}
304286
func listToMap(list []*db.LocalConversation, m map[string]*db.LocalConversation) {
305287
for _, v := range list {

internal/conversation_msg/open_im_sdk_conversation_msg.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ func (c *Conversation) MarkC2CMessageAsRead(callback open_im_sdk_callback.Base,
917917
callback.OnSuccess(sdk_params_callback.MarkC2CMessageAsReadCallback)
918918
return
919919
}
920-
c.markC2CMessageAsRead(callback, unmarshalParams, msgIDList, userID, operationID)
920+
c.markC2CMessageAsRead(callback, unmarshalParams, userID, operationID)
921921
callback.OnSuccess(sdk_params_callback.MarkC2CMessageAsReadCallback)
922922
log.NewInfo(operationID, "MarkC2CMessageAsRead callback: ", sdk_params_callback.MarkC2CMessageAsReadCallback)
923923
}()
@@ -1015,8 +1015,8 @@ func (c *Conversation) InsertGroupMessageToLocalStorage(callback open_im_sdk_cal
10151015
msgStructToLocalChatLog(&localMessage, &s)
10161016
conversation.LatestMsg = utils.StructToJsonString(s)
10171017
conversation.LatestMsgSendTime = s.SendTime
1018-
clientMsgID := c.insertMessageToLocalStorage(callback, &localMessage, operationID)
1019-
callback.OnSuccess(clientMsgID)
1018+
_ = c.insertMessageToLocalStorage(callback, &localMessage, operationID)
1019+
callback.OnSuccess(utils.StructToJsonString(&s))
10201020
_ = common.TriggerCmdUpdateConversation(common.UpdateConNode{ConID: conversation.ConversationID, Action: constant.AddConOrUpLatMsg, Args: conversation}, c.ch)
10211021
}()
10221022

internal/login/init_login.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package login
22

33
import (
4-
"errors"
54
comm2 "open_im_sdk/internal/common"
65
conv "open_im_sdk/internal/conversation_msg"
76
"open_im_sdk/internal/friend"
@@ -138,15 +137,24 @@ func (u *LoginMgr) login(userID, token string, cb open_im_sdk_callback.Base, ope
138137
u.group.SetGroupListener(u.groupListener)
139138

140139
u.full = full.NewFull(u.user, u.friend, u.group)
141-
if u.imConfig.ObjectStorage != "cos" && u.imConfig.ObjectStorage != "" {
142-
err = errors.New("u.imConfig.ObjectStorage failed ")
143-
common.CheckConfigErrCallback(cb, err, operationID)
144-
}
140+
//if u.imConfig.ObjectStorage != "cos" && u.imConfig.ObjectStorage != "" {
141+
// err = errors.New("u.imConfig.ObjectStorage failed ")
142+
// common.CheckConfigErrCallback(cb, err, operationID)
143+
//}
145144
log.NewInfo(operationID, u.imConfig.ObjectStorage)
146145
u.forcedSynchronization()
147146
log.Info(operationID, "forcedSynchronization success...")
148147
log.NewInfo(operationID, u.imConfig.ObjectStorage)
149-
objStorage := comm2.NewCOS(p)
148+
var objStorage comm2.ObjectStorage
149+
objStorage = comm2.NewCOS(p)
150+
switch u.imConfig.ObjectStorage {
151+
case "cos":
152+
objStorage = comm2.NewCOS(p)
153+
case "minio":
154+
objStorage = comm2.NewMinio(p)
155+
default:
156+
objStorage = comm2.NewCOS(p)
157+
}
150158
u.conversation = conv.NewConversation(u.ws, u.db, p, u.conversationCh,
151159
u.loginUserID, u.imConfig.Platform, u.imConfig.DataDir,
152160
u.friend, u.group, u.user, objStorage, u.conversationListener, u.advancedMsgListener)

main/main.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ import (
2121

2222
func main() {
2323

24-
//strMyUidx := "13900000000"
25-
//friendUserID := "openIM2222"
26-
//tokenx := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVSUQiOiIxMzkwMDAwMDAwMCIsIlBsYXRmb3JtIjoiSU9TIiwiZXhwIjoxNjQ1ODYyMzIzLCJuYmYiOjE2NDUyNTc1MjMsImlhdCI6MTY0NTI1NzUyM30.TsrIgtKZhnbAUjjGFNnJvdzVQECLIaIJy_bvfRlNF4k"
27-
//test.InOutDoTest(strMyUidx, tokenx, WSADDR, APIADDR)
28-
//tokenx := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVSUQiOiIxODY2NjY2MjQxMiIsIlBsYXRmb3JtIjoiSU9TIiwiZXhwIjoxNjQ1Njg5NjU3LCJuYmYiOjE2NDUwODQ4NTcsImlhdCI6MTY0NTA4NDg1N30.nV3cIcvaRjyUEay8G7UMe5LzKeNi6UenET1RXDT4Nao"
29-
//test.InOutDoTest(strMyUidx, tokenx, WSADDR, APIADDR)
30-
//test.DoTestCreateGroup()
31-
//test.SetTestFriendID(friendUserID)
24+
25+
strMyUidx := "18666663333"
26+
friendUserID := "18349115126"
27+
tokenx := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVSUQiOiIxODY2NjY2MzMzMyIsIlBsYXRmb3JtIjoiSU9TIiwiZXhwIjoxOTYwNzk0NTA1LCJuYmYiOjE2NDU0MzQ1MDUsImlhdCI6MTY0NTQzNDUwNX0.3DRA5OQNV8l9d9zfpgxuxyPt6u92lYamHnDlDB4MWN0"
28+
test.InOutDoTest(strMyUidx, tokenx, WSADDR, APIADDR)
29+
// test.DoTestCreateGroup()
30+
test.SetTestFriendID(friendUserID)
3231
//fmt.Println("logout ........... ")
3332
//test.InOutLogou()
3433
//test.DoTestSetConversationRecvMessageOpt("17396220460", `["id1","id2"]`, constant.ConversationNotNotification)
@@ -41,7 +40,8 @@ func main() {
4140

4241
// test.DoSetGroupInfo()
4342
//test.DotestGetGroupMemberList()
44-
test.DotestMinio()
43+
44+
//test.DotestMinio()
4545
//test.DotestKickGroupMember()
4646
// test.DotestInviteUserToGroup()
4747
//test.DotestGetGroupApplicationList()
@@ -81,12 +81,11 @@ func main() {
8181
i := 0
8282
for true {
8383

84-
time.Sleep(time.Duration(1) * time.Second)
85-
86-
//test.DoTestSendMsg(strMyUidx, test.Friend_uid)
84+
test.DoTestSendMsg(strMyUidx, test.Friend_uid)
8785
i++
8886
fmt.Println("DoTestSendMsg count: ", i)
8987
fmt.Println("waiting")
88+
time.Sleep(time.Duration(1) * time.Second)
9089
}
9190
//
9291
//return

pkg/constant/constant.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const (
5555
FriendNotificationEnd = 1299
5656
ConversationOptChangeNotification = 1300
5757

58-
UserNotificationBegin = 1300
58+
UserNotificationBegin = 1301
5959
UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204
6060
ConversationNotification = 1307
6161
ConversationNotNotification = 1308

pkg/db/chat_log_model.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ func (d *DataBase) GetSendingMessageList() (result []*LocalChatLog, err error) {
176176
d.mRWMutex.Lock()
177177
defer d.mRWMutex.Unlock()
178178
var messageList []LocalChatLog
179-
err = utils.Wrap(d.conn.Where("status = ?", constant.MsgStatusSendFailed).Find(&messageList).Error, "GetMessageList failed")
179+
err = utils.Wrap(d.conn.Where("status = ?", constant.MsgStatusSending).Find(&messageList).Error, "GetMessageList failed")
180180
for _, v := range messageList {
181181
v1 := v
182182
result = append(result, &v1)
@@ -187,12 +187,23 @@ func (d *DataBase) GetSendingMessageList() (result []*LocalChatLog, err error) {
187187
func (d *DataBase) UpdateMessageHasRead(sendID string, msgIDList []string) error {
188188
d.mRWMutex.Lock()
189189
defer d.mRWMutex.Unlock()
190-
t := d.conn.Model(LocalChatLog{}).Debug().Where("send_id=? And is_read=? AND session_type=? AND client_msg_id in ?", sendID, constant.NotRead, constant.SingleChatType, msgIDList).Updates(LocalChatLog{IsRead: true})
190+
t := d.conn.Model(LocalChatLog{}).Debug().Where("send_id=? AND session_type=? AND client_msg_id in ?", sendID, constant.SingleChatType, msgIDList).Update("is_read", constant.HasRead)
191191
if t.RowsAffected == 0 {
192192
return utils.Wrap(errors.New("RowsAffected == 0"), "no update")
193193
}
194194
return utils.Wrap(t.Error, "UpdateMessageStatusBySourceID failed")
195195
}
196+
func (d *DataBase) GetMultipleMessage(conversationIDList []string) (result []*LocalChatLog, err error) {
197+
d.mRWMutex.Lock()
198+
defer d.mRWMutex.Unlock()
199+
var messageList []LocalChatLog
200+
err = utils.Wrap(d.conn.Where("client_msg_id IN ?", conversationIDList).Find(&messageList).Error, "GetMultipleMessage failed")
201+
for _, v := range messageList {
202+
v1 := v
203+
result = append(result, &v1)
204+
}
205+
return result, err
206+
}
196207

197208
func (d *DataBase) GetNormalMsgSeq() (uint32, error) {
198209
d.mRWMutex.Lock()

test/t_group_sdk.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -273,24 +273,24 @@ func test(storage common.ObjectStorage, callback baseCallback) {
273273
// }
274274
//})
275275
//log.NewInfo("0", dir, newName, err)
276-
dir, newName, err := storage.UploadImage("C:\\Users\\Administrator\\Desktop\\1.jpg", func(progress int) {
277-
if progress == 100 {
278-
callback.OnSuccess("")
279-
}
280-
})
281-
log.NewInfo("0", dir, newName, err, err)
282-
//dir, newName, err = storage.UploadSound("./main/main.go", func(progress int) {
276+
//dir, newName, err = storage.UploadImage("C:\\Users\\Administrator\\Desktop\\1.jpg", func(progress int) {
283277
// if progress == 100 {
284278
// callback.OnSuccess("")
285279
// }
286280
//})
287281
//log.NewInfo("0", dir, newName, err, err)
288-
//snapshotURL, snapshotUUID, videoURL, videoUUID, err := storage.UploadVideo("./main/main.go", "", func(progress int) {
282+
//dir, newName, err = storage.UploadSound("./main/main.go", func(progress int) {
289283
// if progress == 100 {
290284
// callback.OnSuccess("")
291285
// }
292286
//})
293-
//log.NewInfo(snapshotURL, snapshotUUID, videoURL, videoUUID, err)
287+
//log.NewInfo("0", dir, newName, err, err)
288+
snapshotURL, snapshotUUID, videoURL, videoUUID, err := storage.UploadVideo("./main/main.go", "C:\\Users\\Administrator\\Desktop\\1.jpg", func(progress int) {
289+
if progress == 100 {
290+
callback.OnSuccess("")
291+
}
292+
})
293+
log.NewInfo(snapshotURL, snapshotUUID, videoURL, videoUUID, err)
294294
}
295295

296296
type testGetGroupMembersInfo struct {

ws_wrapper/ws_local_server/ws_conversation_msg.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,16 @@ func (wsRouter *WsFuncRouter) SendMessageNotOss(input string, operationID string
553553

554554
}
555555

556+
func (wsRouter *WsFuncRouter) ClearC2CHistoryMessage(input string, operationID string) {
557+
userWorker := open_im_sdk.GetUserWorker(wsRouter.uId)
558+
userWorker.Conversation().ClearC2CHistoryMessage(&BaseSuccFailed{runFuncName(),operationID,wsRouter.uId},input,operationID)
559+
}
560+
561+
func (wsRouter *WsFuncRouter) ClearGroupHistoryMessage(input string, operationID string) {
562+
userWorker := open_im_sdk.GetUserWorker(wsRouter.uId)
563+
userWorker.Conversation().ClearGroupHistoryMessage(&BaseSuccFailed{runFuncName(),operationID,wsRouter.uId},input,operationID)
564+
}
565+
556566
//func (wsRouter *WsFuncRouter) SetSdkLog(input string, operationID string) {
557567
// m := make(map[string]interface{})
558568
// if err := json.Unmarshal([]byte(input), &m); err != nil {

0 commit comments

Comments
 (0)