浏览代码

提交同步通知消息

MIke 2 年之前
父节点
当前提交
6becd143e0

+ 1 - 1
Tools/TestTools/client/lib/Services/ApiTestService.dart

@@ -7,7 +7,7 @@ class ApiTestService {
     var testCases = <TestCase>[];
     testCases.add(new TestCase(
         id: "1",
-        url: "http://192.168.6.80:8303/IPatientService",
+        url: "http://192.168.6.20:8303/IPatientService",
         method: "POST",
         body: '"{'
             '"jsonrpc": "2.0"'

+ 1 - 1
Tools/TestTools/client/lib/Services/AppSettings.dart

@@ -1,5 +1,5 @@
 class AppSettings {
-  static late String host = 'http://192.168.6.80:8303';
+  static late String host = 'http://192.168.6.20:8303';
   static final bool useProxy = false;
   //static late String host = 'https://192.168.6.175:8443/api'; //proxy
 }

+ 122 - 17
Tools/TestTools/client/lib/Services/NotificationReceivedArgs.dart

@@ -8,7 +8,10 @@ class NotificationReceivedArgs extends EventArgs {
 }
 
 enum NotificationTypeEnum {
-  Daiding,
+ /// <summary>
+  /// Unknown|0| 未知
+  /// </summary>
+  Unknown,
 
   /// <summary>
   /// ChatMsgNotification|1| 聊天通知
@@ -16,42 +19,49 @@ enum NotificationTypeEnum {
   ChatMsgNotification,
 
   /// <summary>
-  /// UpgradeVersionNotification|2| 版本更新通知
+  /// TokenReplacedNotification|2| 账号被替换登出通知
   /// </summary>
-  UpgradeVersionNotification,
+  TokenReplacedNotification,
 
   /// <summary>
-  /// LogoffNotification|3| 登出通知
+  /// DisconnectNotification| 3|与服务器断开连接通知
   /// </summary>
-  LogoffNotification,
+  DisconnectNotification,
 
   /// <summary>
-  /// DisconnectNotification| 4|与服务器断开连接通知
+  /// ConnectionNotification| 4|	与服务器已连接通知
   /// </summary>
-  DisconnectNotification,
+  ConnectionNotification,
 
   /// <summary>
-  /// ConnectionNotification| 5|	与服务器已连接通知
+  /// ExamRecordsFinishedNotification| 5 | 完成检查通知
   /// </summary>
-  ConnectionNotification,
+  ExamRecordsFinishedNotification,
 
   /// <summary>
-  ///FinishNotifyRecordsMessage| 6 | 检查记录完成消息类型
+  /// RejectApplyConsultationNotification| 6 | 拒绝预约申请的通知
   /// </summary>
-  FinishNotifyRecordsMessage,
+  RejectApplyConsultationNotification,
 
   /// <summary>
-  ///InvitedEnterRoomNotification| 7 | 邀请用户加入房间通知
+  /// CancelInvitingInLiveConsultationNotification| 7 | 取消会诊过程中邀请其他成员的通知
   /// </summary>
-  InvitedEnterRoomNotification,
+  CancelInvitingInLiveConsultationNotification,
 
   /// <summary>
-  ///CancelInvitedEnterRoomNotification| 8 |取消邀请用户通知
+  /// InviteInLiveConsultationNotification| 8 | 会诊过程中邀请其他成员的通知
   /// </summary>
-  CancelInvitedEnterRoomNotification,
+  InviteInLiveConsultationNotification,
 
-  placeholder9,
-  placeholder10,
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 9 | 会诊开始前提醒的通知
+  /// </summary>
+  ConsultationRemindNotification,
+
+  /// <summary>
+  /// PasswordExpiredWarningNotification| 10 | 用户密码过期预警通知
+  /// </summary>
+  PasswordExpiredWarningNotification,
 
   /// <summary>
   /// InviteLiveConsultationNotification| 11 | 开始会诊的通知
@@ -67,4 +77,99 @@ enum NotificationTypeEnum {
   /// RejectLiveConsultationNotification| 13 | 拒绝会诊的通知
   /// </summary>
   RejectLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationToDeviceNotification| 14 | 开始会诊通知 to 设备端
+  /// </summary>
+  InviteLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationNotification| 15 | 取消会诊通知
+  /// </summary>
+  CancelLiveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationNotification| 16 | 关闭会诊通知
+  /// </summary>
+  CloseLiveConsultationNotification,
+
+  /// <summary>
+  /// JoinLiveConsultationNotification| 17 | 进入会诊通知
+  /// </summary>
+  JoinLiveConsultationNotification,
+
+  /// <summary>
+  /// NetworkErrConsultationNotification| 18 | 网络质量不佳会诊通知
+  /// </summary>
+  NetworkErrConsultationNotification,
+
+  /// <summary>
+  /// LeaveConsultationNotification| 19 | 离开会诊通知
+  /// </summary>
+  LeaveConsultationNotification,
+
+  /// <summary>
+  /// JoinInLiveConsultationNotification| 20 | 会诊中加入房间
+  /// </summary>
+  JoinInLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 21 | 拒绝会诊的通知
+  /// </summary>
+  RejectInviteLiveConsultationNotification,
+
+  /// <summary>
+  /// ApplyConsultationNotification| 22 | 会诊申请通知
+  /// </summary>
+  ApplyConsultationNotification,
+
+  /// <summary>
+  /// ApprovalApplyConsultationNotification| 23 | 批准申请会诊通知
+  /// </summary>
+  ApprovalApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeConsultationNotification| 24 | 会诊受邀请人通知
+  /// </summary>
+  InviteeConsultationNotification,
+
+  /// <summary>
+  /// InviteeApproveApplyConsultationNotification| 25 | 会诊受邀请参与人同意通知
+  /// </summary>
+  InviteeApproveApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeRejectApplyConsultationNotification| 26 | 会诊受邀请参与人拒绝通知
+  /// </summary>
+  InviteeRejectApplyConsultationNotification,
+
+  /// <summary>
+  /// MuteLiveConsultationNotification| 27 | 开启关闭静音
+  /// </summary>
+  MuteLiveConsultationNotification,
+
+  /// <summary>
+  /// SwitchLiveConsultationVideoNotification| 28 | 开启关闭视频
+  /// </summary>
+  SwitchLiveConsultationVideoNotification,
+
+  /// <summary>
+  /// HeartRateJoinConsultationNotification| 29 | 会诊心跳,进入房间
+  /// </summary>
+  HeartRateJoinConsultationNotification,
+
+  /// <summary>
+  /// HeartRateLeaveConsultationNotification| 30 | 会诊心跳,离开房间
+  /// </summary>
+  HeartRateLeaveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationToDeviceNotification| 31 | 关闭会诊通知 to 设备端
+  /// </summary>
+  CloseLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationToDeviceNotification| 32 | 取消会诊通知 to 设备端
+  /// </summary>
+  CancelLiveConsultationToDeviceNotification
 }

+ 125 - 20
Tools/TestTools/client/lib/SignInScreen.dart

@@ -34,7 +34,7 @@ class SignInForm extends StatefulWidget {
 
 class _SignInFormState extends State<SignInForm> {
   final _serverUrlTextController =
-      TextEditingController(text: "http://192.168.6.80:8303");
+      TextEditingController(text: "http://192.168.6.20:8303");
   final _userNameTextController = TextEditingController(text: "fly01");
   final _userPasswordTextController =
       TextEditingController(text: "fb6414d24e3c347d46032b0496f1c4e4");
@@ -140,7 +140,10 @@ class _SignInFormState extends State<SignInForm> {
 }
 
 enum NotificationTypeEnum {
-  Daiding,
+  /// <summary>
+  /// Unknown|0| 未知
+  /// </summary>
+  Unknown,
 
   /// <summary>
   /// ChatMsgNotification|1| 聊天通知
@@ -148,42 +151,49 @@ enum NotificationTypeEnum {
   ChatMsgNotification,
 
   /// <summary>
-  /// UpgradeVersionNotification|2| 版本更新通知
+  /// TokenReplacedNotification|2| 账号被替换登出通知
   /// </summary>
-  UpgradeVersionNotification,
+  TokenReplacedNotification,
 
   /// <summary>
-  /// LogoffNotification|3| 登出通知
+  /// DisconnectNotification| 3|与服务器断开连接通知
   /// </summary>
-  LogoffNotification,
+  DisconnectNotification,
 
   /// <summary>
-  /// DisconnectNotification| 4|与服务器断开连接通知
+  /// ConnectionNotification| 4|	与服务器已连接通知
   /// </summary>
-  DisconnectNotification,
+  ConnectionNotification,
 
   /// <summary>
-  /// ConnectionNotification| 5|	与服务器已连接通知
+  /// ExamRecordsFinishedNotification| 5 | 完成检查通知
   /// </summary>
-  ConnectionNotification,
+  ExamRecordsFinishedNotification,
 
   /// <summary>
-  ///FinishNotifyRecordsMessage| 6 | 检查记录完成消息类型
+  /// RejectApplyConsultationNotification| 6 | 拒绝预约申请的通知
   /// </summary>
-  FinishNotifyRecordsMessage,
+  RejectApplyConsultationNotification,
 
   /// <summary>
-  ///InvitedEnterRoomNotification| 7 | 邀请用户加入房间通知
+  /// CancelInvitingInLiveConsultationNotification| 7 | 取消会诊过程中邀请其他成员的通知
   /// </summary>
-  InvitedEnterRoomNotification,
+  CancelInvitingInLiveConsultationNotification,
 
   /// <summary>
-  ///CancelInvitedEnterRoomNotification| 8 |取消邀请用户通知
+  /// InviteInLiveConsultationNotification| 8 | 会诊过程中邀请其他成员的通知
   /// </summary>
-  CancelInvitedEnterRoomNotification,
+  InviteInLiveConsultationNotification,
 
-  placeholder9,
-  placeholder10,
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 9 | 会诊开始前提醒的通知
+  /// </summary>
+  ConsultationRemindNotification,
+
+  /// <summary>
+  /// PasswordExpiredWarningNotification| 10 | 用户密码过期预警通知
+  /// </summary>
+  PasswordExpiredWarningNotification,
 
   /// <summary>
   /// InviteLiveConsultationNotification| 11 | 开始会诊的通知
@@ -199,12 +209,107 @@ enum NotificationTypeEnum {
   /// RejectLiveConsultationNotification| 13 | 拒绝会诊的通知
   /// </summary>
   RejectLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationToDeviceNotification| 14 | 开始会诊通知 to 设备端
+  /// </summary>
+  InviteLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationNotification| 15 | 取消会诊通知
+  /// </summary>
+  CancelLiveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationNotification| 16 | 关闭会诊通知
+  /// </summary>
+  CloseLiveConsultationNotification,
+
+  /// <summary>
+  /// JoinLiveConsultationNotification| 17 | 进入会诊通知
+  /// </summary>
+  JoinLiveConsultationNotification,
+
+  /// <summary>
+  /// NetworkErrConsultationNotification| 18 | 网络质量不佳会诊通知
+  /// </summary>
+  NetworkErrConsultationNotification,
+
+  /// <summary>
+  /// LeaveConsultationNotification| 19 | 离开会诊通知
+  /// </summary>
+  LeaveConsultationNotification,
+
+  /// <summary>
+  /// JoinInLiveConsultationNotification| 20 | 会诊中加入房间
+  /// </summary>
+  JoinInLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 21 | 拒绝会诊的通知
+  /// </summary>
+  RejectInviteLiveConsultationNotification,
+
+  /// <summary>
+  /// ApplyConsultationNotification| 22 | 会诊申请通知
+  /// </summary>
+  ApplyConsultationNotification,
+
+  /// <summary>
+  /// ApprovalApplyConsultationNotification| 23 | 批准申请会诊通知
+  /// </summary>
+  ApprovalApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeConsultationNotification| 24 | 会诊受邀请人通知
+  /// </summary>
+  InviteeConsultationNotification,
+
+  /// <summary>
+  /// InviteeApproveApplyConsultationNotification| 25 | 会诊受邀请参与人同意通知
+  /// </summary>
+  InviteeApproveApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeRejectApplyConsultationNotification| 26 | 会诊受邀请参与人拒绝通知
+  /// </summary>
+  InviteeRejectApplyConsultationNotification,
+
+  /// <summary>
+  /// MuteLiveConsultationNotification| 27 | 开启关闭静音
+  /// </summary>
+  MuteLiveConsultationNotification,
+
+  /// <summary>
+  /// SwitchLiveConsultationVideoNotification| 28 | 开启关闭视频
+  /// </summary>
+  SwitchLiveConsultationVideoNotification,
+
+  /// <summary>
+  /// HeartRateJoinConsultationNotification| 29 | 会诊心跳,进入房间
+  /// </summary>
+  HeartRateJoinConsultationNotification,
+
+  /// <summary>
+  /// HeartRateLeaveConsultationNotification| 30 | 会诊心跳,离开房间
+  /// </summary>
+  HeartRateLeaveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationToDeviceNotification| 31 | 关闭会诊通知 to 设备端
+  /// </summary>
+  CloseLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationToDeviceNotification| 32 | 取消会诊通知 to 设备端
+  /// </summary>
+  CancelLiveConsultationToDeviceNotification
 }
 
 class ConnectionNotification {
   NotificationTypeEnum notificationType;
   ConnectionNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory ConnectionNotification.fromJson(Map<String, dynamic> map) {
     return ConnectionNotification(
@@ -217,7 +322,7 @@ class ConnectionNotification {
 class DisconnectNotification {
   NotificationTypeEnum notificationType;
   DisconnectNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory DisconnectNotification.fromJson(Map<String, dynamic> map) {
     return DisconnectNotification(

+ 3 - 3
Tools/TestTools/client/lib/UserView.dart

@@ -127,7 +127,7 @@ class _UserView extends State<UserView> {
 class ConnectionNotification {
   NotificationTypeEnum notificationType;
   ConnectionNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory ConnectionNotification.fromJson(Map<String, dynamic> map) {
     return ConnectionNotification(
@@ -140,7 +140,7 @@ class ConnectionNotification {
 class DisconnectNotification {
   NotificationTypeEnum notificationType;
   DisconnectNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory DisconnectNotification.fromJson(Map<String, dynamic> map) {
     return DisconnectNotification(
@@ -154,7 +154,7 @@ class FinishNotifyRecordsMessage {
   NotificationTypeEnum notificationType;
   List<String>? codes;
   FinishNotifyRecordsMessage(
-      {this.notificationType = NotificationTypeEnum.Daiding, this.codes});
+      {this.notificationType = NotificationTypeEnum.Unknown, this.codes});
   factory FinishNotifyRecordsMessage.fromJson(Map<String, dynamic> map) {
     return FinishNotifyRecordsMessage(
       notificationType: NotificationTypeEnum.values

+ 70 - 70
Tools/TestTools/client/pubspec.lock

@@ -5,98 +5,98 @@ packages:
     dependency: transitive
     description:
       name: ansicolor
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.1"
   async:
     dependency: transitive
     description:
       name: async
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.9.0"
   autocomplete_textfield:
     dependency: "direct main"
     description:
       name: autocomplete_textfield
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.1"
   boolean_selector:
     dependency: transitive
     description:
       name: boolean_selector
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.0"
   characters:
     dependency: transitive
     description:
       name: characters
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.2.1"
   clock:
     dependency: transitive
     description:
       name: clock
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.1.1"
   collection:
     dependency: transitive
     description:
       name: collection
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.16.0"
   colorize_logger:
     dependency: "direct main"
     description:
       name: colorize_logger
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.1.0"
   crypto:
     dependency: transitive
     description:
       name: crypto
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "3.0.2"
   cupertino_icons:
     dependency: "direct main"
     description:
       name: cupertino_icons
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.0.5"
   event:
     dependency: "direct main"
     description:
       name: event
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.2"
   fake_async:
     dependency: transitive
     description:
       name: fake_async
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.3.1"
   ffi:
     dependency: transitive
     description:
       name: ffi
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.1"
   file:
     dependency: transitive
     description:
       name: file
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "6.1.4"
   flutter:
@@ -108,21 +108,21 @@ packages:
     dependency: "direct main"
     description:
       name: flutter_combo_box
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.0.2+5"
   flutter_datetime_picker:
     dependency: "direct main"
     description:
       name: flutter_datetime_picker
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.5.1"
   flutter_guid:
     dependency: "direct main"
     description:
       name: flutter_guid
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.3.1"
   flutter_localizations:
@@ -134,7 +134,7 @@ packages:
     dependency: "direct main"
     description:
       name: flutter_styled_toast
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.3"
   flutter_test:
@@ -151,182 +151,182 @@ packages:
     dependency: "direct main"
     description:
       name: fluttertoast
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "8.1.2"
   get_it:
     dependency: "direct main"
     description:
       name: get_it
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "7.2.0"
   http:
     dependency: "direct main"
     description:
       name: http
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.13.5"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "4.0.2"
   intl:
     dependency: "direct main"
     description:
       name: intl
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.17.0"
   js:
     dependency: transitive
     description:
       name: js
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.6.4"
   json_annotation:
     dependency: transitive
     description:
       name: json_annotation
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "4.7.0"
   load:
     dependency: "direct main"
     description:
       name: load
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.0.0"
   localstorage:
     dependency: "direct main"
     description:
       name: localstorage
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "4.0.0+1"
   matcher:
     dependency: transitive
     description:
       name: matcher
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.12.12"
   material_color_utilities:
     dependency: transitive
     description:
       name: material_color_utilities
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.2.0"
+    version: "0.1.5"
   meta:
     dependency: transitive
     description:
       name: meta
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.0"
   nested:
     dependency: transitive
     description:
       name: nested
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.0.0"
   path:
     dependency: transitive
     description:
       name: path
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.2"
   path_provider:
     dependency: transitive
     description:
       name: path_provider
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.11"
   path_provider_android:
     dependency: transitive
     description:
       name: path_provider_android
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.22"
   path_provider_ios:
     dependency: transitive
     description:
       name: path_provider_ios
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.11"
   path_provider_linux:
     dependency: transitive
     description:
       name: path_provider_linux
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.7"
   path_provider_macos:
     dependency: transitive
     description:
       name: path_provider_macos
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.6"
   path_provider_platform_interface:
     dependency: transitive
     description:
       name: path_provider_platform_interface
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.5"
   path_provider_windows:
     dependency: transitive
     description:
       name: path_provider_windows
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.3"
   platform:
     dependency: transitive
     description:
       name: platform
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "3.1.0"
   plugin_platform_interface:
     dependency: transitive
     description:
       name: plugin_platform_interface
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.3"
   process:
     dependency: transitive
     description:
       name: process
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "4.2.4"
   provider:
     dependency: "direct main"
     description:
       name: provider
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "6.0.4"
+    version: "6.0.5"
   sentry:
     dependency: transitive
     description:
       name: sentry
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "5.1.0"
   sky_engine:
@@ -338,133 +338,133 @@ packages:
     dependency: transitive
     description:
       name: source_span
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.9.1"
+    version: "1.9.0"
   sqflite:
     dependency: "direct main"
     description:
       name: sqflite
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.2.2"
   sqflite_common:
     dependency: transitive
     description:
       name: sqflite_common
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.4.0+2"
   sqflite_common_ffi:
     dependency: "direct main"
     description:
       name: sqflite_common_ffi
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.2.0+1"
   sqlite3:
     dependency: transitive
     description:
       name: sqlite3
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.9.1"
   stack_trace:
     dependency: transitive
     description:
       name: stack_trace
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.10.0"
   stream_channel:
     dependency: transitive
     description:
       name: stream_channel
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.0"
   string_scanner:
     dependency: transitive
     description:
       name: string_scanner
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.1.1"
   synchronized:
     dependency: transitive
     description:
       name: synchronized
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "3.0.0+3"
   tencent_trtc_cloud:
     dependency: "direct main"
     description:
       name: tencent_trtc_cloud
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.4.1"
+    version: "2.4.2"
   term_glyph:
     dependency: transitive
     description:
       name: term_glyph
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.2.1"
   test_api:
     dependency: transitive
     description:
       name: test_api
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.4.13"
+    version: "0.4.12"
   typed_data:
     dependency: transitive
     description:
       name: typed_data
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "1.3.1"
   uuid:
     dependency: transitive
     description:
       name: uuid
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "3.0.7"
   validators:
     dependency: transitive
     description:
       name: validators
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "3.0.0"
   vector_math:
     dependency: transitive
     description:
       name: vector_math
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.1.3"
+    version: "2.1.2"
   web_socket_channel:
     dependency: "direct main"
     description:
       name: web_socket_channel
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "2.2.0"
   win32:
     dependency: transitive
     description:
       name: win32
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
-    version: "3.1.2"
+    version: "3.1.3"
   xdg_directories:
     dependency: transitive
     description:
       name: xdg_directories
-      url: "https://mirrors.cloud.tencent.com/dart-pub/"
+      url: "https://pub.dartlang.org"
     source: hosted
     version: "0.2.0+2"
 sdks:

+ 140 - 17
Tools/TestTools/ustest/lib/DeviceInfo.dart

@@ -391,7 +391,10 @@ class _DeviceInfoViewState extends State<DeviceInfoView> {
 }
 
 enum NotificationTypeEnum {
-  Daiding,
+ /// <summary>
+  /// Unknown|0| 未知
+  /// </summary>
+  Unknown,
 
   /// <summary>
   /// ChatMsgNotification|1| 聊天通知
@@ -399,45 +402,165 @@ enum NotificationTypeEnum {
   ChatMsgNotification,
 
   /// <summary>
-  /// UpgradeVersionNotification|2| 版本更新通知
+  /// TokenReplacedNotification|2| 账号被替换登出通知
   /// </summary>
-  UpgradeVersionNotification,
+  TokenReplacedNotification,
 
   /// <summary>
-  /// LogoffNotification|3| 登出通知
+  /// DisconnectNotification| 3|与服务器断开连接通知
   /// </summary>
-  LogoffNotification,
+  DisconnectNotification,
 
   /// <summary>
-  /// DisconnectNotification| 4|与服务器断开连接通知
+  /// ConnectionNotification| 4|	与服务器已连接通知
   /// </summary>
-  DisconnectNotification,
+  ConnectionNotification,
 
   /// <summary>
-  /// ConnectionNotification| 5|	与服务器已连接通知
+  /// ExamRecordsFinishedNotification| 5 | 完成检查通知
   /// </summary>
-  ConnectionNotification,
+  ExamRecordsFinishedNotification,
+
+  /// <summary>
+  /// RejectApplyConsultationNotification| 6 | 拒绝预约申请的通知
+  /// </summary>
+  RejectApplyConsultationNotification,
+
+  /// <summary>
+  /// CancelInvitingInLiveConsultationNotification| 7 | 取消会诊过程中邀请其他成员的通知
+  /// </summary>
+  CancelInvitingInLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 8 | 会诊过程中邀请其他成员的通知
+  /// </summary>
+  InviteInLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 9 | 会诊开始前提醒的通知
+  /// </summary>
+  ConsultationRemindNotification,
+
+  /// <summary>
+  /// PasswordExpiredWarningNotification| 10 | 用户密码过期预警通知
+  /// </summary>
+  PasswordExpiredWarningNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationNotification| 11 | 开始会诊的通知
+  /// </summary>
+  InviteLiveConsultationNotification,
+
+  /// <summary>
+  /// AcceptLiveConsultationNotification| 12 | 接受会诊的通知
+  /// </summary>
+  AcceptLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 13 | 拒绝会诊的通知
+  /// </summary>
+  RejectLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationToDeviceNotification| 14 | 开始会诊通知 to 设备端
+  /// </summary>
+  InviteLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationNotification| 15 | 取消会诊通知
+  /// </summary>
+  CancelLiveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationNotification| 16 | 关闭会诊通知
+  /// </summary>
+  CloseLiveConsultationNotification,
+
+  /// <summary>
+  /// JoinLiveConsultationNotification| 17 | 进入会诊通知
+  /// </summary>
+  JoinLiveConsultationNotification,
+
+  /// <summary>
+  /// NetworkErrConsultationNotification| 18 | 网络质量不佳会诊通知
+  /// </summary>
+  NetworkErrConsultationNotification,
+
+  /// <summary>
+  /// LeaveConsultationNotification| 19 | 离开会诊通知
+  /// </summary>
+  LeaveConsultationNotification,
+
+  /// <summary>
+  /// JoinInLiveConsultationNotification| 20 | 会诊中加入房间
+  /// </summary>
+  JoinInLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 21 | 拒绝会诊的通知
+  /// </summary>
+  RejectInviteLiveConsultationNotification,
+
+  /// <summary>
+  /// ApplyConsultationNotification| 22 | 会诊申请通知
+  /// </summary>
+  ApplyConsultationNotification,
+
+  /// <summary>
+  /// ApprovalApplyConsultationNotification| 23 | 批准申请会诊通知
+  /// </summary>
+  ApprovalApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeConsultationNotification| 24 | 会诊受邀请人通知
+  /// </summary>
+  InviteeConsultationNotification,
+
+  /// <summary>
+  /// InviteeApproveApplyConsultationNotification| 25 | 会诊受邀请参与人同意通知
+  /// </summary>
+  InviteeApproveApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeRejectApplyConsultationNotification| 26 | 会诊受邀请参与人拒绝通知
+  /// </summary>
+  InviteeRejectApplyConsultationNotification,
+
+  /// <summary>
+  /// MuteLiveConsultationNotification| 27 | 开启关闭静音
+  /// </summary>
+  MuteLiveConsultationNotification,
+
+  /// <summary>
+  /// SwitchLiveConsultationVideoNotification| 28 | 开启关闭视频
+  /// </summary>
+  SwitchLiveConsultationVideoNotification,
+
+  /// <summary>
+  /// HeartRateJoinConsultationNotification| 29 | 会诊心跳,进入房间
+  /// </summary>
+  HeartRateJoinConsultationNotification,
 
   /// <summary>
-  ///FinishNotifyRecordsMessage| 6 | 检查记录完成消息类型
+  /// HeartRateLeaveConsultationNotification| 30 | 会诊心跳,离开房间
   /// </summary>
-  FinishNotifyRecordsMessage,
+  HeartRateLeaveConsultationNotification,
 
   /// <summary>
-  ///InvitedEnterRoomNotification| 7 | 邀请用户加入房间通知
+  /// CloseLiveConsultationToDeviceNotification| 31 | 关闭会诊通知 to 设备端
   /// </summary>
-  InvitedEnterRoomNotification,
+  CloseLiveConsultationToDeviceNotification,
 
   /// <summary>
-  ///CancelInvitedEnterRoomNotification| 8 |取消邀请用户通知
+  /// CancelLiveConsultationToDeviceNotification| 32 | 取消会诊通知 to 设备端
   /// </summary>
-  CancelInvitedEnterRoomNotification,
+  CancelLiveConsultationToDeviceNotification
 }
 
 class ConnectionNotification {
   NotificationTypeEnum notificationType;
   ConnectionNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory ConnectionNotification.fromJson(Map<String, dynamic> map) {
     return ConnectionNotification(
@@ -450,7 +573,7 @@ class ConnectionNotification {
 class DisconnectNotification {
   NotificationTypeEnum notificationType;
   DisconnectNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory DisconnectNotification.fromJson(Map<String, dynamic> map) {
     return DisconnectNotification(

+ 140 - 19
Tools/TestTools/ustest/lib/SignInScreen.dart

@@ -117,7 +117,6 @@ class _SignInFormState extends State<SignInForm> {
                       child: const Text('Cancel'),
                     ),
                   ),
-
                 ],
               )),
           TextButton(
@@ -139,14 +138,16 @@ class _SignInFormState extends State<SignInForm> {
     var password = _userPasswordTextController.text;
     var result = await service.signInAsync(userName, password);
     if (result != null) {
-    
       Navigator.of(context).pushNamed('/');
     }
   }
 }
 
 enum NotificationTypeEnum {
-  Daiding,
+  /// <summary>
+  /// Unknown|0| 未知
+  /// </summary>
+  Unknown,
 
   /// <summary>
   /// ChatMsgNotification|1| 聊天通知
@@ -154,45 +155,165 @@ enum NotificationTypeEnum {
   ChatMsgNotification,
 
   /// <summary>
-  /// UpgradeVersionNotification|2| 版本更新通知
+  /// TokenReplacedNotification|2| 账号被替换登出通知
   /// </summary>
-  UpgradeVersionNotification,
+  TokenReplacedNotification,
 
   /// <summary>
-  /// LogoffNotification|3| 登出通知
+  /// DisconnectNotification| 3|与服务器断开连接通知
   /// </summary>
-  LogoffNotification,
+  DisconnectNotification,
 
   /// <summary>
-  /// DisconnectNotification| 4|与服务器断开连接通知
+  /// ConnectionNotification| 4|	与服务器已连接通知
   /// </summary>
-  DisconnectNotification,
+  ConnectionNotification,
 
   /// <summary>
-  /// ConnectionNotification| 5|	与服务器已连接通知
+  /// ExamRecordsFinishedNotification| 5 | 完成检查通知
   /// </summary>
-  ConnectionNotification,
+  ExamRecordsFinishedNotification,
+
+  /// <summary>
+  /// RejectApplyConsultationNotification| 6 | 拒绝预约申请的通知
+  /// </summary>
+  RejectApplyConsultationNotification,
+
+  /// <summary>
+  /// CancelInvitingInLiveConsultationNotification| 7 | 取消会诊过程中邀请其他成员的通知
+  /// </summary>
+  CancelInvitingInLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 8 | 会诊过程中邀请其他成员的通知
+  /// </summary>
+  InviteInLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 9 | 会诊开始前提醒的通知
+  /// </summary>
+  ConsultationRemindNotification,
+
+  /// <summary>
+  /// PasswordExpiredWarningNotification| 10 | 用户密码过期预警通知
+  /// </summary>
+  PasswordExpiredWarningNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationNotification| 11 | 开始会诊的通知
+  /// </summary>
+  InviteLiveConsultationNotification,
+
+  /// <summary>
+  /// AcceptLiveConsultationNotification| 12 | 接受会诊的通知
+  /// </summary>
+  AcceptLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 13 | 拒绝会诊的通知
+  /// </summary>
+  RejectLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationToDeviceNotification| 14 | 开始会诊通知 to 设备端
+  /// </summary>
+  InviteLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationNotification| 15 | 取消会诊通知
+  /// </summary>
+  CancelLiveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationNotification| 16 | 关闭会诊通知
+  /// </summary>
+  CloseLiveConsultationNotification,
+
+  /// <summary>
+  /// JoinLiveConsultationNotification| 17 | 进入会诊通知
+  /// </summary>
+  JoinLiveConsultationNotification,
+
+  /// <summary>
+  /// NetworkErrConsultationNotification| 18 | 网络质量不佳会诊通知
+  /// </summary>
+  NetworkErrConsultationNotification,
+
+  /// <summary>
+  /// LeaveConsultationNotification| 19 | 离开会诊通知
+  /// </summary>
+  LeaveConsultationNotification,
+
+  /// <summary>
+  /// JoinInLiveConsultationNotification| 20 | 会诊中加入房间
+  /// </summary>
+  JoinInLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 21 | 拒绝会诊的通知
+  /// </summary>
+  RejectInviteLiveConsultationNotification,
+
+  /// <summary>
+  /// ApplyConsultationNotification| 22 | 会诊申请通知
+  /// </summary>
+  ApplyConsultationNotification,
+
+  /// <summary>
+  /// ApprovalApplyConsultationNotification| 23 | 批准申请会诊通知
+  /// </summary>
+  ApprovalApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeConsultationNotification| 24 | 会诊受邀请人通知
+  /// </summary>
+  InviteeConsultationNotification,
+
+  /// <summary>
+  /// InviteeApproveApplyConsultationNotification| 25 | 会诊受邀请参与人同意通知
+  /// </summary>
+  InviteeApproveApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeRejectApplyConsultationNotification| 26 | 会诊受邀请参与人拒绝通知
+  /// </summary>
+  InviteeRejectApplyConsultationNotification,
+
+  /// <summary>
+  /// MuteLiveConsultationNotification| 27 | 开启关闭静音
+  /// </summary>
+  MuteLiveConsultationNotification,
+
+  /// <summary>
+  /// SwitchLiveConsultationVideoNotification| 28 | 开启关闭视频
+  /// </summary>
+  SwitchLiveConsultationVideoNotification,
+
+  /// <summary>
+  /// HeartRateJoinConsultationNotification| 29 | 会诊心跳,进入房间
+  /// </summary>
+  HeartRateJoinConsultationNotification,
 
   /// <summary>
-  ///FinishNotifyRecordsMessage| 6 | 检查记录完成消息类型
+  /// HeartRateLeaveConsultationNotification| 30 | 会诊心跳,离开房间
   /// </summary>
-  FinishNotifyRecordsMessage,
+  HeartRateLeaveConsultationNotification,
 
   /// <summary>
-  ///InvitedEnterRoomNotification| 7 | 邀请用户加入房间通知
+  /// CloseLiveConsultationToDeviceNotification| 31 | 关闭会诊通知 to 设备端
   /// </summary>
-  InvitedEnterRoomNotification,
+  CloseLiveConsultationToDeviceNotification,
 
   /// <summary>
-  ///CancelInvitedEnterRoomNotification| 8 |取消邀请用户通知
+  /// CancelLiveConsultationToDeviceNotification| 32 | 取消会诊通知 to 设备端
   /// </summary>
-  CancelInvitedEnterRoomNotification,
+  CancelLiveConsultationToDeviceNotification
 }
 
 class ConnectionNotification {
   NotificationTypeEnum notificationType;
   ConnectionNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory ConnectionNotification.fromJson(Map<String, dynamic> map) {
     return ConnectionNotification(
@@ -205,7 +326,7 @@ class ConnectionNotification {
 class DisconnectNotification {
   NotificationTypeEnum notificationType;
   DisconnectNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory DisconnectNotification.fromJson(Map<String, dynamic> map) {
     return DisconnectNotification(

+ 141 - 18
Tools/TestTools/ustest/lib/UserView.dart

@@ -153,7 +153,10 @@ class UserView extends StatelessWidget {
 }
 
 enum NotificationTypeEnum {
-  Daiding,
+  /// <summary>
+  /// Unknown|0| 未知
+  /// </summary>
+  Unknown,
 
   /// <summary>
   /// ChatMsgNotification|1| 聊天通知
@@ -161,45 +164,165 @@ enum NotificationTypeEnum {
   ChatMsgNotification,
 
   /// <summary>
-  /// UpgradeVersionNotification|2| 版本更新通知
+  /// TokenReplacedNotification|2| 账号被替换登出通知
   /// </summary>
-  UpgradeVersionNotification,
+  TokenReplacedNotification,
 
   /// <summary>
-  /// LogoffNotification|3| 登出通知
+  /// DisconnectNotification| 3|与服务器断开连接通知
   /// </summary>
-  LogoffNotification,
+  DisconnectNotification,
 
   /// <summary>
-  /// DisconnectNotification| 4|与服务器断开连接通知
+  /// ConnectionNotification| 4|	与服务器已连接通知
   /// </summary>
-  DisconnectNotification,
+  ConnectionNotification,
 
   /// <summary>
-  /// ConnectionNotification| 5|	与服务器已连接通知
+  /// ExamRecordsFinishedNotification| 5 | 完成检查通知
   /// </summary>
-  ConnectionNotification,
+  ExamRecordsFinishedNotification,
+
+  /// <summary>
+  /// RejectApplyConsultationNotification| 6 | 拒绝预约申请的通知
+  /// </summary>
+  RejectApplyConsultationNotification,
+
+  /// <summary>
+  /// CancelInvitingInLiveConsultationNotification| 7 | 取消会诊过程中邀请其他成员的通知
+  /// </summary>
+  CancelInvitingInLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 8 | 会诊过程中邀请其他成员的通知
+  /// </summary>
+  InviteInLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteInLiveConsultationNotification| 9 | 会诊开始前提醒的通知
+  /// </summary>
+  ConsultationRemindNotification,
+
+  /// <summary>
+  /// PasswordExpiredWarningNotification| 10 | 用户密码过期预警通知
+  /// </summary>
+  PasswordExpiredWarningNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationNotification| 11 | 开始会诊的通知
+  /// </summary>
+  InviteLiveConsultationNotification,
+
+  /// <summary>
+  /// AcceptLiveConsultationNotification| 12 | 接受会诊的通知
+  /// </summary>
+  AcceptLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 13 | 拒绝会诊的通知
+  /// </summary>
+  RejectLiveConsultationNotification,
+
+  /// <summary>
+  /// InviteLiveConsultationToDeviceNotification| 14 | 开始会诊通知 to 设备端
+  /// </summary>
+  InviteLiveConsultationToDeviceNotification,
+
+  /// <summary>
+  /// CancelLiveConsultationNotification| 15 | 取消会诊通知
+  /// </summary>
+  CancelLiveConsultationNotification,
+
+  /// <summary>
+  /// CloseLiveConsultationNotification| 16 | 关闭会诊通知
+  /// </summary>
+  CloseLiveConsultationNotification,
+
+  /// <summary>
+  /// JoinLiveConsultationNotification| 17 | 进入会诊通知
+  /// </summary>
+  JoinLiveConsultationNotification,
+
+  /// <summary>
+  /// NetworkErrConsultationNotification| 18 | 网络质量不佳会诊通知
+  /// </summary>
+  NetworkErrConsultationNotification,
+
+  /// <summary>
+  /// LeaveConsultationNotification| 19 | 离开会诊通知
+  /// </summary>
+  LeaveConsultationNotification,
+
+  /// <summary>
+  /// JoinInLiveConsultationNotification| 20 | 会诊中加入房间
+  /// </summary>
+  JoinInLiveConsultationNotification,
+
+  /// <summary>
+  /// RejectLiveConsultationNotification| 21 | 拒绝会诊的通知
+  /// </summary>
+  RejectInviteLiveConsultationNotification,
+
+  /// <summary>
+  /// ApplyConsultationNotification| 22 | 会诊申请通知
+  /// </summary>
+  ApplyConsultationNotification,
+
+  /// <summary>
+  /// ApprovalApplyConsultationNotification| 23 | 批准申请会诊通知
+  /// </summary>
+  ApprovalApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeConsultationNotification| 24 | 会诊受邀请人通知
+  /// </summary>
+  InviteeConsultationNotification,
+
+  /// <summary>
+  /// InviteeApproveApplyConsultationNotification| 25 | 会诊受邀请参与人同意通知
+  /// </summary>
+  InviteeApproveApplyConsultationNotification,
+
+  /// <summary>
+  /// InviteeRejectApplyConsultationNotification| 26 | 会诊受邀请参与人拒绝通知
+  /// </summary>
+  InviteeRejectApplyConsultationNotification,
+
+  /// <summary>
+  /// MuteLiveConsultationNotification| 27 | 开启关闭静音
+  /// </summary>
+  MuteLiveConsultationNotification,
+
+  /// <summary>
+  /// SwitchLiveConsultationVideoNotification| 28 | 开启关闭视频
+  /// </summary>
+  SwitchLiveConsultationVideoNotification,
+
+  /// <summary>
+  /// HeartRateJoinConsultationNotification| 29 | 会诊心跳,进入房间
+  /// </summary>
+  HeartRateJoinConsultationNotification,
 
   /// <summary>
-  ///FinishNotifyRecordsMessage| 6 | 检查记录完成消息类型
+  /// HeartRateLeaveConsultationNotification| 30 | 会诊心跳,离开房间
   /// </summary>
-  FinishNotifyRecordsMessage,
+  HeartRateLeaveConsultationNotification,
 
   /// <summary>
-  ///InvitedEnterRoomNotification| 7 | 邀请用户加入房间通知
+  /// CloseLiveConsultationToDeviceNotification| 31 | 关闭会诊通知 to 设备端
   /// </summary>
-  InvitedEnterRoomNotification,
+  CloseLiveConsultationToDeviceNotification,
 
   /// <summary>
-  ///CancelInvitedEnterRoomNotification| 8 |取消邀请用户通知
+  /// CancelLiveConsultationToDeviceNotification| 32 | 取消会诊通知 to 设备端
   /// </summary>
-  CancelInvitedEnterRoomNotification,
+  CancelLiveConsultationToDeviceNotification
 }
 
 class ConnectionNotification {
   NotificationTypeEnum notificationType;
   ConnectionNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory ConnectionNotification.fromJson(Map<String, dynamic> map) {
     return ConnectionNotification(
@@ -212,7 +335,7 @@ class ConnectionNotification {
 class DisconnectNotification {
   NotificationTypeEnum notificationType;
   DisconnectNotification({
-    this.notificationType = NotificationTypeEnum.Daiding,
+    this.notificationType = NotificationTypeEnum.Unknown,
   });
   factory DisconnectNotification.fromJson(Map<String, dynamic> map) {
     return DisconnectNotification(
@@ -226,7 +349,7 @@ class FinishNotifyRecordsMessage {
   NotificationTypeEnum notificationType;
   List<String>? codes;
   FinishNotifyRecordsMessage(
-      {this.notificationType = NotificationTypeEnum.Daiding, this.codes});
+      {this.notificationType = NotificationTypeEnum.Unknown, this.codes});
   factory FinishNotifyRecordsMessage.fromJson(Map<String, dynamic> map) {
     return FinishNotifyRecordsMessage(
       notificationType: NotificationTypeEnum.values

+ 2 - 1
src/InteractionCenter/InteractionCenterService.cs

@@ -1,16 +1,17 @@
 using WingServerCommon.Service;
 using WingInterfaceLibrary.Interface.DBInterface;
 using WingInterfaceLibrary.LiveConsultation;
+using  WingInterfaceLibrary.Interface;
 
 namespace WingCloudServer.InteractionCenter
 {
     public class InteractionCenterService : JsonRpcService
     {
         protected IOpLogDBService _opLogDBService;
-        
         protected ILiveRoomDBService _liveRoomDBService;
         protected IDistributedServerInfoDBService _distributedServerInfoDBService;
         protected ILiveConsultationService _liveConsultationService;
+        protected INotificationService _notificationService;
     }
 
 }

+ 18 - 4
src/InteractionCenter/MasterInteractionCenterService.cs

@@ -9,6 +9,8 @@ using WingServerCommon.Log;
 using CSScriptLib;
 using System.Reflection;
 using WingInterfaceLibrary.LiveConsultation;
+using WingInterfaceLibrary.Enum;
+using WingInterfaceLibrary.Interface;
 
 namespace WingCloudServer.InteractionCenter
 {
@@ -24,6 +26,7 @@ namespace WingCloudServer.InteractionCenter
             _distributedServerInfoDBService = GetProxy<IDistributedServerInfoDBService>();
             _liveRoomDBService = GetProxy<ILiveRoomDBService>();
             _liveConsultationService = GetProxy<ILiveConsultationService>();
+            _notificationService = GetProxy<INotificationService>();
             _serverUrlMap = new Dictionary<string, string>();
         }
 
@@ -111,20 +114,31 @@ namespace WingCloudServer.InteractionCenter
             base.Load(jsonRpcClientPool);
             _opLogDBService = GetProxy<IOpLogDBService>();
             _liveConsultationService = GetProxy<ILiveConsultationService>();
+            _notificationService = GetProxy<INotificationService>();
         }
 
-        /// Sychronize Receive ServiceData for slave
+        /// <summary>
+        ///接收主服务器数据同步
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
         public async Task<bool> SyncReceiveMasterServiceDataAsync(SyncReceiveServiceDataRequest request)
         {
-            Logger.WriteLineInfo("SyncReceiveSlaveServiceDataAsync:" + request.ServiceDataJson + "," + request.ServerID);
+            Logger.WriteLineInfo("SyncReceiveSlaveServiceDataAsync:"+"SyncService:"+request.SyncService+" " + request.ServiceDataJson + "," + request.ServerID);
             //执行oplogs
             if (request.Oplogs != null && request.Oplogs.Count > 0)
             {
                 var syncCompleteOpLogsRequest = new SyncCompleteOpLogsRequest { Oplogs = request.Oplogs };
                 await _opLogDBService.SyncCompleteOpLogsAsync(syncCompleteOpLogsRequest);
             }
-            await _liveConsultationService.SyncServerMessageAsync(request);
-
+            if (request.SyncService == SyncServiceEnum.LiveConsultation)
+            {
+                await _liveConsultationService.SyncServerMessageAsync(request);
+            }
+            else if (request.SyncService == SyncServiceEnum.Notification)
+            {
+                await _notificationService.ReceiveSyncServerMessageAsync(request);
+            }
             return true;
         }
     }

+ 71 - 32
src/InteractionCenter/MasterInteractionSyncService.cs

@@ -15,6 +15,8 @@ using WingServerCommon.Config;
 using WingServerCommon.Config.Parameters;
 using WingServerCommon.Log;
 using WingServerCommon.Service;
+using  WingInterfaceLibrary.Notifications;
+using WingInterfaceLibrary.Enum;
 
 namespace WingCloudServer.InteractionCenter
 {
@@ -32,50 +34,87 @@ namespace WingCloudServer.InteractionCenter
         {
             Logger.WriteLineInfo("SyncReceiveSlaveServiceDataAsync:" + request.ServiceDataJson + "," + request.ServerID);
             //判断是当前服务器并且是主服务器 则只需要发送oplogs到其他副服务器
+
             var localServerUrl = ConfigurationManager.Host;
             if (request.SourceUrl != localServerUrl)
             {
-                await _liveConsultationService.SyncServerMessageAsync(request);
-            }
-            var baseLiveConsultation = JsonConvert.DeserializeObject<BaseLiveConsultationJson>(request.ServiceDataJson);
-            // 判断是否存在其他服务器的用户
-            var getLiveRoomByCodeDBRequest = new GetLiveRoomByCodeDBRequest();
-            getLiveRoomByCodeDBRequest.LiveRoomCode = baseLiveConsultation.RoomCode;
-            var roomDTO = await _liveRoomDBService.GetLiveRoomByCodeAsync(getLiveRoomByCodeDBRequest);
-            if (roomDTO == null)
-            {
-                return true;
+                if (request.SyncService == SyncServiceEnum.LiveConsultation)
+                {
+                    await _liveConsultationService.SyncServerMessageAsync(request);
+                }
+                else if (request.SyncService == SyncServiceEnum.Notification)
+                {
+                    await _notificationService.ReceiveSyncServerMessageAsync(request);
+                }
             }
-            var users = roomDTO.UserInfos;
-            //操作人所在服务器
-            var operatorUser = users.FirstOrDefault(x => x.Code == baseLiveConsultation.OperatorCode);
-            //连接其他副服务器的用户
-            var usersConnectOtherSlave = users.Where(x => !string.IsNullOrWhiteSpace(x.LoginServerHost) && x.LoginServerHost != operatorUser.LoginServerHost && x.LoginServerHost != localServerUrl);
-            if (usersConnectOtherSlave != null && usersConnectOtherSlave.Count() > 0)
+            if (request.SyncService == SyncServiceEnum.LiveConsultation)
             {
-                //获取oplogs
-                var getOpLogsByCodesFormMasterRequest = new GetOpLogsByCodesFormMasterRequest();
-                getOpLogsByCodesFormMasterRequest.Codes = new List<string> { baseLiveConsultation.ConsultationRecordCode, baseLiveConsultation.RoomCode };
-                var oplogs = await _opLogDBService.GetOpLogsByCodesAsync(getOpLogsByCodesFormMasterRequest);
-                request.Oplogs = oplogs;
-                //通知副服务器
-                var otherSlaves = usersConnectOtherSlave.Select(x => x.LoginServerHost).Distinct();
-                if (otherSlaves.Count() > 0)
+                var baseLiveConsultation = JsonConvert.DeserializeObject<BaseLiveConsultationJson>(request.ServiceDataJson);
+                // 判断是否存在其他服务器的用户
+                var getLiveRoomByCodeDBRequest = new GetLiveRoomByCodeDBRequest();
+                getLiveRoomByCodeDBRequest.LiveRoomCode = baseLiveConsultation.RoomCode;
+                var roomDTO = await _liveRoomDBService.GetLiveRoomByCodeAsync(getLiveRoomByCodeDBRequest);
+                if (roomDTO == null)
+                {
+                    return true;
+                }
+                var users = roomDTO.UserInfos;
+                //操作人所在服务器
+                var operatorUser = users.FirstOrDefault(x => x.Code == baseLiveConsultation.OperatorCode);
+                //连接其他副服务器的用户
+                var usersConnectOtherSlave = users.Where(x => !string.IsNullOrWhiteSpace(x.LoginServerHost) && x.LoginServerHost != operatorUser.LoginServerHost && x.LoginServerHost != localServerUrl);
+                if (usersConnectOtherSlave != null && usersConnectOtherSlave.Count() > 0)
                 {
-                    //动态注册副服务器服务
-                    var otherSlaveHosts = new List<string>();
-                    foreach (var item in otherSlaves)
+                    //获取oplogs
+                    var getOpLogsByCodesFormMasterRequest = new GetOpLogsByCodesFormMasterRequest();
+                    getOpLogsByCodesFormMasterRequest.Codes = new List<string> { baseLiveConsultation.ConsultationRecordCode, baseLiveConsultation.RoomCode };
+                    var oplogs = await _opLogDBService.GetOpLogsByCodesAsync(getOpLogsByCodesFormMasterRequest);
+                    request.Oplogs = oplogs;
+                    //通知副服务器
+                    var otherSlaves = usersConnectOtherSlave.Select(x => x.LoginServerHost).Distinct();
+                    if (otherSlaves.Count() > 0)
                     {
-                        try
+                        foreach (var item in otherSlaves)
                         {
-                            var serverID = _serverUrlMap.FirstOrDefault(x => x.Key == item).Value;
-                            DynamicSlaveService(request, serverID);
+                            try
+                            {
+                                var serverID = _serverUrlMap.FirstOrDefault(x => x.Key == item).Value;
+                                DynamicSlaveService(request, serverID);
+                            }
+                            catch (Exception ex)
+                            {
+                                Logger.WriteLineWarn("SyncReceiveSlaveServiceDataAsync-DynamicSlaveService:" + ex);
+                            }
                         }
-                        catch (Exception ex)
+                    }
+                }
+            }
+            else if (request.SyncService == SyncServiceEnum.Notification) //通知
+            {
+                var syncNotification = request.Notification;
+                if (syncNotification != null)
+                {
+                    var usersConnectOtherSlave = syncNotification.Clients.Where(x => x.LoginServerUrl != localServerUrl);
+                    //通知副服务器
+                    var otherSlaves = usersConnectOtherSlave.Select(x => x.LoginServerUrl).Distinct();
+                    if (otherSlaves.Count() > 0)
+                    {
+                        //动态注册副服务器服务
+                        var otherSlaveHosts = new List<string>();
+                        foreach (var item in otherSlaves)
                         {
-                            Logger.WriteLineWarn("SyncReceiveSlaveServiceDataAsync-DynamicSlaveService:" + ex);
+                            try
+                            {
+                                var serverID = _serverUrlMap.FirstOrDefault(x => x.Key == item).Value;
+                                DynamicSlaveService(request, serverID);
+                            }
+                            catch (Exception ex)
+                            {
+                                Logger.WriteLineWarn("SyncReceiveSlaveServiceDataAsync-DynamicSlaveService:" + ex);
+                            }
                         }
                     }
+
                 }
             }
             return true;