@@ -97,44 +97,119 @@ func MsgDataToLocalChatLog(serverMessage *sdkws.MsgData) *model_struct.LocalChat
9797 return localMessage
9898}
9999
100- func LocalChatLogToMsgStruct (localMessage * model_struct.LocalChatLog ) * sdk_struct.MsgStruct {
101- message := & sdk_struct.MsgStruct {
102- ClientMsgID : localMessage .ClientMsgID ,
103- ServerMsgID : localMessage .ServerMsgID ,
104- CreateTime : localMessage .CreateTime ,
105- SendTime : localMessage .SendTime ,
106- SessionType : localMessage .SessionType ,
107- SendID : localMessage .SendID ,
108- RecvID : localMessage .RecvID ,
109- MsgFrom : localMessage .MsgFrom ,
110- ContentType : localMessage .ContentType ,
111- SenderPlatformID : localMessage .SenderPlatformID ,
112- SenderNickname : localMessage .SenderNickname ,
113- SenderFaceURL : localMessage .SenderFaceURL ,
114- Content : localMessage .Content ,
115- Seq : localMessage .Seq ,
116- IsRead : localMessage .IsRead ,
117- Status : localMessage .Status ,
118- Ex : localMessage .Ex ,
119- LocalEx : localMessage .LocalEx ,
100+ func LocalChatLogToMsgStruct (local * model_struct.LocalChatLog ) * sdk_struct.MsgStruct {
101+ if local == nil {
102+ return nil
120103 }
121- var attachedInfo sdk_struct.AttachedInfoElem
122- err := utils .JsonStringToStruct (localMessage .AttachedInfo , & attachedInfo )
123- if err != nil {
124- log .ZWarn (context .Background (), "JsonStringToStruct error" , err , "localMessage.AttachedInfo" , localMessage .AttachedInfo )
104+ msg := & sdk_struct.MsgStruct {
105+ ClientMsgID : local .ClientMsgID ,
106+ ServerMsgID : local .ServerMsgID ,
107+ CreateTime : local .CreateTime ,
108+ SendTime : local .SendTime ,
109+ SessionType : local .SessionType ,
110+ SendID : local .SendID ,
111+ RecvID : local .RecvID ,
112+ MsgFrom : local .MsgFrom ,
113+ ContentType : local .ContentType ,
114+ SenderPlatformID : local .SenderPlatformID ,
115+ SenderNickname : local .SenderNickname ,
116+ SenderFaceURL : local .SenderFaceURL ,
117+ Content : local .Content ,
118+ Seq : local .Seq ,
119+ IsRead : local .IsRead ,
120+ Status : local .Status ,
121+ Ex : local .Ex ,
122+ LocalEx : local .LocalEx ,
123+ AttachedInfo : local .AttachedInfo ,
125124 }
126- message .AttachedInfoElem = & attachedInfo
127- errParse := msgHandleByContentType (message )
128- if errParse != nil {
129- log .ZWarn (context .Background (), "Parsing data error" , err , "messageContent" , message .Content )
125+
126+ if err := PopulateMsgStructByContentType (msg ); err != nil {
127+ log .ZWarn (context .Background (), "Parsing data error" , err , "messageContent" , msg .Content )
130128 }
131- switch localMessage .SessionType {
132- case constant .WriteGroupChatType :
133- fallthrough
134- case constant .ReadGroupChatType :
135- message .GroupID = localMessage .RecvID
129+
130+ switch local .SessionType {
131+ case constant .WriteGroupChatType , constant .ReadGroupChatType :
132+ msg .GroupID = local .RecvID
136133 }
137- return message
134+ return msg
135+ }
136+
137+ func PopulateMsgStructByContentType (msg * sdk_struct.MsgStruct ) (err error ) {
138+ switch msg .ContentType {
139+ case constant .Text :
140+ elem := sdk_struct.TextElem {}
141+ err = utils .JsonStringToStruct (msg .Content , & elem )
142+ msg .TextElem = & elem
143+ case constant .Picture :
144+ elem := sdk_struct.PictureElem {}
145+ err = utils .JsonStringToStruct (msg .Content , & elem )
146+ msg .PictureElem = & elem
147+ case constant .Sound :
148+ elem := sdk_struct.SoundElem {}
149+ err = utils .JsonStringToStruct (msg .Content , & elem )
150+ msg .SoundElem = & elem
151+ case constant .Video :
152+ elem := sdk_struct.VideoElem {}
153+ err = utils .JsonStringToStruct (msg .Content , & elem )
154+ msg .VideoElem = & elem
155+ case constant .File :
156+ elem := sdk_struct.FileElem {}
157+ err = utils .JsonStringToStruct (msg .Content , & elem )
158+ msg .FileElem = & elem
159+ case constant .AdvancedText :
160+ elem := sdk_struct.AdvancedTextElem {}
161+ err = utils .JsonStringToStruct (msg .Content , & elem )
162+ msg .AdvancedTextElem = & elem
163+ case constant .AtText :
164+ elem := sdk_struct.AtTextElem {}
165+ err = utils .JsonStringToStruct (msg .Content , & elem )
166+ msg .AtTextElem = & elem
167+ case constant .Location :
168+ elem := sdk_struct.LocationElem {}
169+ err = utils .JsonStringToStruct (msg .Content , & elem )
170+ msg .LocationElem = & elem
171+ case constant .Custom , constant .CustomMsgNotTriggerConversation , constant .CustomMsgOnlineOnly :
172+ elem := sdk_struct.CustomElem {}
173+ err = utils .JsonStringToStruct (msg .Content , & elem )
174+ msg .CustomElem = & elem
175+ case constant .Typing :
176+ elem := sdk_struct.TypingElem {}
177+ err = utils .JsonStringToStruct (msg .Content , & elem )
178+ msg .TypingElem = & elem
179+ case constant .Quote :
180+ elem := sdk_struct.QuoteElem {}
181+ err = utils .JsonStringToStruct (msg .Content , & elem )
182+ msg .QuoteElem = & elem
183+ case constant .Merger :
184+ elem := sdk_struct.MergeElem {}
185+ err = utils .JsonStringToStruct (msg .Content , & elem )
186+ msg .MergeElem = & elem
187+ case constant .Face :
188+ elem := sdk_struct.FaceElem {}
189+ err = utils .JsonStringToStruct (msg .Content , & elem )
190+ msg .FaceElem = & elem
191+ case constant .Card :
192+ elem := sdk_struct.CardElem {}
193+ err = utils .JsonStringToStruct (msg .Content , & elem )
194+ msg .CardElem = & elem
195+ case constant .MarkdownText :
196+ elem := sdk_struct.MarkdownTextElem {}
197+ err = utils .JsonStringToStruct (msg .Content , & elem )
198+ msg .MarkdownTextElem = & elem
199+ default :
200+ elem := sdk_struct.NotificationElem {}
201+ err = utils .JsonStringToStruct (msg .Content , & elem )
202+ msg .NotificationElem = & elem
203+ }
204+ var attachedInfo sdk_struct.AttachedInfoElem
205+ if msg .AttachedInfo != "" {
206+ if err := utils .JsonStringToStruct (msg .AttachedInfo , & attachedInfo ); err != nil {
207+ log .ZWarn (context .Background (), "JsonStringToStruct error" , err , "localMessage.AttachedInfo" , msg .AttachedInfo )
208+ }
209+ }
210+ msg .AttachedInfoElem = & attachedInfo
211+ msg .Content = ""
212+ return errs .Wrap (err )
138213}
139214
140215func msgHandleByContentType (msg * sdk_struct.MsgStruct ) (err error ) {
0 commit comments