Browse Source

分离设备管理,远程会见,调整websockt,

master
liujiaqiang 2 years ago
parent
commit
3e9955a96f
  1. 179
      24Hour/Controllers/Common/DeviceController.cs
  2. 249
      24Hour/Controllers/Common/RemoteController.cs
  3. 357
      24Hour/Controllers/Common/ReservationController.cs
  4. 127
      24Hour/Controllers/Common/WebSocketController.cs
  5. 5
      24Hour/Controllers/LoginController.cs
  6. 7
      24Hour/Controllers/system/SystemControllerController.cs
  7. 3
      24Hour/Program.cs
  8. 4
      24Hour/appsettings.json
  9. 36
      24Hour/wwwroot/CaseFile/logs/Logs/ExceptionLog/20230615/18.log
  10. 12
      24Hour/wwwroot/CaseFile/logs/Logs/ExceptionLog/20230615/19.log
  11. 2
      Elight.Entity/AppMode/App_RemoteModel.cs
  12. 2
      Elight.Entity/SystemModel/Func_Dossier_LogRecordModel.cs
  13. 5
      Elight.Logic/WriteSysLog.cs
  14. 19
      Elight.Utility/NullableConverter.cs

179
24Hour/Controllers/Common/DeviceController.cs

@ -0,0 +1,179 @@
using Elight.Entity;
using Elight.Logic;
using Elight.Utility;
using Elight.Utility.Code;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace _24Hour.Controllers.Common
{
/// <summary>
/// 设备管理
/// </summary>
[Authorize]
[ApiController]
[Route("api/Device")]
public class DeviceController : Controller
{
#region Identity
private readonly SqlSugarClient _db;//数据库
private readonly WriteSysLog _logs;//操作日志
App_Sys_UserModel _userdata = new App_Sys_UserModel();//当前用户
private readonly ILogger<LoginController> _logger;//日志
Result result = new Result();
public DeviceController(ILogger<LoginController> logger, SqlSugarClient db, WriteSysLog logs, User user)
{
_logger = logger;
_db = db;
_logs = logs;
_userdata = user.Userdata();
}
#endregion
#region 设备管理
/// <summary>
/// 根据当前登录人单位查询设备信息分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryDeviceuser")]
public async Task<Result> QueryDeviceuser(App_DeviceInput Devicedata)
{
var Receptionlist = new List<App_DeviceModel>();
//查询远程会见记录
var list = await _db.Queryable<App_DeviceModel>()
.WhereIF(Devicedata.deviceno != null, q => q.deviceno.Contains(Devicedata.deviceno))
.WhereIF(Devicedata.name != null, q => q.name.Contains(Devicedata.name))
.WhereIF(Devicedata.state != null, q => q.state == Devicedata.state)
.Where(q => q.IsDeleted == 0 && q.unitId == _userdata.unitCode).ToPageListAsync(Devicedata.PageIndex, Devicedata.PageSize);
var data = new QueryResult<App_DeviceModel>(Devicedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 设备分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryDevice")]
public async Task<Result> QueryDevice(App_DeviceInput Devicedata)
{
var Receptionlist = new List<App_DeviceModel>();
//查询远程会见记录
var list = await _db.Queryable<App_DeviceModel>()
.WhereIF(Devicedata.deviceno != null, q => q.deviceno.Contains(Devicedata.deviceno))
.WhereIF(Devicedata.name != null, q => q.name.Contains(Devicedata.name))
.WhereIF(Devicedata.unitId != null, q => q.unitId.Contains(Devicedata.unitId))
.WhereIF(Devicedata.state != null, q => q.state == Devicedata.state)
.Where(q => q.IsDeleted == 0).ToPageListAsync(Devicedata.PageIndex, Devicedata.PageSize);
var data = new QueryResult<App_DeviceModel>(Devicedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 添加设备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("AddDevice")]
public async Task<Result> AddDevice(App_DeviceModel Devicedata)
{
try
{
_db.BeginTran();
Devicedata.Id = Guid.NewGuid().ToString();
Devicedata.createuserId = _userdata.Id.ToString();
Devicedata.createusername = _userdata.name;
var num = await _db.Insertable(Devicedata).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "添加成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "添加远程会见", result, _db);
return result;
}
/// <summary>
/// 修改设备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("UpdateDevice")]
public async Task<Result> UpdateDevice(App_DeviceModel Devicedata)
{
try
{
_db.BeginTran();
var num = await _db.Updateable(Devicedata).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "修改成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "修改远程会见", result, _db);
return result;
}
/// <summary>
/// 删除设备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("DeleteDevice")]
public async Task<Result> DeleteDevice(CurrencyDelete Currency)
{
try
{
_db.BeginTran();
var Receptionlist = await _db.Queryable<App_DeviceModel>().In(q => q.Id, Currency.id).ToListAsync();
Receptionlist.ForEach(q =>
{
q.IsDeleted = 1;
});
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "删除成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("设备管理", "删除设备", result, _db);
return result;
}
#endregion
}
}

249
24Hour/Controllers/Common/RemoteController.cs

@ -0,0 +1,249 @@
using Elight.Entity;
using Elight.Logic;
using Elight.Utility;
using Elight.Utility.Code;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace _24Hour.Controllers.Common
{
/// <summary>
/// 远程会见
/// </summary>
[Authorize]
[ApiController]
[Route("api/Remote")]
public class RemoteController : Controller
{
#region Identity
private readonly SqlSugarClient _db;//数据库
private readonly WriteSysLog _logs;//操作日志
App_Sys_UserModel _userdata = new App_Sys_UserModel();//当前用户
private readonly ILogger<LoginController> _logger;//日志
Result result = new Result();
public RemoteController(ILogger<LoginController> logger, SqlSugarClient db, WriteSysLog logs, User user)
{
_logger = logger;
_db = db;
_logs = logs;
_userdata = user.Userdata();
}
#endregion
#region 远程会见管理
/// <summary>
/// 根据当前登录人查询远程会见信息分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryRemoteuser")]
public async Task<Result> QueryRemoteuser(App_RemoteInput Remotedata)
{
var Receptionlist = new List<App_RemoteModel>();
//查询远程会见记录
var list = await _db.Queryable<App_RemoteModel>()
.WhereIF(Remotedata.Code != null, q => q.Code.Contains(Remotedata.Code))
.WhereIF(Remotedata.name != null, q => q.name.Contains(Remotedata.name))
.WhereIF(Remotedata.meetwitname != null, q => q.meetwitname.Contains(Remotedata.meetwitname))
.WhereIF(Remotedata.state != null, q => q.state == Remotedata.state)
.Where(q => q.IsDeleted == 0 && q.unitId == _userdata.unitCode).ToPageListAsync(Remotedata.PageIndex, Remotedata.PageSize);
var data = new QueryResult<App_RemoteModel>(Remotedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 远程会见分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryRemote")]
public async Task<Result> QueryRemote(App_RemoteInput Remotedata)
{
var Receptionlist = new List<App_RemoteModel>();
//查询远程会见记录
var list = await _db.Queryable<App_RemoteModel>()
.WhereIF(Remotedata.Code != null, q => q.Code.Contains(Remotedata.Code))
.WhereIF(Remotedata.name != null, q => q.name.Contains(Remotedata.name))
.WhereIF(Remotedata.meetwitname != null, q => q.meetwitname.Contains(Remotedata.meetwitname))
.WhereIF(Remotedata.state != null, q => q.state == Remotedata.state)
.Where(q => q.IsDeleted == 0).ToPageListAsync(Remotedata.PageIndex, Remotedata.PageSize);
var data = new QueryResult<App_RemoteModel>(Remotedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 添加远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("AddRemote")]
public async Task<Result> AddRemote(App_RemoteModel Remotedata)
{
try
{
_db.BeginTran();
Remotedata.Id = Guid.NewGuid().ToString();
//Remotedata.unitId = _userdata.unitCode.ToString();
Remotedata.createuserId = _userdata.Id.ToString();
Remotedata.createusername = _userdata.name;
var num = await _db.Insertable(Remotedata).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "添加成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "添加远程会见", result, _db);
return result;
}
/// <summary>
/// 修改远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("UpdateRemote")]
public async Task<Result> UpdateRemote(App_RemoteModel Remotedata)
{
try
{
_db.BeginTran();
var num = await _db.Updateable(Remotedata).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "修改成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "修改远程会见", result, _db);
return result;
}
/// <summary>
/// 删除远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("DeleteRemote")]
public async Task<Result> DeleteRemote(CurrencyDelete Currency)
{
try
{
_db.BeginTran();
var Receptionlist = await _db.Queryable<App_RemoteModel>().In(q => q.Id, Currency.id).ToListAsync();
Receptionlist.ForEach(q =>
{
q.IsDeleted = 1;
});
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "删除成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "删除远程会见", result, _db);
return result;
}
/// <summary>
/// 结束远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("UpdateRemote_state")]
public async Task<Result> UpdateRemote_state(CurrencyDelete Currency)
{
try
{
var Receptionlist = await _db.Queryable<App_RemoteModel>().Where(q => Currency.id.Contains(q.Id)).ToListAsync();
Receptionlist.ForEach(q => { q.state = 1; });
_db.BeginTran();
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "结束成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "结束远程会见", result, _db);
return result;
}
/// <summary>
/// 取消远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("Updatecancellation_state")]
public async Task<Result> Updatecancellation_state(CurrencyDelete Currency)
{
try
{
var Receptionlist = await _db.Queryable<App_RemoteModel>().Where(q => Currency.id.Contains(q.Id)).ToListAsync();
Receptionlist.ForEach(q => { q.state = 2; });
_db.BeginTran();
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "已取消";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "取消远程会见", result, _db);
return result;
}
#endregion
}
}

357
24Hour/Controllers/Common/ReservationController.cs

@ -199,362 +199,5 @@ namespace _24Hour.Controllers.Common
return result; return result;
} }
#endregion #endregion
#region 远程会见管理
/// <summary>
/// 根据当前登录人查询远程会见信息分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryRemoteuser")]
public async Task<Result> QueryRemoteuser(App_RemoteInput Remotedata)
{
var Receptionlist = new List<App_RemoteModel>();
//查询远程会见记录
var list = await _db.Queryable<App_RemoteModel>()
.WhereIF(Remotedata.Code != null, q => q.Code.Contains(Remotedata.Code))
.WhereIF(Remotedata.name != null, q => q.name.Contains(Remotedata.name))
.WhereIF(Remotedata.meetwitname != null, q => q.meetwitname.Contains(Remotedata.meetwitname))
.WhereIF(Remotedata.state != null, q => q.state == Remotedata.state)
.Where(q => q.IsDeleted == 0&&q.unitId==_userdata.unitCode).ToPageListAsync(Remotedata.PageIndex, Remotedata.PageSize);
var data = new QueryResult<App_RemoteModel>(Remotedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 远程会见分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryRemote")]
public async Task<Result> QueryRemote(App_RemoteInput Remotedata)
{
var Receptionlist = new List<App_RemoteModel>();
//查询远程会见记录
var list = await _db.Queryable<App_RemoteModel>()
.WhereIF(Remotedata.Code != null, q => q.Code.Contains(Remotedata.Code))
.WhereIF(Remotedata.name != null, q => q.name.Contains(Remotedata.name))
.WhereIF(Remotedata.meetwitname != null, q => q.meetwitname.Contains(Remotedata.meetwitname))
.WhereIF(Remotedata.state != null, q => q.state == Remotedata.state)
.Where(q => q.IsDeleted == 0).ToPageListAsync(Remotedata.PageIndex, Remotedata.PageSize);
var data = new QueryResult<App_RemoteModel>(Remotedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 添加远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("AddRemote")]
public async Task<Result> AddRemote(App_RemoteModel Remotedata)
{
try
{
_db.BeginTran();
Remotedata.Id = Guid.NewGuid().ToString();
Remotedata.unitId = _userdata.unitCode.ToString();
Remotedata.createuserId = _userdata.Id.ToString();
Remotedata.createusername = _userdata.name;
var num = await _db.Insertable(Remotedata).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "添加成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "添加远程会见", result, _db);
return result;
}
/// <summary>
/// 修改远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("UpdateRemote")]
public async Task<Result> UpdateRemote(App_RemoteModel Remotedata)
{
try
{
_db.BeginTran();
var num = await _db.Updateable(Remotedata).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "修改成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "修改远程会见", result, _db);
return result;
}
/// <summary>
/// 删除远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("DeleteRemote")]
public async Task<Result> DeleteRemote(CurrencyDelete Currency)
{
try
{
_db.BeginTran();
var Receptionlist = await _db.Queryable<App_RemoteModel>().In(q => q.Id, Currency.id).ToListAsync();
Receptionlist.ForEach(q =>
{
q.IsDeleted = 1;
});
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "删除成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "删除远程会见", result, _db);
return result;
}
/// <summary>
/// 结束远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("UpdateRemote_state")]
public async Task<Result> UpdateRemote_state(CurrencyDelete Currency)
{
try
{
var Receptionlist = await _db.Queryable<App_RemoteModel>().Where(q => Currency.id.Contains(q.Id)).ToListAsync();
Receptionlist.ForEach(q => { q.state = 1; });
_db.BeginTran();
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "结束成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "结束远程会见", result, _db);
return result;
}
/// <summary>
/// 取消远程会见
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("Updatecancellation_state")]
public async Task<Result> Updatecancellation_state(CurrencyDelete Currency)
{
try
{
var Receptionlist = await _db.Queryable<App_RemoteModel>().Where(q => Currency.id.Contains(q.Id)).ToListAsync();
Receptionlist.ForEach(q => { q.state = 2; });
_db.BeginTran();
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "已取消";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "取消远程会见", result, _db);
return result;
}
#endregion
#region 设备管理
/// <summary>
/// 根据当前登录人查询设备信息分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryDeviceuser")]
public async Task<Result> QueryDeviceuser(App_DeviceInput Devicedata)
{
var Receptionlist = new List<App_RemoteModel>();
//查询远程会见记录
var list = await _db.Queryable<App_RemoteModel>()
.WhereIF(Devicedata.deviceno != null, q => q.Code.Contains(Devicedata.deviceno))
.WhereIF(Devicedata.name != null, q => q.name.Contains(Devicedata.name))
.WhereIF(Devicedata.state != null, q => q.state == Devicedata.state)
.Where(q => q.IsDeleted == 0 && q.unitId == _userdata.unitCode).ToPageListAsync(Devicedata.PageIndex, Devicedata.PageSize);
var data = new QueryResult<App_RemoteModel>(Devicedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 设备分页查询
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryDevice")]
public async Task<Result> QueryDevice(App_DeviceInput Devicedata)
{
var Receptionlist = new List<App_DeviceModel>();
//查询远程会见记录
var list = await _db.Queryable<App_DeviceModel>()
.WhereIF(Devicedata.deviceno != null, q => q.deviceno.Contains(Devicedata.deviceno))
.WhereIF(Devicedata.name != null, q => q.name.Contains(Devicedata.name))
.WhereIF(Devicedata.state != null, q => q.state == Devicedata.state)
.Where(q => q.IsDeleted == 0).ToPageListAsync(Devicedata.PageIndex, Devicedata.PageSize);
var data = new QueryResult<App_DeviceModel>(Devicedata, list.OrderByDescending(q => q.creationtime).ToList());
result.IsSucceed = true;
result.result = data;
return result;
}
/// <summary>
/// 添加设备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("AddDevice")]
public async Task<Result> AddDevice(App_DeviceModel Devicedata)
{
try
{
_db.BeginTran();
Devicedata.Id = Guid.NewGuid().ToString();
Devicedata.unitId = _userdata.unitCode.ToString();
Devicedata.createuserId = _userdata.Id.ToString();
Devicedata.createusername = _userdata.name;
var num = await _db.Insertable(Devicedata).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "添加成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "添加远程会见", result, _db);
return result;
}
/// <summary>
/// 修改设备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("UpdateDevice")]
public async Task<Result> UpdateDevice(App_DeviceModel Devicedata)
{
try
{
_db.BeginTran();
var num = await _db.Updateable(Devicedata).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "修改成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("远程会见管理", "修改远程会见", result, _db);
return result;
}
/// <summary>
/// 删除设备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("DeleteDevice")]
public async Task<Result> DeleteDevice(CurrencyDelete Currency)
{
try
{
_db.BeginTran();
var Receptionlist = await _db.Queryable<App_DeviceModel>().In(q => q.Id, Currency.id).ToListAsync();
Receptionlist.ForEach(q =>
{
q.IsDeleted = 1;
});
var num = await _db.Updateable(Receptionlist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "删除成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
_logs.WriteSysLogadd("设备管理", "删除设备", result, _db);
return result;
}
#endregion
} }
} }

127
24Hour/Controllers/Common/WebSocketController.cs

@ -7,25 +7,32 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json; using Newtonsoft.Json;
using SqlSugar; using SqlSugar;
using System.Data;
using System.Net.WebSockets; using System.Net.WebSockets;
using System.Runtime.Serialization;
using System.Text; using System.Text;
using static com.sun.tools.@internal.xjc.reader.xmlschema.bindinfo.BIConversion;
using User = Elight.Utility.User;
namespace _24Hour.Controllers.Common namespace _24Hour.Controllers.Common
{ {
[Authorize] [Authorize]
[ApiController]
public class WebSocketController : Controller public class WebSocketController : Controller
{ {
private readonly SqlSugarClient _db;//数据库 private readonly SqlSugarClient _db;//数据库
App_Sys_UserModel _userdata = new App_Sys_UserModel();//当前用户 App_Sys_UserModel _userdata = new App_Sys_UserModel();//当前用户
private readonly ILogger<LoginController> _logger;//日志 private readonly ILogger<LoginController> _logger;//日志
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, 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 user) public WebSocketController(ILogger<LoginController> logger, SqlSugarClient db,User userdata,IConfiguration configuration)
{ {
_logger = logger; _logger = logger;
_db = db; _db = db;
_userdata = user.Userdata(); _userdata = userdata.Userdata();
_configuration = configuration;
} }
[HttpGet("/ws")] [HttpGet("/ws")]
public async Task WebSocketServer() public async Task WebSocketServer()
@ -35,7 +42,7 @@ namespace _24Hour.Controllers.Common
try try
{ {
var socket = await HttpContext.WebSockets.AcceptWebSocketAsync(); var socket = await HttpContext.WebSockets.AcceptWebSocketAsync();
await ProcessChat(socket); await ProcessChat(socket);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -64,10 +71,15 @@ namespace _24Hour.Controllers.Common
{ {
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[2048]); ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[2048]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None); WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
if (result.MessageType==WebSocketMessageType.Close) if (result.MessageType == WebSocketMessageType.Close)
{ {
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None);
} }
else
{
var data = Encoding.UTF8.GetString(buffer);
Console.WriteLine(data);
}
} }
else else
{ {
@ -218,6 +230,102 @@ namespace _24Hour.Controllers.Common
result.result = ""; result.result = "";
return result; return result;
} }
/// <summary>
/// 视频推送
/// </summary>
/// <param name="Sendingdata"></param>
/// <returns></returns>
[HttpPost]
[Route("Video")]
public async Task<Result> Video(WebSocketSending Senddata)
{
try
{
//获取发送人连接
var socket = CONNECT_POOL.Where(q => q.Key == _userdata.Id).Select(q => q.Value).FirstOrDefault();
if (socket!=null&&socket.State == WebSocketState.Open)
{
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[2048]);
//WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
#region 消息处理(消息转发)
try
{
#region 关闭Socket处理,删除连接池
if (socket.State != WebSocketState.Open)//连接关闭
{
if (CONNECT_POOL.ContainsKey(_userdata.Id)) CONNECT_POOL.Remove(_userdata.Id);//删除连接池
result.IsSucceed = true;
result.result = "未上线";
return result;
}
#endregion
#region 消息发送
var content = "";
//data.type等于1 为视频推送
if (Senddata.typenum == "1" && Senddata.deviceno != "")
{
//设备发送给app
//查询远程会见记录
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);
buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(content));
}
else
{
//app发送给设备
Senddata.content = $"{_configuration.GetSection("Videoaddress:rtmp").Value}{_userdata.Id}";
//对象序列化
content = JsonConvert.SerializeObject(Senddata);
buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(content));
}
//判断客户端是否在线
if (CONNECT_POOL.ContainsKey(Senddata.recipient))
{
//获取目的客户端
WebSocket destSocket = CONNECT_POOL[Senddata.recipient];
//判断客户端是否连接
if (destSocket != null && destSocket.State == WebSocketState.Open)
await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
else
{
result.IsSucceed = false;
result.result = "用户未上线";
return result;
}
}
else
{
result.IsSucceed = false;
result.result = "用户未上线";
return result;
}
#endregion
}
catch (Exception exs)
{
//消息转发异常处理,本次消息忽略 继续监听接下来的消息
}
#endregion
}
else
{
}
}
catch (Exception)
{
//整体异常处理
if (CONNECT_POOL.ContainsKey(_userdata.Id)) CONNECT_POOL.Remove(_userdata.Id);
}
result.IsSucceed = true;
result.result = "";
return result;
}
} }
/// <summary> /// <summary>
@ -228,18 +336,27 @@ namespace _24Hour.Controllers.Common
/// <summary> /// <summary>
/// 发送人 /// 发送人
/// </summary> /// </summary>
[DataMember]
public string? sender { get; set; } public string? sender { get; set; }
/// <summary> /// <summary>
/// 发送内容 /// 发送内容
/// </summary> /// </summary>
[DataMember]
public string? content { get; set; } public string? content { get; set; }
/// <summary> /// <summary>
/// 接收人 /// 接收人
/// </summary> /// </summary>
[DataMember]
public string? recipient { get; set; } public string? recipient { get; set; }
/// <summary> /// <summary>
/// 类型 0:消息,1:视频地址 /// 类型 0:消息,1:视频地址
/// </summary> /// </summary>
public string? type { get; set; } [DataMember]
public string? typenum { get; set; }
/// <summary>
/// 设备编号
/// </summary>
[DataMember]
public string? deviceno { get; set; }
} }
} }

5
24Hour/Controllers/LoginController.cs

@ -31,11 +31,10 @@ namespace _24Hour.Controllers
private readonly WriteSysLog _logs;//²Ù×÷ÈÕÖ¾ private readonly WriteSysLog _logs;//²Ù×÷ÈÕÖ¾
private readonly ILogger<LoginController> _logger;//ÈÕÖ¾ private readonly ILogger<LoginController> _logger;//ÈÕÖ¾
Result ret = new Result(); Result ret = new Result();
public LoginController(ILogger<LoginController> logger, SqlSugarClient db, IConfiguration configuration, WriteSysLog logs) public LoginController(ILogger<LoginController> logger, SqlSugarClient db, IConfiguration configuration)
{ {
_logger = logger; _logger = logger;
_db = db; _db = db;
_logs = logs;
_configuration = configuration; _configuration = configuration;
} }
[HttpPost] [HttpPost]
@ -189,7 +188,6 @@ namespace _24Hour.Controllers
/// </summary> /// </summary>
/// <param name="info"></param> /// <param name="info"></param>
/// <returns></returns> /// <returns></returns>
[AllowAnonymous]
[HttpPost] [HttpPost]
[Route("AddUser1")] [Route("AddUser1")]
public async Task<Result> AddUser1(App_Sys_UserModel UserModel) public async Task<Result> AddUser1(App_Sys_UserModel UserModel)
@ -222,7 +220,6 @@ namespace _24Hour.Controllers
ret.IsSucceed = false; ret.IsSucceed = false;
ret.Message = ex.Message; ret.Message = ex.Message;
} }
_logs.WriteSysLogadd("用户管理", "添加APP端用户", ret, _db);
return ret; return ret;
} }

7
24Hour/Controllers/system/SystemControllerController.cs

@ -113,12 +113,11 @@ namespace _24Hour.Controllers.system
{ {
try try
{ {
var data = await _db.Queryable<App_Sys_UserModel>().Where(q => q.phone == UserModel.phone).FirstAsync(); var data = await _db.Queryable<App_Sys_UserModel>().Where(q =>q.IsDeleted==0&& q.phone == UserModel.phone|| q.cardId == UserModel.cardId).FirstAsync();
if (data != null) if (data != null)
{ {
result.IsSucceed = false; result.IsSucceed = false;
result.Message = "电话号码已存在!"; result.Message = "电话号码或身份证号已存在!";
return result; return result;
} }
_db.BeginTran(); _db.BeginTran();
@ -695,8 +694,6 @@ namespace _24Hour.Controllers.system
{ {
var totalCount = 0; var totalCount = 0;
var list = await _db.Queryable<App_Sys_DepartModel>() var list = await _db.Queryable<App_Sys_DepartModel>()
.WhereIF(!unitId.IsNull(), q => q.unitId.Contains(unitId))
.WhereIF(!unitId.IsNull(), q => q.unitId.Contains(unitId))
.WhereIF(!unitId.IsNull(), q => q.unitId.Contains(unitId)) .WhereIF(!unitId.IsNull(), q => q.unitId.Contains(unitId))
.Where(q => q.IsDelete == 0).ToListAsync(); .Where(q => q.IsDelete == 0).ToListAsync();
result.IsSucceed = true; result.IsSucceed = true;

3
24Hour/Program.cs

@ -26,8 +26,7 @@ builder.WebHost.UseUrls(Configuration.GetSection("UrlsConfiguration:Urls").Value
builder.Services.AddControllers().AddJsonOptions(options => builder.Services.AddControllers().AddJsonOptions(options =>
{ {
options.JsonSerializerOptions.PropertyNamingPolicy = null; options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<DateTime>()); options.JsonSerializerOptions.Converters.Add(new Elight.Utility.DateTimeNullableConverter());
options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<DateTimeOffset>());
options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<long>()); options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<long>());
options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<int>()); options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<int>());
options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<double>()); options.JsonSerializerOptions.Converters.Add(new Elight.Utility.NullableConverter<double>());

4
24Hour/appsettings.json

@ -40,5 +40,9 @@
/* DomainUrl["http://localhost:api端口号"] */ /* DomainUrl["http://localhost:api端口号"] */
"DomainUrl": "http://localhost:8006", "DomainUrl": "http://localhost:8006",
"HubCorUrls": [] "HubCorUrls": []
},
"Videoaddress": {
"rtmp": "rtmp://192.168.0.24:1935/live/",
"rtsp": "rtsp://192.168.0.24:8554/live/"
} }
} }

36
24Hour/wwwroot/CaseFile/logs/Logs/ExceptionLog/20230615/18.log

@ -0,0 +1,36 @@
日志时间:2023-06-15 18:17:55
************************Exception Start********************************
Exception Remark:添加数据库日志信息_WriteSysLog_1 发生异常
Exception Date:2023/6/15 18:17:55
Exception Type:MySqlConnector.MySqlException
Exception Message:Data too long for column 'OperatingManual' at row 1
Exception Source:SqlSugar
Exception StackTrace: at SqlSugar.AdoProvider.ExecuteCommand(String sql, SugarParameter[] parameters)
at SqlSugar.InsertableProvider`1.ExecuteCommand()
at Elight.Logic.WriteSysLog.WriteSysLogadd(String operationType, String content, Result result, SqlSugarClient _db, String opeCasDepAccCas) in E:\Code\24Hour.Service\Elight.Logic\WriteSysLog.cs:line 52
************************Exception End************************************
日志时间:2023-06-15 18:18:09
************************Exception Start********************************
Exception Remark:添加数据库日志信息_WriteSysLog_1 发生异常
Exception Date:2023/6/15 18:18:09
Exception Type:MySqlConnector.MySqlException
Exception Message:Data too long for column 'OperatingManual' at row 1
Exception Source:SqlSugar
Exception StackTrace: at SqlSugar.AdoProvider.ExecuteCommand(String sql, SugarParameter[] parameters)
at SqlSugar.InsertableProvider`1.ExecuteCommand()
at Elight.Logic.WriteSysLog.WriteSysLogadd(String operationType, String content, Result result, SqlSugarClient _db, String opeCasDepAccCas) in E:\Code\24Hour.Service\Elight.Logic\WriteSysLog.cs:line 52
************************Exception End************************************
日志时间:2023-06-15 18:47:38
************************Exception Start********************************
Exception Remark:添加数据库日志信息_WriteSysLog_1 发生异常
Exception Date:2023/6/15 18:47:38
Exception Type:MySqlConnector.MySqlException
Exception Message:Data too long for column 'OperatingManual' at row 1
Exception Source:SqlSugar
Exception StackTrace: at SqlSugar.AdoProvider.ExecuteCommand(String sql, SugarParameter[] parameters)
at SqlSugar.InsertableProvider`1.ExecuteCommand()
at Elight.Logic.WriteSysLog.WriteSysLogadd(String operationType, String content, Result result, SqlSugarClient _db, String opeCasDepAccCas) in E:\Code\24Hour.Service\Elight.Logic\WriteSysLog.cs:line 52
************************Exception End************************************

12
24Hour/wwwroot/CaseFile/logs/Logs/ExceptionLog/20230615/19.log

@ -0,0 +1,12 @@
日志时间:2023-06-15 19:33:41
************************Exception Start********************************
Exception Remark:添加数据库日志信息_WriteSysLog_1 发生异常
Exception Date:2023/6/15 19:33:41
Exception Type:MySqlConnector.MySqlException
Exception Message:Data too long for column 'OperatingManual' at row 1
Exception Source:SqlSugar
Exception StackTrace: at SqlSugar.AdoProvider.ExecuteCommand(String sql, SugarParameter[] parameters)
at SqlSugar.InsertableProvider`1.ExecuteCommand()
at Elight.Logic.WriteSysLog.WriteSysLogadd(String operationType, String content, Result result, SqlSugarClient _db, String opeCasDepAccCas) in E:\Code\24Hour.Service\Elight.Logic\WriteSysLog.cs:line 52
************************Exception End************************************

2
Elight.Entity/AppMode/App_RemoteModel.cs

@ -71,7 +71,7 @@ namespace Elight.Entity
/// 0:待开始,1已结束,2:会议取消 /// 0:待开始,1已结束,2:会议取消
/// </summary> /// </summary>
[DataMember] [DataMember]
public int? state { get; set; } public int state { get; set; }
[DataMember] [DataMember]
public string? createusername { get; set; } public string? createusername { get; set; }

2
Elight.Entity/SystemModel/Func_Dossier_LogRecordModel.cs

@ -13,7 +13,7 @@ namespace Elight.Entity.SystemModel
/// </summary> /// </summary>
[DataContract] [DataContract]
[Serializable] [Serializable]
[SugarTable("app_sys_depart")] [SugarTable("func_dossier_logrecord")]
public class Func_Dossier_LogRecordModel public class Func_Dossier_LogRecordModel
{ {

5
Elight.Logic/WriteSysLog.cs

@ -31,7 +31,7 @@ namespace Elight.Logic
/// 添加数据库日志信息 /// 添加数据库日志信息
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public void WriteSysLogadd(string operationType, string content, Result result, SqlSugarClient _db=null, string opeCasDepAccCas = null) public void WriteSysLogadd(string operationType, string content, Result result, SqlSugarClient _db = null, string opeCasDepAccCas = null)
{ {
try try
{ {
@ -39,6 +39,7 @@ namespace Elight.Logic
{ {
UnitCode = _userdata.unitCode, UnitCode = _userdata.unitCode,
OperationType = operationType, OperationType = operationType,
SerialNumber = Guid.NewGuid().ToString(),
NameEntity = "", NameEntity = "",
LogContents = result.IsSucceed ? $"{content}成功" : $"{content}失败:{result.Message}", LogContents = result.IsSucceed ? $"{content}成功" : $"{content}失败:{result.Message}",
ParColCreTimTakYeaTri = DateTime.Now.Year.ToString(), ParColCreTimTakYeaTri = DateTime.Now.Year.ToString(),
@ -48,7 +49,7 @@ namespace Elight.Logic
OperatingManual = _userdata.Id, OperatingManual = _userdata.Id,
OpeCasDepAccCas = opeCasDepAccCas ?? string.Empty OpeCasDepAccCas = opeCasDepAccCas ?? string.Empty
}; };
var sss= _db.Insertable(model).ExecuteCommand(); var sss = _db.Insertable(model).ExecuteCommand();
} }
catch (Exception ex) catch (Exception ex)
{ {

19
Elight.Utility/NullableConverter.cs

@ -33,4 +33,23 @@ namespace Elight.Utility
} }
} }
public class DateTimeNullableConverter : JsonConverter<DateTime?>
{
public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (DateTime.TryParse(reader.GetString(), out DateTime date)) return date;
return default(DateTime?);
}
return reader.GetDateTime();
}
public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
{
writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
} }

Loading…
Cancel
Save