Browse Source

添加单位设备查询接口,视频推送接口

master
liujiaqiang 2 years ago
parent
commit
d24c1d10cd
  1. 42
      24Hour/Controllers/Common/DeviceController.cs
  2. 59
      24Hour/Controllers/Common/WebSocketController.cs

42
24Hour/Controllers/Common/DeviceController.cs

@ -5,6 +5,7 @@ using Elight.Utility.Code;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using SqlSugar; using SqlSugar;
using System.Linq;
namespace _24Hour.Controllers.Common namespace _24Hour.Controllers.Common
{ {
@ -33,6 +34,47 @@ namespace _24Hour.Controllers.Common
#endregion #endregion
#region 设备管理 #region 设备管理
/// <summary>
/// 获取单位及单位下的设备信息
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpGet]
[Route("QueryUnitDevicelist")]
public async Task<Result> QueryUnitDevicelist()
{
var list = new List<dynamic>();
//获取设备信息
var Devicelist = await _db.Queryable<App_DeviceModel>().Where(q => q.IsDeleted == 0).ToListAsync();
//获取单位信息
var Unitlist = await _db.Queryable<App_Sys_UnitModel>().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;
}
/// <summary> /// <summary>
/// 根据当前登录人单位查询设备信息分页查询 /// 根据当前登录人单位查询设备信息分页查询
/// </summary> /// </summary>

59
24Hour/Controllers/Common/WebSocketController.cs

@ -26,6 +26,7 @@ namespace _24Hour.Controllers.Common
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
Result result = new Result(); Result result = new Result();
private static Dictionary<string, WebSocket> CONNECT_POOL = new Dictionary<string, WebSocket>();//用户连接池 private static Dictionary<string, WebSocket> CONNECT_POOL = new Dictionary<string, WebSocket>();//用户连接池
private static Dictionary<string, WebSocketSending> meeting_pool = new Dictionary<string, WebSocketSending>();//会议连接池
//private static Dictionary<string, List<MessageInfo>> MESSAGE_POOL = new Dictionary<string, List<MessageInfo>>();//离线消息池 //private static Dictionary<string, List<MessageInfo>> MESSAGE_POOL = new Dictionary<string, List<MessageInfo>>();//离线消息池
public WebSocketController(ILogger<LoginController> logger, SqlSugarClient db,User userdata,IConfiguration configuration) public WebSocketController(ILogger<LoginController> logger, SqlSugarClient db,User userdata,IConfiguration configuration)
{ {
@ -74,6 +75,10 @@ namespace _24Hour.Controllers.Common
if (result.MessageType == WebSocketMessageType.Close) if (result.MessageType == WebSocketMessageType.Close)
{ {
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); 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 else
{ {
@ -257,9 +262,10 @@ namespace _24Hour.Controllers.Common
if (socket.State != WebSocketState.Open)//连接关闭 if (socket.State != WebSocketState.Open)//连接关闭
{ {
if (CONNECT_POOL.ContainsKey(_userdata.Id)) CONNECT_POOL.Remove(_userdata.Id);//删除连接池 if (CONNECT_POOL.ContainsKey(_userdata.Id)) CONNECT_POOL.Remove(_userdata.Id);//删除连接池
result.IsSucceed = true; if (meeting_pool.ContainsKey(_userdata.Id)) meeting_pool.Remove(_userdata.Id);//删除会议
result.result = "未上线"; //result.IsSucceed = true;
return result; //result.result = "未上线";
//return result;
} }
#endregion #endregion
@ -269,9 +275,7 @@ namespace _24Hour.Controllers.Common
if (Senddata.typenum == "1" && Senddata.deviceno != "") if (Senddata.typenum == "1" && Senddata.deviceno != "")
{ {
//设备发送给app //设备发送给app
//查询远程会见记录 Senddata.content = $"{_configuration.GetSection("Videoaddress:rtsp").Value}{Senddata.deviceno}";
var Devicedata = await _db.Queryable<App_DeviceModel>().Where(q => q.deviceno == Senddata.deviceno).ToListAsync();
Senddata.content = $"{_configuration.GetSection("Videoaddress:rtsp").Value}{Devicedata.FirstOrDefault()?.deviceno}";
//对象序列化 //对象序列化
content = JsonConvert.SerializeObject(Senddata); content = JsonConvert.SerializeObject(Senddata);
buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(content)); buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(content));
@ -291,19 +295,31 @@ namespace _24Hour.Controllers.Common
WebSocket destSocket = CONNECT_POOL[Senddata.recipient]; WebSocket destSocket = CONNECT_POOL[Senddata.recipient];
//判断客户端是否连接 //判断客户端是否连接
if (destSocket != null && destSocket.State == WebSocketState.Open) 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<byte>(Encoding.UTF8.GetBytes(dqcontent));
//当前用户socket发送
await socket.SendAsync(dqbuffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
//目的客户端发送
await destSocket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
else else
{ {
result.IsSucceed = false; meeting_pool.Add(_userdata.Id, Senddata);
result.result = "用户未上线";
return result;
} }
} }
else else
{ {
result.IsSucceed = false; meeting_pool.Add(_userdata.Id, Senddata);
result.result = "用户未上线"; //result.IsSucceed = false;
return result; //result.result = "用户未上线";
//return result;
} }
#endregion #endregion
} }
@ -326,6 +342,22 @@ namespace _24Hour.Controllers.Common
result.result = ""; result.result = "";
return result; return result;
} }
/// <summary>
/// 推出会议
/// </summary>
/// <param name="Sendingdata"></param>
/// <returns></returns>
[HttpPost]
[Route("close")]
public async Task<Result> close()
{
if (meeting_pool.ContainsKey(_userdata.Id)) meeting_pool.Remove(_userdata.Id);//删除会议
result.IsSucceed = true;
result.result = "";
return result;
}
} }
/// <summary> /// <summary>
@ -338,6 +370,7 @@ namespace _24Hour.Controllers.Common
/// </summary> /// </summary>
[DataMember] [DataMember]
public string? sender { get; set; } public string? sender { get; set; }
/// <summary> /// <summary>
/// 发送内容 /// 发送内容
/// </summary> /// </summary>

Loading…
Cancel
Save