Browse Source

删除FISMeettingRoleType,与FISConsultationType重复,新增新平台的RoleType

felix 1 year ago
parent
commit
e960aabb88

+ 0 - 11
FISSDK/FISSDK/Consultation/FISConsultationMemberInfo.cs

@@ -160,15 +160,4 @@ namespace FISLib.Consultation
         Update,
         Delete
     }
-
-    /// <summary>
-    /// 会议角色
-    /// </summary>
-    public enum FISConsultationRoleType
-    {
-        Initiator,//上级专家
-        Recipient,//基层
-        Expert,//第三方专家
-        Administrator,//系统管理员
-    }
 }

+ 16 - 0
FISSDK/FISSDK/Consultation/FISConsultationRoleType.cs

@@ -0,0 +1,16 @@
+namespace FISLib.Consultation
+{
+    /// <summary>
+    /// 会议角色
+    /// </summary>
+    public enum FISConsultationRoleType
+    {
+        Initiator,//发起者
+        Recipient,//基层
+        Expert,//第三方专家(适用于老平台)
+        Administrator,//管理员(适用于老平台)
+        Others,//其他参加者(适用于新平台)
+        AssitantDoctor,//助理医师(适用于新平台)
+        Assistant//专家助理(适用于新平台)
+    }
+}

+ 0 - 13
FISSDK/FISSDK/Consultation/FISMeetingRoleType.cs

@@ -1,13 +0,0 @@
-namespace FISLib.Consultation
-{
-    /// <summary>
-    /// 会议角色
-    /// </summary>
-    public enum FISMeetingRoleType
-    {
-        Initiator,
-        Recipient,
-        Expert,//专家
-        Administrator,//系统管理员
-    }
-}

+ 2 - 2
FISSDK/FISSDK/Consultation/FISRecipientInfo.cs

