Пример #1
0
        /// <summary>
        /// 方法说明:触角SDK聊天消息和SDK聊天消息转换
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        private static T GetReceiveAntSdkGroupBaseInfo <T>(MsSdkMessageGroupBase entity)
            where T : GroupBase, new()
        {
            var sdkreceivemsgtypeValue = (long)entity.MsgType;
            var antsdkreceivemsgType   = (AntSdkMsgType)sdkreceivemsgtypeValue;
            var result = new T
            {
                MsgType   = antsdkreceivemsgType,
                sessionId = entity.sessionId,
                chatIndex = entity.chatIndex,
                sendTime  = entity.sendTime
            };

            return(result);
        }
Пример #2
0
 /// <summary>
 /// 方法说明:获取接收到的平台SDK聊天消息,转化为触角SDK聊天消息
 /// </summary>
 /// <param name="entity">SDK聊天信息</param>
 /// <returns>触角SDK聊天信息</returns>
 internal static GroupBase GetReceiveAntSdkGroupInfo(MsSdkMessageGroupBase entity)
 {
     try
     {
         var sdkcreateObj = entity as CreateGroup;
         if (sdkcreateObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <Create>(sdkcreateObj);
             antsdkchatgroupMsg.content = new Create_content
             {
                 groupId      = sdkcreateObj.content?.groupId,
                 groupName    = sdkcreateObj.content?.groupName,
                 groupPicture = sdkcreateObj.content?.groupPicture,
                 memberCount  = sdkcreateObj.content?.memberCount ?? 0,
                 groupOwnerId = sdkcreateObj.content?.groupOwnerId
             };
             //收到创建讨论组通知,必须订阅讨论组主题收消息
             if (!string.IsNullOrEmpty(sdkcreateObj.content?.groupId))
             {
                 //连接成功需要订阅的默认主题
                 var topics = new List <string> {
                     sdkcreateObj.content.groupId
                 };
                 //订阅默认主题
                 var temperrorMsg = string.Empty;
                 if (!SdkService.Subscribe(topics.ToArray(), ref temperrorMsg))
                 {
                     //记录收到创建讨论组通知后订阅讨论组主题失败日志
                     LogHelper.WriteError($"Received Create Group Message Subscribe Group Topic,{Resources.AntSdkSubscribeGroupTopicsError}:{temperrorMsg}");
                 }
             }
             return(antsdkchatgroupMsg);
         }
         var sdkmodifyObj = entity as MsModifyGroup;
         if (sdkmodifyObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <Modify>(sdkmodifyObj);
             antsdkchatgroupMsg.content = new Modify_content
             {
                 operateId    = sdkmodifyObj.content?.operateId,
                 groupId      = sdkmodifyObj.content?.groupId,
                 groupName    = sdkmodifyObj.content?.groupName,
                 groupPicture = sdkmodifyObj.content?.groupPicture
             };
             return(antsdkchatgroupMsg);
         }
         var sdkdeleteObj = entity as MsDeleteGroup;
         if (sdkdeleteObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <Delete>(sdkdeleteObj);
             antsdkchatgroupMsg.content = new Delete_content
             {
                 groupId = sdkdeleteObj.content?.groupId
             };
             //收到删除讨论组通知,必须取消订阅讨论组主题收消息
             if (!string.IsNullOrEmpty(sdkdeleteObj.content?.groupId))
             {
                 //连接成功需要订阅的默认主题
                 var topics = new List <string> {
                     sdkdeleteObj.content?.groupId
                 };
                 //取消订阅主题
                 var temperrorMsg = string.Empty;
                 if (!SdkService.UnSubscribe(topics.ToArray(), ref temperrorMsg))
                 {
                     //记录收到删除讨论组通知后取消订阅讨论组主题失败日志
                     LogHelper.WriteError($"Received Delete Group Message UnSubscribe Group Topic,{Resources.AntSdkSubscribeDissolveGroupTopicsError}:{temperrorMsg}");
                 }
             }
             return(antsdkchatgroupMsg);
         }
         var sdkaddmemberObj = entity as MsAddGroupMembers;
         if (sdkaddmemberObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <AddMembers>(sdkaddmemberObj);
             var addmemberList      = new List <AntSdkMember>();
             if (sdkaddmemberObj.content?.members?.Count > 0)
             {
                 addmemberList.AddRange(sdkaddmemberObj.content.members.Select(c => new AntSdkMember
                 {
                     userId   = c.userId,
                     userName = c.userName
                 }));
                 //判断被删除的人中存在当前用户,则当前用户的该组主题需要取消订阅
                 var delcurrentUser =
                     addmemberList.FirstOrDefault(u => u.userId == AntSdkService.AntSdkLoginOutput.userId);
                 if (delcurrentUser != null && !string.IsNullOrEmpty(antsdkchatgroupMsg.sessionId))
                 {
                     //当前客户被群主删除,则订阅此群主题
                     var topics = new List <string> {
                         antsdkchatgroupMsg.sessionId
                     };
                     //订阅主题
                     var temperrorMsg = string.Empty;
                     if (!SdkService.Subscribe(topics.ToArray(), ref temperrorMsg))
                     {
                         //收到群主删除组员包含当前用户则取消订阅讨论组主题失败日志
                         LogHelper.WriteError($"Received Delete Group Member Message Contains Self UnSubscribe Group Topic,{Resources.AntSdkSubscribeDeleteGroupMemberTopicsError}:{temperrorMsg}");
                     }
                 }
             }
             antsdkchatgroupMsg.content = new AddMembers_content
             {
                 operateId = sdkaddmemberObj.content?.operateId,
                 members   = addmemberList
             };
             return(antsdkchatgroupMsg);
         }
         var sdkdeletememberObj = entity as MsDeleteGroupMembers;
         if (sdkdeletememberObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <DeleteMembers>(sdkdeletememberObj);
             var addmemberList      = new List <AntSdkMember>();
             if (sdkdeletememberObj.content?.members?.Count > 0)
             {
                 addmemberList.AddRange(sdkdeletememberObj.content.members.Select(c => new AntSdkMember
                 {
                     userId   = c.userId,
                     userName = c.userName
                 }));
                 //判断被删除的人中存在当前用户,则当前用户的该组主题需要取消订阅
                 var delcurrentUser =
                     addmemberList.FirstOrDefault(u => u.userId == AntSdkService.AntSdkLoginOutput.userId);
                 if (delcurrentUser != null && !string.IsNullOrEmpty(antsdkchatgroupMsg.sessionId))
                 {
                     //当前客户被群主删除,则取消订阅此群主题
                     var topics = new List <string> {
                         antsdkchatgroupMsg.sessionId
                     };
                     //取消订阅主题
                     var temperrorMsg = string.Empty;
                     if (!SdkService.UnSubscribe(topics.ToArray(), ref temperrorMsg))
                     {
                         //收到群主删除组员包含当前用户则取消订阅讨论组主题失败日志
                         LogHelper.WriteError($"Received Delete Group Member Message Contains Self UnSubscribe Group Topic,{Resources.AntSdkSubscribeDeleteGroupMemberTopicsError}:{temperrorMsg}");
                     }
                 }
             }
             antsdkchatgroupMsg.content = new DeleteMembers_content
             {
                 operateId = sdkdeletememberObj.content?.operateId,
                 members   = addmemberList
             };
             return(antsdkchatgroupMsg);
         }
         var sdkquitmembersObj = entity as MsQuitGroupMember;
         if (sdkquitmembersObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <QuitMember>(sdkquitmembersObj);
             antsdkchatgroupMsg.content = new QuitMember_content
             {
                 userId         = sdkquitmembersObj.content?.userId,
                 userName       = sdkquitmembersObj.content?.userName,
                 groupOwnerId   = sdkquitmembersObj.content?.groupOwnerId,
                 groupOwnerName = sdkquitmembersObj.content?.groupOwnerName
             };
             return(antsdkchatgroupMsg);
         }
         var sdkmodifymembersObj = entity as MsModifyGroupMember;
         if (sdkmodifymembersObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <ModifyMember>(sdkmodifymembersObj);
             antsdkchatgroupMsg.content = new ModifyMember_content
             {
                 operateId = sdkmodifymembersObj.content?.operateId,
                 userId    = sdkmodifymembersObj.content?.userId,
                 userName  = sdkmodifymembersObj.content?.userName,
             };
             return(antsdkchatgroupMsg);
         }
         var sdkownerburnmodeObj = entity as MsGroupOwnerBurnMode;
         if (sdkownerburnmodeObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <OwnerBurnMode>(sdkownerburnmodeObj);
             antsdkchatgroupMsg.content = new OwnerBurnMode_content
             {
                 maxIndex = sdkownerburnmodeObj.content?.maxIndex ?? 0
             };
             return(antsdkchatgroupMsg);
         }
         var sdkownerburndeleteObj = entity as MsGroupOwnerBurnDelete;
         if (sdkownerburndeleteObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <OwnerBurnDelete>(sdkownerburndeleteObj);
             antsdkchatgroupMsg.content = new OwnerBurnDelete_content
             {
                 maxIndex = sdkownerburndeleteObj.content?.maxIndex ?? 0
             };
             return(antsdkchatgroupMsg);
         }
         var sdkownerburnnomalObj = entity as MsGroupOwnerNormal;
         if (sdkownerburnnomalObj != null)
         {
             var antsdkchatgroupMsg = GetReceiveAntSdkGroupBaseInfo <OwnerNormal>(sdkownerburnnomalObj);
             antsdkchatgroupMsg.content = sdkownerburnnomalObj.content;
             return(antsdkchatgroupMsg);
         }
         var sdkgroupownerchangObj = entity as MsGroupOwnerChanged;
         if (sdkgroupownerchangObj != null)
         {
             var antsdkownerchangedMsg = GetReceiveAntSdkGroupBaseInfo <OwnerChanged>(sdkgroupownerchangObj);
             antsdkownerchangedMsg.content = new OwnerChanged_content
             {
                 newOwnerId = sdkgroupownerchangObj.content?.newOwnerId,
                 oldOwnerId = sdkgroupownerchangObj.content?.oldOwnerId
             };
             return(antsdkownerchangedMsg);
         }
         var sdkgroupadminsetObj = entity as MsGroupAdminSet;
         if (sdkgroupadminsetObj != null)
         {
             var antsdkowneradminsetMsg = GetReceiveAntSdkGroupBaseInfo <AdminSet>(sdkgroupadminsetObj);
             antsdkowneradminsetMsg.content = new AdminSet_content
             {
                 manageId  = sdkgroupadminsetObj.content?.manageId,
                 roleLevel = sdkgroupadminsetObj.content?.roleLevel ?? 0
             };
             return(antsdkowneradminsetMsg);
         }
         //返回空
         return(null);
     }
     catch (Exception ex)
     {
         LogHelper.WriteError(
             $"[AntSdkChatRoomMsg.GetReceiveAntSdkChatRoomInfo]:{Environment.NewLine}{ex.Message}{ex.StackTrace}");
         return(null);
     }
 }