|
@@ -63,7 +63,8 @@ namespace WingDeviceService.Service
|
|
|
private IDiagnosisModuleDBService _diagnosisModuleService;
|
|
|
|
|
|
private IRemedicalService _remedicalService;
|
|
|
- private IWingRtcService _rtcService;
|
|
|
+ private IWingRtcService _wingRtcService;
|
|
|
+ private IRtcService _rtcService;
|
|
|
private int _heartRateSeconds;
|
|
|
private DeviceHeartRateManager _deviceHeartRateManager;
|
|
|
private string _webSocketUrl = string.Empty;
|
|
@@ -93,7 +94,8 @@ namespace WingDeviceService.Service
|
|
|
_patientInfoDBService = GetProxy<IPatientInfoDBService>();
|
|
|
_diagnosisModuleService = GetProxy<IDiagnosisModuleDBService>();
|
|
|
_remedicalService = GetProxy<IRemedicalService>();
|
|
|
- _rtcService = GetProxy<IWingRtcService>();
|
|
|
+ _wingRtcService = GetProxy<IWingRtcService>();
|
|
|
+ _rtcService = GetProxy<IRtcService>();
|
|
|
_liveConsultationService = GetProxy<ILiveConsultationService>();
|
|
|
_consultationRecordDBService = GetProxy<IConsultationRecordDBService>();
|
|
|
_remedicalDBService = GetProxy<IRemedicalDBService>();
|
|
@@ -1086,13 +1088,14 @@ namespace WingDeviceService.Service
|
|
|
DeviceCode = deviceCode,
|
|
|
IsResponse = true
|
|
|
};
|
|
|
- var cacheControllingParameter = new CacheControllingParameter()
|
|
|
+ var cacheControllingParameter = new CacheControllingParameter()
|
|
|
{
|
|
|
Code = deviceCode,
|
|
|
ProbeApplication = Newtonsoft.Json.JsonConvert.SerializeObject(request.ProbeApplication),
|
|
|
Parameter = Newtonsoft.Json.JsonConvert.SerializeObject(request.Parameter),
|
|
|
};
|
|
|
- _controllingParameterDevices.AddOrUpdate(deviceCode,(k)=>cacheControllingParameter,(k,exist)=>{
|
|
|
+ _controllingParameterDevices.AddOrUpdate(deviceCode, (k) => cacheControllingParameter, (k, exist) =>
|
|
|
+ {
|
|
|
return cacheControllingParameter;
|
|
|
});
|
|
|
var notificationRequest = new SendNotificationRequest()
|
|
@@ -1122,7 +1125,7 @@ namespace WingDeviceService.Service
|
|
|
{
|
|
|
ThrowCustomerException(CustomerRpcCode.DeviceCodeIsEmpty, "Required parameter:DeviceCode cannot be empty");
|
|
|
}
|
|
|
- _controllingParameterDevices.TryGetValue(deviceCode,out var controlParameterData);
|
|
|
+ _controllingParameterDevices.TryGetValue(deviceCode, out var controlParameterData);
|
|
|
if (controlParameterData != null)
|
|
|
{
|
|
|
return new DeviceControlParameterDataDTO()
|
|
@@ -1143,60 +1146,75 @@ namespace WingDeviceService.Service
|
|
|
{
|
|
|
var userInfo = await _authenticationService.GetTokenAsync(request);
|
|
|
var deviceCode = request.DeviceCode;
|
|
|
- var liveRooms = await _rtcService.GetLiveRoomsByDeviceCodeAsync(new GetLiveRoomsByDeviceCodeRequest
|
|
|
+ var deviceInfo = CacheMaintenance.Instance.Get<IDeviceInfosManager>().Get(deviceCode);
|
|
|
+ var liveRoom = await _rtcService.GetInitiatingRoomByDeviceCodeAsync(new GetInitiatingRoomByDeviceCodeRequest
|
|
|
{
|
|
|
DeviceCode = deviceCode
|
|
|
});
|
|
|
- var liveRoom = liveRooms?.FirstOrDefault(x => x.Status == LiveRoomStatus.Initiating);
|
|
|
LiveMemberDTO deviceMemberInfo;
|
|
|
if (liveRoom != null)
|
|
|
{
|
|
|
-
|
|
|
- deviceMemberInfo = liveRoom.Members.FirstOrDefault(x => x.Code == deviceCode);
|
|
|
- if (deviceMemberInfo?.Status == LiveMemberStatus.Joined)
|
|
|
+ if (liveRoom.LiveRoomCode == deviceCode)
|
|
|
{
|
|
|
- return new JoinDeviceLiveRoomResult
|
|
|
+
|
|
|
+ deviceMemberInfo = liveRoom.DeviceInfos.FirstOrDefault(x => x.Code == deviceCode);
|
|
|
+ if (deviceMemberInfo?.Status == LiveMemberStatus.Joined)
|
|
|
{
|
|
|
- RoomNo = liveRoom.RoomNo,
|
|
|
- RtmpUrl = deviceMemberInfo.LiveData.RtmpPullUrl,
|
|
|
- };
|
|
|
+
|
|
|
+ await _rtcService.SaveViewerAsync(new SaveViewerRequest
|
|
|
+ {
|
|
|
+ LiveRoomCode = liveRoom.LiveRoomCode,
|
|
|
+ UserCode = userInfo.ClientId,
|
|
|
+ UserName = userInfo.AccountName,
|
|
|
+ });
|
|
|
+ return new JoinDeviceLiveRoomResult
|
|
|
+ {
|
|
|
+ RoomNo = liveRoom.RtcRoomId,
|
|
|
+ RtmpUrl = deviceMemberInfo.LiveData.RtmpPullUrl,
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- var rtcRoomResult = await _rtcService.GetRoomIdAsync(new GetRoomIdRequest
|
|
|
+
|
|
|
+ var deviceName = !string.IsNullOrWhiteSpace(deviceInfo.Name) ? deviceInfo.Name : deviceInfo.ShortCode;
|
|
|
+ var deviceLiveInfo = new LiveMemberDTO
|
|
|
+ {
|
|
|
+ Code = deviceCode,
|
|
|
+ Name = deviceName,
|
|
|
+ MemberType = LiveMemberEnum.Device,
|
|
|
+ HeadImageToken = deviceInfo.HeadPicUrl,
|
|
|
+ Status = LiveMemberStatus.Accepted,
|
|
|
+ };
|
|
|
+ var room = new LiveRoomDTO
|
|
|
+ {
|
|
|
+ LiveRoomCode = deviceCode,
|
|
|
+ Name = deviceName,
|
|
|
+ RelatedCode = deviceCode,
|
|
|
+ BusinessModule = BusinessModuleEnum.LivingConsultation,
|
|
|
+ Status = LiveRoomStatus.Default,
|
|
|
+ UserInfos = new List<LiveMemberDTO>(),
|
|
|
+ DeviceInfos = new List<LiveMemberDTO> { deviceLiveInfo }
|
|
|
+ };
|
|
|
+ await _rtcService.AddOrUpdateLiveRoomAsync(new AddOrUpdateLiveRoomRequest
|
|
|
{
|
|
|
- UniqueId = deviceCode,
|
|
|
+ LiveRoom = room,
|
|
|
});
|
|
|
- var rtcRoomId = (int)rtcRoomResult.RoomId;
|
|
|
- var initiateResult = await _rtcService.InitiateLiveAsync(new InitiateLiveRequest
|
|
|
+ var initiateResult = await _rtcService.InitiateAsync(new InitiateRequest
|
|
|
{
|
|
|
- RoomId = deviceCode,
|
|
|
+ LiveRoomCode = deviceCode,
|
|
|
InitiatorCode = deviceCode,
|
|
|
- IntegerRoomId = rtcRoomId
|
|
|
});
|
|
|
+ deviceMemberInfo = initiateResult.DeviceInfos.FirstOrDefault(x => x.Code == deviceCode);
|
|
|
|
|
|
- var addOrUpdateViewerResult = await _rtcService.SaveViewerAsync(new SaveViewerRequest
|
|
|
+ await _rtcService.SaveViewerAsync(new SaveViewerRequest
|
|
|
{
|
|
|
- LiveRoomCode = initiateResult.RoomId,
|
|
|
+ LiveRoomCode = initiateResult.LiveRoomCode,
|
|
|
UserCode = userInfo.ClientId,
|
|
|
UserName = userInfo.AccountName,
|
|
|
});
|
|
|
-
|
|
|
- deviceMemberInfo = initiateResult.Members.FirstOrDefault(x => x.Code == deviceCode);
|
|
|
- var message = new StartLiveToDeviceNotification
|
|
|
- {
|
|
|
- LiveRoomCode = initiateResult.RoomId,
|
|
|
- RoomNo = initiateResult.RoomNo,
|
|
|
- AppId = _sdkAppId,
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- };
|
|
|
- await BroadcastNotificationAsync(liveRoom.RoomId, new List<string> { deviceCode }, message);
|
|
|
return new JoinDeviceLiveRoomResult
|
|
|
{
|
|
|
- RoomNo = initiateResult.RoomNo,
|
|
|
+ RoomNo = initiateResult.RtcRoomId,
|
|
|
RtmpUrl = deviceMemberInfo.LiveData.RtmpPullUrl,
|
|
|
ReportStateIntervalSeconds = _reportStateIntervalSeconds,
|
|
|
};
|
|
@@ -1211,30 +1229,26 @@ namespace WingDeviceService.Service
|
|
|
{
|
|
|
var userInfo = await _authenticationService.GetTokenAsync(request);
|
|
|
var userCode = userInfo.ClientId;
|
|
|
- var rtcRoomId = request.RoomNo;
|
|
|
- var liveRooms = await _rtcService.GetLiveRoomsByRtcRoomIdAsync(new GetLiveRoomsByRtcRoomIdRequest
|
|
|
+ var deviceCode = request.DeviceCode;
|
|
|
+ var liveRoom = await _rtcService.GetInitiatingRoomByDeviceCodeAsync(new GetInitiatingRoomByDeviceCodeRequest
|
|
|
{
|
|
|
- RtcRoomId = rtcRoomId
|
|
|
+ DeviceCode = deviceCode
|
|
|
});
|
|
|
- var liveRoom = liveRooms?.FirstOrDefault(x => x.Status == LiveRoomStatus.Initiating);
|
|
|
if (liveRoom != null)
|
|
|
{
|
|
|
- var deviceCode = liveRoom.DeviceInfos?.FirstOrDefault()?.Code;
|
|
|
|
|
|
var removeViewerResult = await _rtcService.RemoveViewerAsync(new RemoveViewerRequest
|
|
|
{
|
|
|
- LiveRoomCode = liveRoom.RoomId,
|
|
|
+ LiveRoomCode = liveRoom.LiveRoomCode,
|
|
|
UserCode = userInfo.ClientId,
|
|
|
});
|
|
|
var expireTime = DateTime.UtcNow.AddSeconds(_reportStateTimeout * -1);
|
|
|
- if (!liveRoom.ViewerInfos.Any(x => x.UserCode != userCode && x.LastReportTime >= expireTime) && !string.IsNullOrWhiteSpace(deviceCode))
|
|
|
+ if (!liveRoom.ViewerInfos.Any(x => x.UserCode != userCode && x.LastReportTime >= expireTime))
|
|
|
{
|
|
|
-
|
|
|
- var message = new CloseLiveToDeviceNotification
|
|
|
+ await _rtcService.CloseAsync(new CloseRequest
|
|
|
{
|
|
|
- LiveRoomCode = liveRoom.RoomId,
|
|
|
- };
|
|
|
- await BroadcastNotificationAsync(liveRoom.RoomId, new List<string> { deviceCode }, message);
|
|
|
+ LiveRoomCode = liveRoom.LiveRoomCode
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
@@ -1248,18 +1262,17 @@ namespace WingDeviceService.Service
|
|
|
public async Task<bool> ReportLiveViewStateAsync(ReportLiveViewStateRequest request)
|
|
|
{
|
|
|
var userInfo = await _authenticationService.GetTokenAsync(request);
|
|
|
- var rtcRoomId = request.RoomNo;
|
|
|
- var liveRooms = await _rtcService.GetLiveRoomsByRtcRoomIdAsync(new GetLiveRoomsByRtcRoomIdRequest
|
|
|
+ var deviceCode = request.DeviceCode;
|
|
|
+ var liveRoom = await _rtcService.GetInitiatingRoomByDeviceCodeAsync(new GetInitiatingRoomByDeviceCodeRequest
|
|
|
{
|
|
|
- RtcRoomId = rtcRoomId
|
|
|
+ DeviceCode = deviceCode
|
|
|
});
|
|
|
- var liveRoom = liveRooms?.FirstOrDefault(x => x.Status == LiveRoomStatus.Initiating);
|
|
|
if (liveRoom != null)
|
|
|
{
|
|
|
|
|
|
var addOrUpdateViewerResult = await _rtcService.SaveViewerAsync(new SaveViewerRequest
|
|
|
{
|
|
|
- LiveRoomCode = liveRoom.RoomId,
|
|
|
+ LiveRoomCode = liveRoom.LiveRoomCode,
|
|
|
UserCode = userInfo.ClientId,
|
|
|
UserName = userInfo.AccountName,
|
|
|
});
|
|
@@ -1288,12 +1301,10 @@ namespace WingDeviceService.Service
|
|
|
}
|
|
|
if (request.LiveState == DeviceLiveStateEnum.Pushing || request.LiveState == DeviceLiveStateEnum.Closed)
|
|
|
{
|
|
|
- var rtcRoomId = request.RoomNo;
|
|
|
- var liveRooms = await _rtcService.GetLiveRoomsByRtcRoomIdAsync(new GetLiveRoomsByRtcRoomIdRequest
|
|
|
+ var liveRoom = await _rtcService.GetInitiatingRoomByDeviceCodeAsync(new GetInitiatingRoomByDeviceCodeRequest
|
|
|
{
|
|
|
- RtcRoomId = rtcRoomId
|
|
|
+ DeviceCode = deviceCode
|
|
|
});
|
|
|
- var liveRoom = liveRooms?.FirstOrDefault(x => x.Status == LiveRoomStatus.Initiating);
|
|
|
if (liveRoom != null)
|
|
|
{
|
|
|
var expireTime = DateTime.UtcNow.AddSeconds(_reportStateTimeout * -1);
|
|
@@ -1304,18 +1315,16 @@ namespace WingDeviceService.Service
|
|
|
|
|
|
var message = new DeviceLiveFinishedNotification
|
|
|
{
|
|
|
- LiveRoomCode = liveRoom.RoomId,
|
|
|
+ LiveRoomCode = liveRoom.LiveRoomCode,
|
|
|
};
|
|
|
- await BroadcastNotificationAsync(liveRoom.RoomId, validViewers.Select(x => x.UserCode).ToList(), message);
|
|
|
+ await BroadcastNotificationAsync(liveRoom.LiveRoomCode, validViewers.Select(x => x.UserCode).ToList(), message);
|
|
|
}
|
|
|
if (request.LiveState == DeviceLiveStateEnum.Pushing && !validViewers.Any())
|
|
|
{
|
|
|
-
|
|
|
- var message = new CloseLiveToDeviceNotification
|
|
|
+ await _rtcService.CloseAsync(new CloseRequest
|
|
|
{
|
|
|
- LiveRoomCode = liveRoom.RoomId,
|
|
|
- };
|
|
|
- await BroadcastNotificationAsync(liveRoom.RoomId, new List<string> { deviceCode }, message);
|
|
|
+ LiveRoomCode = liveRoom.LiveRoomCode
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1336,13 +1345,13 @@ namespace WingDeviceService.Service
|
|
|
{
|
|
|
UserId = userCode,
|
|
|
};
|
|
|
- var getUserSignResult = await _rtcService.GetUserSignAsync(getUserSignRequest);
|
|
|
+ var getUserSignResult = await _wingRtcService.GetUserSignAsync(getUserSignRequest);
|
|
|
var userSign = getUserSignResult.UserSign;
|
|
|
var getRoomIdRequest = new GetRoomIdRequest
|
|
|
{
|
|
|
UniqueId = userCode,
|
|
|
};
|
|
|
- var getRoomIdResult = await _rtcService.GetRoomIdAsync(getRoomIdRequest);
|
|
|
+ var getRoomIdResult = await _wingRtcService.GetRoomIdAsync(getRoomIdRequest);
|
|
|
var intRoomNo = (int)getRoomIdResult.RoomId;
|
|
|
Logger.WriteLineInfo($"DeviceService CreateLiveRoomInfoAsync, DeviceUniqueCode:{request.DeviceUniqueCode}, UserCode:{userCode}, roomNo:{intRoomNo}");
|
|
|
return new CreateLiveRoomInfoResult
|
|
@@ -1356,9 +1365,8 @@ namespace WingDeviceService.Service
|
|
|
}
|
|
|
private async Task<bool> BroadcastNotificationAsync(string roomId, IList<string> clientIds, NotificationDTO message)
|
|
|
{
|
|
|
- var broadcastNotificationRequest = new BroadcastRoomNotificationRequest
|
|
|
+ var broadcastNotificationRequest = new BroadcastNotificationRequest
|
|
|
{
|
|
|
- RoomId = roomId,
|
|
|
ClientIds = clientIds,
|
|
|
Message = message,
|
|
|
TransactionType = TransactionTypeEnum.Live,
|
|
@@ -1366,7 +1374,7 @@ namespace WingDeviceService.Service
|
|
|
ReceiverType = ApplicantTypeEnum.Client,
|
|
|
WSConnectType = WSConnectTypeEnum.Default
|
|
|
};
|
|
|
- return await _rtcService.BroadcastRoomNotificationAsync(broadcastNotificationRequest);
|
|
|
+ return await _notificationService.BroadcastMessageAsync(broadcastNotificationRequest);
|
|
|
}
|
|
|
|
|
|
|