@@ -4,9 +4,9 @@
     {
         public string Id { get; }
 
-        public FISMeetingRoleType RoleType { get; }
+        public FISConsultationRoleType RoleType { get; }
 
-        public FISRecipientInfo(string id, FISMeetingRoleType roleType)
+        public FISRecipientInfo(string id, FISConsultationRoleType roleType)
         {
             Id = id;
             RoleType = roleType;

+ 1 - 1
FISSDK/FISSDKDemo/ViewModels/ConsultationInitiatorPageViewModel.cs

@@ -176,7 +176,7 @@ namespace FISSDKDemo.ViewModels
                 {
                     var recipients = new List<FISRecipientInfo>()
                     {
-                        new FISRecipientInfo(_recipientId, FISMeetingRoleType.Recipient)
+                        new FISRecipientInfo(_recipientId, FISConsultationRoleType.Recipient)
                     };
                     result = _fisConsultation.RequestConsultation(recipients, FIS.FISSettingsInfo.ConsultationConfiguration.ConsultationCameraInfo, FIS.FISSettingsInfo.ConsultationConfiguration.ConsultationMicInfo, FIS.FISSettingsInfo.ConsultationConfiguration.ConsultationSpeakerInfo);
                     success = result == FISLiveStates.OK;

+ 3 - 3
Vinno.vCloud.Common.FIS/Consultation/Consultation.cs

@@ -311,7 +311,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
             var result = LiveStates.UnknowException;
             if (ConsultationRecipient.ConsultationInfo != null)
             {
-                var recipientId = ConsultationRecipient?.ConsultationInfo?.ConsultationMemberInfos.FirstOrDefault(x => x.RoleType == MeetingRoleType.Recipient)?.Id;
+                var recipientId = ConsultationRecipient?.ConsultationInfo?.ConsultationMemberInfos.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Recipient)?.Id;
                 if (recipientId == FLYINSONOUser.AccountId)
                 {
                     result = ConsultationRecipient.Hangup(true);
@@ -664,7 +664,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
 
         private void OnConcultationRequestArrived(object sender, ConsultationInfo e)
         {
-            var primaryDoctorId = e?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == MeetingRoleType.Recipient)?.Id;
+            var primaryDoctorId = e?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Recipient)?.Id;
             if (primaryDoctorId == FLYINSONOUser.AccountId)
             {
                 _isPrimaryDoctor = true;
@@ -685,7 +685,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
 
         private void OnJoinConsultationNotifyArrived(object sender, ConsultationInfo e)
         {
-            var primaryDoctorId = e?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == MeetingRoleType.Recipient)?.Id;
+            var primaryDoctorId = e?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Recipient)?.Id;
             if (primaryDoctorId == FLYINSONOUser.AccountId)
             {
                 _isPrimaryDoctor = true;

+ 3 - 3
Vinno.vCloud.Common.FIS/Consultation/ConsultationClient.cs

@@ -156,12 +156,12 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                 var member = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(f => f.Id == e.UserId);
                 if (member != null)
                 {
-                    if (member.Id == FLYINSONOUser?.AccountId && (member.RoleType == MeetingRoleType.Initiator || member.RoleType == MeetingRoleType.Recipient))
+                    if (member.Id == FLYINSONOUser?.AccountId && (member.RoleType == ConsultationRoleType.Initiator || member.RoleType == ConsultationRoleType.Recipient))
                     {
                         DestroyMeeting();
                         OnDisconnected(ConsultationDisconnectedType.SelfClientOffline);
                     }
-                    else if (member.Id != FLYINSONOUser?.AccountId && (member.RoleType == MeetingRoleType.Initiator || member.RoleType == MeetingRoleType.Recipient))
+                    else if (member.Id != FLYINSONOUser?.AccountId && (member.RoleType == ConsultationRoleType.Initiator || member.RoleType == ConsultationRoleType.Recipient))
                     {
                         DestroyMeeting();
                         OnDisconnected(ConsultationDisconnectedType.HangupByOther);
@@ -433,7 +433,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
             else
             {
                 var member = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(f => f.Id == chatMemberHeartBeatStatusNotification.HeartBeatMemberId);
-                if (member != null && (member.RoleType == MeetingRoleType.Administrator || member.RoleType == MeetingRoleType.Expert))
+                if (member != null && (member.RoleType == ConsultationRoleType.Administrator || member.RoleType == ConsultationRoleType.Expert))
                 {
                     VideoProvider.RemoveVideoProvider(chatMemberHeartBeatStatusNotification.HeartBeatMemberId);
                     member.State = chatMemberHeartBeatStatusNotification.LiveStates;

+ 103 - 23
Vinno.vCloud.Common.FIS/Consultation/ConsultationIntiator.cs

@@ -151,10 +151,29 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                         var memberInfo = ConsultationInfo?.ConsultationMemberInfos.FirstOrDefault(f => f.Id == member.Id);
                         if (member.OperationType == ClientMessageOperationType.Add)
                         {
+                            ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+                            switch (member.RoleType)
+                            {
+                                case MeetingRoleType.Initiator:
+                                    roleType = ConsultationRoleType.Initiator;
+                                    break;
+
+                                case MeetingRoleType.Recipient:
+                                    roleType = ConsultationRoleType.Recipient;
+                                    break;
+
+                                case MeetingRoleType.Expert:
+                                    roleType = ConsultationRoleType.Expert;
+                                    break;
+
+                                case MeetingRoleType.Administrator:
+                                    roleType = ConsultationRoleType.Administrator;
+                                    break;
+                            }
                             var meetingMemberInfo = new ConsultationMemberInfo
                             {
                                 OperationType = member.OperationType,
-                                RoleType = member.RoleType,
+                                RoleType = roleType,
                                 RoomId = member.RoomId,
                                 LoginSource = member.LoginSource,
                                 State = member.State,
@@ -229,25 +248,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                             Id = liveTerminal.Id
                         }).ToList();
 
-                        inviteMeeting.ConsultationMemberInfos = resultMessage.Recipients.Select(member => new ConsultationMemberInfo()
-                        {
-                            OperationType = member.OperationType,
-                            RoleType = member.RoleType,
-                            RoomId = member.RoomId,
-                            LoginSource = member.LoginSource,
-                            State = member.State,
-                            Id = member.Id,
-                            Name = member.Name,
-                            DisplayName = member.DisplayName,
-                            Avatar = member.Avatar,
-                            UserSign = member.UserSign,
-                            PushUrl = member.PushUrl,
-                            PullRtmpUrl = member.PullRtmpUrl,
-                            PullFlvUrl = member.PullFlvUrl,
-                            PullHlsUrl = member.PullHlsUrl,
-                            PushLiveState = member.PushLiveState,
-                        }).ToList();
-
+                        inviteMeeting.ConsultationMemberInfos = resultMessage.Recipients.Select(member => RenderMemberInfo(member)).ToList();
                         return inviteMeeting;
                     }
                 }
@@ -255,6 +256,47 @@ namespace Vinno.vCloud.Common.FIS.Consultation
             return new ConsultationRequestResult(LiveStates.UnknowException);
         }
 
+        private ConsultationMemberInfo RenderMemberInfo(MeetingMemberInfoMessage member)
+        {
+            ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+            switch (member.RoleType)
+            {
+                case MeetingRoleType.Initiator:
+                    roleType = ConsultationRoleType.Initiator;
+                    break;
+
+                case MeetingRoleType.Recipient:
+                    roleType = ConsultationRoleType.Recipient;
+                    break;
+
+                case MeetingRoleType.Expert:
+                    roleType = ConsultationRoleType.Expert;
+                    break;
+
+                case MeetingRoleType.Administrator:
+                    roleType = ConsultationRoleType.Administrator;
+                    break;
+            }
+            return new ConsultationMemberInfo()
+            {
+                OperationType = member.OperationType,
+                RoleType = roleType,
+                RoomId = member.RoomId,
+                LoginSource = member.LoginSource,
+                State = member.State,
+                Id = member.Id,
+                Name = member.Name,
+                DisplayName = member.DisplayName,
+                Avatar = member.Avatar,
+                UserSign = member.UserSign,
+                PushUrl = member.PushUrl,
+                PullRtmpUrl = member.PullRtmpUrl,
+                PullFlvUrl = member.PullFlvUrl,
+                PullHlsUrl = member.PullHlsUrl,
+                PushLiveState = member.PushLiveState,
+            };
+        }
+
         private CreateChatTableOutcome CreateChatTable(string recipientId, bool isGroup)
         {
             try
@@ -317,10 +359,29 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                             List<ConsultationMemberInfo> meetingMemberInfos = new List<ConsultationMemberInfo>();
                             foreach (var member in resultMessage.Members)
                             {
+                                ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+                                switch (member.RoleType)
+                                {
+                                    case MeetingRoleType.Initiator:
+                                        roleType = ConsultationRoleType.Initiator;
+                                        break;
+
+                                    case MeetingRoleType.Recipient:
+                                        roleType = ConsultationRoleType.Recipient;
+                                        break;
+
+                                    case MeetingRoleType.Expert:
+                                        roleType = ConsultationRoleType.Expert;
+                                        break;
+
+                                    case MeetingRoleType.Administrator:
+                                        roleType = ConsultationRoleType.Administrator;
+                                        break;
+                                }
                                 var meetingMemberInfo = new ConsultationMemberInfo
                                 {
                                     OperationType = member.OperationType,
-                                    RoleType = member.RoleType,
+                                    RoleType = roleType,
                                     RoomId = member.RoomId,
                                     LoginSource = member.LoginSource,
                                     State = member.State,
@@ -457,10 +518,29 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                             List<ConsultationMemberInfo> meetingMemberInfos = new List<ConsultationMemberInfo>();
                             foreach (var member in resultMessage.Members)
                             {
+                                ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+                                switch (member.RoleType)
+                                {
+                                    case MeetingRoleType.Initiator:
+                                        roleType = ConsultationRoleType.Initiator;
+                                        break;
+
+                                    case MeetingRoleType.Recipient:
+                                        roleType = ConsultationRoleType.Recipient;
+                                        break;
+
+                                    case MeetingRoleType.Expert:
+                                        roleType = ConsultationRoleType.Expert;
+                                        break;
+
+                                    case MeetingRoleType.Administrator:
+                                        roleType = ConsultationRoleType.Administrator;
+                                        break;
+                                }
                                 var meetingMemberInfo = new ConsultationMemberInfo
                                 {
                                     OperationType = member.OperationType,
-                                    RoleType = member.RoleType,
+                                    RoleType = roleType,
                                     RoomId = member.RoomId,
                                     LoginSource = member.LoginSource,
                                     State = member.State,
@@ -709,7 +789,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                 {
                     _isEmergencyConsultationReceived = false;
                 }
-                var recipientId = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == MeetingRoleType.Recipient)?.Id;
+                var recipientId = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Recipient)?.Id;
                 if (recipientId == FLYINSONOUser.AccountId)
                 {
                     Hangup(true);

+ 43 - 5
Vinno.vCloud.Common.FIS/Consultation/ConsultationRecipient.cs

@@ -94,7 +94,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
             {
                 Logger.WriteLineError($"Exception happened when accept Consultation{ex}");
             }
-            var recipientId = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == MeetingRoleType.Recipient)?.Id;
+            var recipientId = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Recipient)?.Id;
             if (recipientId == FLYINSONOUser.AccountId)
             {
                 Hangup(true);
@@ -116,7 +116,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
             CurrentLiveStatus = LiveStates.RecipientRejected;
             StopConsultation();
             var roomId = ConsultationInfo.RoomId;
-            var initiatorId = ConsultationInfo.ConsultationMemberInfos.FirstOrDefault(x => x.RoleType == MeetingRoleType.Initiator)?.Id;
+            var initiatorId = ConsultationInfo.ConsultationMemberInfos.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Initiator)?.Id;
             lock (ConsultationInfoLocker)
             {
                 ConsultationInfo = null;
@@ -161,10 +161,29 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                         var memberInfo = ConsultationInfo?.ConsultationMemberInfos.FirstOrDefault(f => f.Id == member.Id);
                         if (member.OperationType == ClientMessageOperationType.Add)
                         {
+                            ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+                            switch (member.RoleType)
+                            {
+                                case MeetingRoleType.Initiator:
+                                    roleType = ConsultationRoleType.Initiator;
+                                    break;
+
+                                case MeetingRoleType.Recipient:
+                                    roleType = ConsultationRoleType.Recipient;
+                                    break;
+
+                                case MeetingRoleType.Expert:
+                                    roleType = ConsultationRoleType.Expert;
+                                    break;
+
+                                case MeetingRoleType.Administrator:
+                                    roleType = ConsultationRoleType.Administrator;
+                                    break;
+                            }
                             var meetingMemberInfo = new ConsultationMemberInfo
                             {
                                 OperationType = member.OperationType,
-                                RoleType = member.RoleType,
+                                RoleType = roleType,
                                 RoomId = member.RoomId,
                                 LoginSource = member.LoginSource,
                                 State = member.State,
@@ -294,10 +313,29 @@ namespace Vinno.vCloud.Common.FIS.Consultation
             List<ConsultationMemberInfo> meetingMemberInfos = new List<ConsultationMemberInfo>();
             foreach (var member in startMeetingNotification.Members)
             {
+                ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+                switch (member.RoleType)
+                {
+                    case MeetingRoleType.Initiator:
+                        roleType = ConsultationRoleType.Initiator;
+                        break;
+
+                    case MeetingRoleType.Recipient:
+                        roleType = ConsultationRoleType.Recipient;
+                        break;
+
+                    case MeetingRoleType.Expert:
+                        roleType = ConsultationRoleType.Expert;
+                        break;
+
+                    case MeetingRoleType.Administrator:
+                        roleType = ConsultationRoleType.Administrator;
+                        break;
+                }
                 var meetingMemberInfo = new ConsultationMemberInfo
                 {
                     OperationType = member.OperationType,
-                    RoleType = member.RoleType,
+                    RoleType = roleType,
                     RoomId = member.RoomId,
                     LoginSource = member.LoginSource,
                     State = member.State,
@@ -402,7 +440,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
                 info.TerminalInfo = terminalInfo;
                 info.IsCurrentTerminal = info.TerminalInfo?.Id == _terminalId;
                 ConsultationInfo = info;
-                _initiatorId = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == MeetingRoleType.Initiator)?.Id;
+                _initiatorId = ConsultationInfo?.ConsultationMemberInfos?.FirstOrDefault(x => x.RoleType == ConsultationRoleType.Initiator)?.Id;
             }
             var userName = GetAccoutNameByAccountId(startMeetingNotification.InitiatorId);
             Logger.WriteLineInfo($"StartMeetingNotification handled RoomId:{ConsultationInfo.RoomId}");

+ 1 - 1
Vinno.vCloud.Common.FIS/Consultation/ConsultationRequestResult.cs

@@ -50,7 +50,7 @@ namespace Vinno.vCloud.Common.FIS.Consultation
         /// <summary>
         /// Role Type
         /// </summary>
-        public MeetingRoleType RoleType { get; set; }
+        public ConsultationRoleType RoleType { get; set; }
 
         /// <summary>
         /// Room Id

+ 16 - 0
Vinno.vCloud.Common.FIS/Consultation/ConsultationRoleType.cs

@@ -0,0 +1,16 @@
+namespace Vinno.vCloud.Common.FIS.Consultation
+{
+    /// <summary>
+    /// 会议角色
+    /// </summary>
+    public enum ConsultationRoleType
+    {
+        Initiator,//发起者
+        Recipient,//基层
+        Expert,//第三方专家(适用于老平台)
+        Administrator,//管理员(适用于老平台)
+        Others,//其他参加者(适用于新平台)
+        AssitantDoctor,//助理医师(适用于新平台)
+        Assistant//专家助理(适用于新平台)
+    }
+}

+ 1 - 0
Vinno.vCloud.Common.FIS/FLYINSONOLogin/FLYINSONOUser.cs

@@ -14,6 +14,7 @@ using Vinno.vCloud.Protocol.Messages.Admin.RemoteDiagnosis;
 using Vinno.vCloud.Protocol.Messages.Client.Account;
 using Vinno.vCloud.Protocol.Messages.Client.Login;
 using Vinno.vCloud.Protocol.Messages.Login;
+using ConsultationRoleType = Vinno.vCloud.Protocol.Infrastructures.ConsultationRoleType;
 
 namespace Vinno.vCloud.Common.FIS.FLYINSONOLogin
 {

+ 41 - 2
Vinno.vCloud.Common.FIS/Helper/DTOConverter.cs

@@ -20,6 +20,7 @@ using WingInterfaceLibrary.Enum;
 using WingInterfaceLibrary.LiveConsultation;
 using WingInterfaceLibrary.Request.Device;
 using WingInterfaceLibrary.Result.Examine;
+using ConsultationRoleType = Vinno.vCloud.Common.FIS.Consultation.ConsultationRoleType;
 
 namespace Vinno.vCloud.Common.FIS.Helper
 {
@@ -1872,10 +1873,29 @@ namespace Vinno.vCloud.Common.FIS.Helper
             {
                 foreach (var member in meetingMemberNotification.Members)
                 {
+                    ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+                    switch (member.RoleType)
+                    {
+                        case MeetingRoleType.Initiator:
+                            roleType = ConsultationRoleType.Initiator;
+                            break;
+
+                        case MeetingRoleType.Recipient:
+                            roleType = ConsultationRoleType.Recipient;
+                            break;
+
+                        case MeetingRoleType.Expert:
+                            roleType = ConsultationRoleType.Expert;
+                            break;
+
+                        case MeetingRoleType.Administrator:
+                            roleType = ConsultationRoleType.Administrator;
+                            break;
+                    }
                     var memberInfo = new ConsultationMemberInfo
                     {
                         OperationType = member.OperationType,
-                        RoleType = member.RoleType,
+                        RoleType = roleType,
                         RoomId = member.RoomId,
                         LoginSource = member.LoginSource,
                         State = member.State,
@@ -1950,10 +1970,29 @@ namespace Vinno.vCloud.Common.FIS.Helper
             {
                 return null;
             }
+            ConsultationRoleType roleType = ConsultationRoleType.Initiator;
+            switch (memberInfoMessage.RoleType)
+            {
+                case MeetingRoleType.Initiator:
+                    roleType = ConsultationRoleType.Initiator;
+                    break;
+
+                case MeetingRoleType.Recipient:
+                    roleType = ConsultationRoleType.Recipient;
+                    break;
+
+                case MeetingRoleType.Expert:
+                    roleType = ConsultationRoleType.Expert;
+                    break;
+
+                case MeetingRoleType.Administrator:
+                    roleType = ConsultationRoleType.Administrator;
+                    break;
+            }
             return new ConsultationMemberInfo()
             {
                 OperationType = memberInfoMessage.OperationType,
-                RoleType = memberInfoMessage.RoleType,
+                RoleType = roleType,
                 RoomId = memberInfoMessage.RoomId,
                 LoginSource = memberInfoMessage.LoginSource,
                 State = memberInfoMessage.State,