diff --git a/24Hour/Controllers/Common/DeviceController.cs b/24Hour/Controllers/Common/DeviceController.cs
index 85303a1..edb406a 100644
--- a/24Hour/Controllers/Common/DeviceController.cs
+++ b/24Hour/Controllers/Common/DeviceController.cs
@@ -5,6 +5,7 @@ using Elight.Utility.Code;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
+using System.Linq;
namespace _24Hour.Controllers.Common
{
@@ -33,6 +34,47 @@ namespace _24Hour.Controllers.Common
#endregion
#region 设备管理
+
+
+ ///
+ /// 获取单位及单位下的设备信息
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("QueryUnitDevicelist")]
+ public async Task QueryUnitDevicelist()
+ {
+ var list = new List();
+ //获取设备信息
+ var Devicelist = await _db.Queryable().Where(q => q.IsDeleted == 0).ToListAsync();
+ //获取单位信息
+ var Unitlist = await _db.Queryable().Where(q => q.IsDelete == 0).ToListAsync();
+ //设备通过单位Id分组循环获取单位信息及设备信息
+ Devicelist.GroupBy(q=>q.unitId).ToList().ForEach(q => {
+ var data=Unitlist.Where(x => x.Id == q.Key).FirstOrDefault();
+ if (data!=null)
+ {
+ var state = 0;
+ if (q.Where(q => q.state == 1).Any())
+ state = 1;
+ else if (q.Where(q => q.state == 2).Any())
+ state = 2;
+ list.Add(new
+ {
+ data.Id,
+ data.unitname,
+ data.lalon,
+ state,
+ Devicelist = q.ToList().Select(q => new { q.name, q.state, q.position })
+ });
+ }
+ });
+ result.IsSucceed = true;
+ result.result = list;
+ return result;
+ }
+
///
/// 根据当前登录人单位查询设备信息分页查询
///
diff --git a/24Hour/Controllers/Common/WebSocketController.cs b/24Hour/Controllers/Common/WebSocketController.cs
index a190a3c..3fc8a01 100644
--- a/24Hour/Controllers/Common/WebSocketController.cs
+++ b/24Hour/Controllers/Common/WebSocketController.cs
@@ -26,6 +26,7 @@ namespace _24Hour.Controllers.Common
private readonly IConfiguration _configuration;
Result result = new Result();
private static Dictionary CONNECT_POOL = new Dictionary();//用户连接池
+ private static Dictionary meeting_pool = new Dictionary();//会议连接池
//private static Dictionary> MESSAGE_POOL = new Dictionary>();//离线消息池
public WebSocketController(ILogger logger, SqlSugarClient db,User userdata,IConfiguration configuration)
{
@@ -74,6 +75,10 @@ namespace _24Hour.Controllers.Common
if (result.MessageType == WebSocketMessageType.Close)
{
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None);
+ if (meeting_pool.ContainsKey(user)) meeting_pool.Remove(user);//删除会议
+ if (CONNECT_POOL.ContainsKey(user)) CONNECT_POOL.Remove(user);//删除socket
+ socket.Dispose();
+ break;
}
else
{
@@ -257,9 +262,10 @@ namespace _24Hour.Controllers.Common
if (socket.State != WebSocketState.Open)//连接关闭
{
if (CONNECT_POOL.ContainsKey(_userdata.Id)) CONNECT_POOL.Remove(_userdata.Id);//删除连接池
- result.IsSucceed = true;
- result.result = "未上线";
- return result;
+ if (meeting_pool.ContainsKey(_userdata.Id)) meeting_pool.Remove(_userdata.Id);//删除会议
+ //result.IsSucceed = true;
+ //result.result = "未上线";
+ //return result;
}
#endregion
@@ -269,9 +275,7 @@ namespace _24Hour.Controllers.Common
if (Senddata.typenum == "1" && Senddata.deviceno != "")
{
//设备发送给app
- //查询远程会见记录
- var Devicedata = await _db.Queryable().Where(q => q.deviceno == Senddata.deviceno).ToListAsync();
- Senddata.content = $"{_configuration.GetSection("Videoaddress:rtsp").Value}{Devicedata.FirstOrDefault()?.deviceno}";
+ Senddata.content = $"{_configuration.GetSection("Videoaddress:rtsp").Value}{Senddata.deviceno}";
//对象序列化
content = JsonConvert.SerializeObject(Senddata);
buffer = new ArraySegment(Encoding.UTF8.GetBytes(content));
@@ -291,19 +295,31 @@ namespace _24Hour.Controllers.Common
WebSocket destSocket = CONNECT_POOL[Senddata.recipient];
//判断客户端是否连接
if (destSocket != null && destSocket.State == WebSocketState.Open)
- await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
+ {
+ if (meeting_pool.ContainsKey(Senddata.recipient))
+ {
+ //
+ var data = meeting_pool[Senddata.recipient];
+ //当前用户消息对象序列化
+ var dqcontent = JsonConvert.SerializeObject(data);
+ var dqbuffer = new ArraySegment(Encoding.UTF8.GetBytes(dqcontent));
+ //当前用户socket发送
+ await socket.SendAsync(dqbuffer, WebSocketMessageType.Text, true, CancellationToken.None);
+ }
+ //目的客户端发送
+ await destSocket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
+ }
else
{
- result.IsSucceed = false;
- result.result = "用户未上线";
- return result;
+ meeting_pool.Add(_userdata.Id, Senddata);
}
}
- else
+ else
{
- result.IsSucceed = false;
- result.result = "用户未上线";
- return result;
+ meeting_pool.Add(_userdata.Id, Senddata);
+ //result.IsSucceed = false;
+ //result.result = "用户未上线";
+ //return result;
}
#endregion
}
@@ -326,6 +342,22 @@ namespace _24Hour.Controllers.Common
result.result = "";
return result;
}
+
+
+ ///
+ /// 推出会议
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("close")]
+ public async Task close()
+ {
+ if (meeting_pool.ContainsKey(_userdata.Id)) meeting_pool.Remove(_userdata.Id);//删除会议
+ result.IsSucceed = true;
+ result.result = "";
+ return result;
+ }
}
///
@@ -338,6 +370,7 @@ namespace _24Hour.Controllers.Common
///
[DataMember]
public string? sender { get; set; }
+
///
/// 发送内容
///