开发暂存
This commit is contained in:
parent
25467c85aa
commit
ac96a27072
46
AutoDispathingWork/ApplicationDbContext.cs
Normal file
46
AutoDispathingWork/ApplicationDbContext.cs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using WorkerService1.Domains;
|
||||||
|
using WorkerService1.Dto.Configuration;
|
||||||
|
|
||||||
|
namespace WorkerService1;
|
||||||
|
|
||||||
|
public class ApplicationDbContext : DbContext
|
||||||
|
{
|
||||||
|
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
|
||||||
|
: base(options)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
private static readonly ILoggerFactory _loggerFactory = new LoggerFactory();
|
||||||
|
|
||||||
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
|
{
|
||||||
|
optionsBuilder.UseLoggerFactory(_loggerFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
var clientEntry = modelBuilder.Entity<ClientOptions>();
|
||||||
|
clientEntry.HasKey(x => x.Id);
|
||||||
|
|
||||||
|
var logEntry = modelBuilder.Entity<LogInfo>();
|
||||||
|
logEntry.HasKey(x => x.Id);
|
||||||
|
logEntry.HasIndex(x => x.CreateTime);
|
||||||
|
|
||||||
|
var polygonEntry = modelBuilder.Entity<Polygon>();
|
||||||
|
polygonEntry.HasKey(x => x.PolygonId);
|
||||||
|
polygonEntry.Property(x => x.Points).HasColumnType("jsonb");
|
||||||
|
polygonEntry.Property(x => x.RangeCameras).HasColumnType("jsonb");
|
||||||
|
|
||||||
|
|
||||||
|
var smsSendRecordEntry = modelBuilder.Entity<SmsSendRecord>();
|
||||||
|
smsSendRecordEntry.HasKey(x => x.Id);
|
||||||
|
smsSendRecordEntry.HasIndex(x => x.SendTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DbSet<SmsSendRecord> SmsSendRecords { get; set; }
|
||||||
|
public DbSet<ClientOptions> ClientOptions { get; set; }
|
||||||
|
|
||||||
|
public DbSet<LogInfo> LogInfos { get; set; }
|
||||||
|
|
||||||
|
public DbSet<Polygon> Polygons { get; set; }
|
||||||
|
}
|
||||||
@ -11,9 +11,15 @@
|
|||||||
<PackageReference Include="LiteDB.Async" Version="0.1.7" />
|
<PackageReference Include="LiteDB.Async" Version="0.1.7" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="8.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="7.0.0" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.7" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.7">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
|
||||||
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />
|
||||||
<PackageReference Include="SharpMap" Version="1.2.0" />
|
<PackageReference Include="SharpMap" Version="1.2.0" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
using AutoDispathingWork.Utils;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using WorkerService1.Domains;
|
using WorkerService1.Domains;
|
||||||
using WorkerService1.Dto.Configuration;
|
using WorkerService1.Dto.Configuration;
|
||||||
@ -8,22 +9,17 @@ namespace WorkerService1;
|
|||||||
public class CloseWorker : BackgroundService
|
public class CloseWorker : BackgroundService
|
||||||
{
|
{
|
||||||
private readonly ILogger<CloseWorker> _logger;
|
private readonly ILogger<CloseWorker> _logger;
|
||||||
private readonly SpiderServices _spiderServices;
|
|
||||||
|
|
||||||
private readonly IServiceProvider _serviceProvider;
|
public CloseWorker(ILogger<CloseWorker> logger)
|
||||||
|
|
||||||
public CloseWorker(ILogger<CloseWorker> logger, SpiderServices spiderServices, IServiceProvider serviceProvider)
|
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_spiderServices = spiderServices;
|
|
||||||
_serviceProvider = serviceProvider;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
while (!stoppingToken.IsCancellationRequested)
|
while (!stoppingToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
using var scope = _serviceProvider.CreateScope();
|
using var scope = StaticServiceProvider.Current.CreateScope();
|
||||||
var settingServices = scope.ServiceProvider.GetRequiredService<SettingServices>();
|
var settingServices = scope.ServiceProvider.GetRequiredService<SettingServices>();
|
||||||
var options = settingServices.GetClientOptions();
|
var options = settingServices.GetClientOptions();
|
||||||
if (_logger.IsEnabled(LogLevel.Information))
|
if (_logger.IsEnabled(LogLevel.Information))
|
||||||
@ -49,6 +45,7 @@ public class CloseWorker : BackgroundService
|
|||||||
|
|
||||||
private async Task Handle()
|
private async Task Handle()
|
||||||
{
|
{
|
||||||
|
var _spiderServices = StaticServiceProvider.Current.GetRequiredService<SpiderServices>();
|
||||||
var listRes = await _spiderServices.GetTaskList(3);
|
var listRes = await _spiderServices.GetTaskList(3);
|
||||||
if (listRes.IsSuccess)
|
if (listRes.IsSuccess)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using AutoDispathingWork.Utils;
|
using AutoDispathingWork.Utils;
|
||||||
using LiteDB;
|
using LiteDB;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using WorkerService1.Domains;
|
using WorkerService1.Domains;
|
||||||
using WorkerService1.Dto;
|
using WorkerService1.Dto;
|
||||||
using WorkerService1.Dto.Configuration;
|
using WorkerService1.Dto.Configuration;
|
||||||
@ -30,10 +31,10 @@ public class UserController : ControllerBase
|
|||||||
|
|
||||||
[HttpGet("/api/Polygon/Pages")]
|
[HttpGet("/api/Polygon/Pages")]
|
||||||
public async Task<SpiderResponse<List<Polygon>>> GetPolygon([FromQuery] PageRequest request,
|
public async Task<SpiderResponse<List<Polygon>>> GetPolygon([FromQuery] PageRequest request,
|
||||||
[FromServices] LiteDatabase db, [FromServices] SpiderServices spiderServices)
|
[FromServices] ApplicationDbContext db, [FromServices] SpiderServices spiderServices)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
var result = polygon.FindAll().ToList();
|
var result = await polygon.ToListAsync();
|
||||||
var cameras = await spiderServices.GetCameras();
|
var cameras = await spiderServices.GetCameras();
|
||||||
var cameraLocation = cameras.Result?.Records.Select(x => (x.name, Location: new Points(x.lon, x.lat)))
|
var cameraLocation = cameras.Result?.Records.Select(x => (x.name, Location: new Points(x.lon, x.lat)))
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -56,37 +57,39 @@ public class UserController : ControllerBase
|
|||||||
|
|
||||||
|
|
||||||
[HttpPost("/api/Polygon")]
|
[HttpPost("/api/Polygon")]
|
||||||
public SpiderResponse<bool> CreateOrUpdatePolygon([FromBody] Polygon request, [FromServices] LiteDatabase db)
|
public async Task<SpiderResponse<bool>> CreateOrUpdatePolygon([FromBody] Polygon request,
|
||||||
|
[FromServices] ApplicationDbContext db)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
if (request.PolygonId == null)
|
if (request.PolygonId == null)
|
||||||
{
|
{
|
||||||
request.PolygonId = Guid.NewGuid();
|
request.PolygonId = Guid.NewGuid();
|
||||||
var result = polygon.Insert(request);
|
var result = await polygon.AddAsync(request);
|
||||||
return new SpiderResponse<bool>()
|
await db.SaveChangesAsync();
|
||||||
|
return new SpiderResponse<bool>
|
||||||
{
|
{
|
||||||
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "保存成功", Result = true
|
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "保存成功", Result = true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
var old = await polygon.FirstOrDefaultAsync(x => x.PolygonId == request.PolygonId);
|
||||||
var old = polygon.FindOne(x => x.PolygonId == request.PolygonId);
|
|
||||||
old.Points = request.Points;
|
old.Points = request.Points;
|
||||||
old.Name = request.Name;
|
old.Name = request.Name;
|
||||||
polygon.Update(old);
|
polygon.Update(old);
|
||||||
return new SpiderResponse<bool>()
|
await db.SaveChangesAsync();
|
||||||
|
return new SpiderResponse<bool>
|
||||||
{
|
{
|
||||||
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "更新成功", Result = true
|
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "更新成功", Result = true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[HttpDelete("/api/Polygon/{polygonId}")]
|
[HttpDelete("/api/Polygon/{polygonId}")]
|
||||||
public SpiderResponse<bool> DeletePolygon([FromRoute] Guid polygonId, [FromServices] LiteDatabase db)
|
public async Task<SpiderResponse<bool>> DeletePolygon([FromRoute] Guid polygonId,
|
||||||
|
[FromServices] ApplicationDbContext db)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
var result = polygon.FindById(polygonId);
|
var result = await polygon.FirstOrDefaultAsync(x => x.PolygonId == polygonId);
|
||||||
if (result == null)
|
if (result == null)
|
||||||
{
|
{
|
||||||
return new SpiderResponse<bool>()
|
return new SpiderResponse<bool>()
|
||||||
@ -95,7 +98,8 @@ public class UserController : ControllerBase
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
polygon.Delete(polygonId);
|
polygon.Remove(result);
|
||||||
|
await db.SaveChangesAsync();
|
||||||
return new SpiderResponse<bool>()
|
return new SpiderResponse<bool>()
|
||||||
{
|
{
|
||||||
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "删除区域信息成功", Result = true
|
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "删除区域信息成功", Result = true
|
||||||
@ -103,10 +107,11 @@ public class UserController : ControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("/api/Polygon/{polygonId}")]
|
[HttpGet("/api/Polygon/{polygonId}")]
|
||||||
public SpiderResponse<Polygon> GetPolygon([FromRoute] Guid polygonId, [FromServices] LiteDatabase db)
|
public async Task<SpiderResponse<Polygon>> GetPolygon([FromRoute] Guid polygonId,
|
||||||
|
[FromServices] ApplicationDbContext db)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
var result = polygon.FindById(polygonId);
|
var result = await polygon.FirstOrDefaultAsync(x => x.PolygonId == polygonId);
|
||||||
if (result == null)
|
if (result == null)
|
||||||
{
|
{
|
||||||
return new SpiderResponse<Polygon>()
|
return new SpiderResponse<Polygon>()
|
||||||
@ -123,11 +128,11 @@ public class UserController : ControllerBase
|
|||||||
|
|
||||||
|
|
||||||
[HttpPut("/api/Polygon/{polygonId}/UserId/{userId}")]
|
[HttpPut("/api/Polygon/{polygonId}/UserId/{userId}")]
|
||||||
public async Task<SpiderResponse<bool>> BindPolygonUserId([FromRoute] Guid polygonId, [FromRoute] string userId,
|
public async Task<SpiderResponse<bool>> BindPolygonUserId([FromRoute] Guid polygonId, [FromRoute] string userId
|
||||||
[FromServices] LiteDatabase db, [FromServices] SpiderServices spiderServices)
|
, [FromServices] ApplicationDbContext db, [FromServices] SpiderServices spiderServices)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
var result = polygon.FindOne(x => x.PolygonId == polygonId);
|
var result = await polygon.FirstOrDefaultAsync(x => x.PolygonId == polygonId);
|
||||||
|
|
||||||
if (result == null)
|
if (result == null)
|
||||||
{
|
{
|
||||||
@ -149,9 +154,11 @@ public class UserController : ControllerBase
|
|||||||
if (currentUser != null)
|
if (currentUser != null)
|
||||||
{
|
{
|
||||||
result.UserName = currentUser.UserRealName;
|
result.UserName = currentUser.UserRealName;
|
||||||
|
result.PhoneNumber = currentUser.UserPhoneNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
polygon.Update(result);
|
polygon.Update(result);
|
||||||
|
await db.SaveChangesAsync();
|
||||||
return new SpiderResponse<bool>()
|
return new SpiderResponse<bool>()
|
||||||
{
|
{
|
||||||
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "更新区域信息成功", Result = true
|
IsSuccess = true, Code = SpiderResponseCode.Success, Message = "更新区域信息成功", Result = true
|
||||||
@ -159,13 +166,13 @@ public class UserController : ControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("/api/Polygon/others")]
|
[HttpGet("/api/Polygon/others")]
|
||||||
public SpiderResponse<List<List<List<Points>>>> GetAllPoints([FromQuery] Guid? polygonId,
|
public async Task<SpiderResponse<List<List<List<Points>>>>> GetAllPoints([FromQuery] Guid? polygonId
|
||||||
[FromServices] LiteDatabase db)
|
, [FromServices] ApplicationDbContext db)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
if (polygonId.HasValue)
|
if (polygonId.HasValue)
|
||||||
{
|
{
|
||||||
var result = polygon.Find(x => x.PolygonId != polygonId).ToList();
|
var result = await polygon.Where(x => x.PolygonId != polygonId).ToListAsync();
|
||||||
var points = result.Select(x => x.Points).ToList();
|
var points = result.Select(x => x.Points).ToList();
|
||||||
return new SpiderResponse<List<List<List<Points>>>>()
|
return new SpiderResponse<List<List<List<Points>>>>()
|
||||||
{
|
{
|
||||||
@ -174,7 +181,7 @@ public class UserController : ControllerBase
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var result = polygon.FindAll().ToList();
|
var result = await polygon.ToListAsync();
|
||||||
var points = result.Select(x => x.Points).ToList();
|
var points = result.Select(x => x.Points).ToList();
|
||||||
return new SpiderResponse<List<List<List<Points>>>>()
|
return new SpiderResponse<List<List<List<Points>>>>()
|
||||||
{
|
{
|
||||||
@ -185,10 +192,10 @@ public class UserController : ControllerBase
|
|||||||
|
|
||||||
[HttpGet("/api/Polygon/{polygonId}/InRangeCameras")]
|
[HttpGet("/api/Polygon/{polygonId}/InRangeCameras")]
|
||||||
public async IAsyncEnumerable<string> IsRangeInPolygon([FromRoute] Guid polygonId,
|
public async IAsyncEnumerable<string> IsRangeInPolygon([FromRoute] Guid polygonId,
|
||||||
[FromServices] LiteDatabase db, [FromServices] SpiderServices spiderServices)
|
[FromServices] ApplicationDbContext db, [FromServices] SpiderServices spiderServices)
|
||||||
{
|
{
|
||||||
var polygon = db.GetCollection<Polygon>();
|
var polygon = db.Polygons;
|
||||||
var result = polygon.FindOne(x => x.PolygonId == polygonId);
|
var result = await polygon.FirstOrDefaultAsync(x => x.PolygonId == polygonId);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
var cameras = await spiderServices.GetCameras();
|
var cameras = await spiderServices.GetCameras();
|
||||||
@ -243,13 +250,14 @@ public class UserController : ControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("/api/Log")]
|
[HttpGet("/api/Log")]
|
||||||
public SpiderResponse<PageResponse<LogInfo>> GetLog([FromQuery] PageRequest request, [FromServices] LiteDatabase db)
|
public SpiderResponse<PageResponse<LogInfo>> GetLog([FromQuery] PageRequest request,
|
||||||
|
[FromServices] ApplicationDbContext db)
|
||||||
{
|
{
|
||||||
var collection = db.GetCollection<LogInfo>();
|
var collection = db.LogInfos;
|
||||||
var logs = collection.Query()
|
var logs = collection
|
||||||
.OrderByDescending(x => x.CreateTime)
|
.OrderByDescending(x => x.CreateTime)
|
||||||
.Skip((request.Page - 1) * request.PageSize)
|
.Skip((request.Page - 1) * request.PageSize)
|
||||||
.Limit(request.PageSize)
|
.Take(request.PageSize)
|
||||||
.ToList();
|
.ToList();
|
||||||
var total = collection.Count();
|
var total = collection.Count();
|
||||||
return new SpiderResponse<PageResponse<LogInfo>>()
|
return new SpiderResponse<PageResponse<LogInfo>>()
|
||||||
|
|||||||
Binary file not shown.
@ -32,9 +32,9 @@ public static class LogInfoExtensions
|
|||||||
{
|
{
|
||||||
var logger = StaticServiceProvider.GetLogger(from);
|
var logger = StaticServiceProvider.GetLogger(from);
|
||||||
logger.LogInformation(message);
|
logger.LogInformation(message);
|
||||||
var db = StaticServiceProvider.GetLogDb();
|
|
||||||
var log = new LogInfo("Info", message, from);
|
var log = new LogInfo("Info", message, from);
|
||||||
db.Insert(log);
|
StaticServiceProvider.AddLog(log);
|
||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,9 +42,8 @@ public static class LogInfoExtensions
|
|||||||
{
|
{
|
||||||
var logger = StaticServiceProvider.GetLogger(from);
|
var logger = StaticServiceProvider.GetLogger(from);
|
||||||
logger.LogError(message);
|
logger.LogError(message);
|
||||||
var db = StaticServiceProvider.GetLogDb();
|
|
||||||
var log = new LogInfo("Error", message, from);
|
var log = new LogInfo("Error", message, from);
|
||||||
db.Insert(log);
|
StaticServiceProvider.AddLog(log);
|
||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,9 +51,8 @@ public static class LogInfoExtensions
|
|||||||
{
|
{
|
||||||
var logger = StaticServiceProvider.GetLogger(from);
|
var logger = StaticServiceProvider.GetLogger(from);
|
||||||
logger.LogWarning(message);
|
logger.LogWarning(message);
|
||||||
var db = StaticServiceProvider.GetLogDb();
|
|
||||||
var log = new LogInfo("Warning", message, from);
|
var log = new LogInfo("Warning", message, from);
|
||||||
db.Insert(log);
|
StaticServiceProvider.AddLog(log);
|
||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,9 +60,8 @@ public static class LogInfoExtensions
|
|||||||
{
|
{
|
||||||
var logger = StaticServiceProvider.GetLogger(from);
|
var logger = StaticServiceProvider.GetLogger(from);
|
||||||
logger.LogDebug(message);
|
logger.LogDebug(message);
|
||||||
var db = StaticServiceProvider.GetLogDb();
|
|
||||||
var log = new LogInfo("Debug", message, from);
|
var log = new LogInfo("Debug", message, from);
|
||||||
db.Insert(log);
|
StaticServiceProvider.AddLog(log);
|
||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,6 +6,7 @@ public class Polygon
|
|||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string? UserId { get; set; }
|
public string? UserId { get; set; }
|
||||||
public string? UserName { get; set; }
|
public string? UserName { get; set; }
|
||||||
|
public string? PhoneNumber { get; set; }
|
||||||
public List<List<Points>>? Points { get; set; }
|
public List<List<Points>>? Points { get; set; }
|
||||||
|
|
||||||
public List<string>? RangeCameras { get; set; } = new List<string>();
|
public List<string>? RangeCameras { get; set; } = new List<string>();
|
||||||
|
|||||||
38
AutoDispathingWork/Domains/SmsSendRecord.cs
Normal file
38
AutoDispathingWork/Domains/SmsSendRecord.cs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace WorkerService1.Domains;
|
||||||
|
|
||||||
|
public class SmsSendRecord
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 自增主键
|
||||||
|
/// </summary>
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 业务id
|
||||||
|
/// </summary>
|
||||||
|
public string RefrenceId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 手机号
|
||||||
|
/// </summary>
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 短信内容
|
||||||
|
/// </summary>
|
||||||
|
public string Content { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 发送时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime SendTime { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 是否成功
|
||||||
|
/// </summary>
|
||||||
|
public bool IsSuccess { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 错误信息
|
||||||
|
/// </summary>
|
||||||
|
public string ErrorMessage { get; set; }
|
||||||
|
}
|
||||||
@ -4,7 +4,8 @@ namespace WorkerService1.Dto.Configuration;
|
|||||||
|
|
||||||
public class ClientOptions
|
public class ClientOptions
|
||||||
{
|
{
|
||||||
public string ApiGateway { get; set; } = "http://121.4.75.240/";
|
public Guid Id { get; set; } = Guid.NewGuid();
|
||||||
|
public string ApiGateway { get; set; } = "http://101.35.48.186/";
|
||||||
[JsonPropertyName("username")]
|
[JsonPropertyName("username")]
|
||||||
public string UserName { get; set; } = "ganquanjiedao";
|
public string UserName { get; set; } = "ganquanjiedao";
|
||||||
[JsonPropertyName("password")]
|
[JsonPropertyName("password")]
|
||||||
|
|||||||
@ -27,4 +27,5 @@ public class UserRecord
|
|||||||
[JsonPropertyName("id")] public string Id { get; set; }
|
[JsonPropertyName("id")] public string Id { get; set; }
|
||||||
[JsonPropertyName("userName")] public string UserName { get; set; }
|
[JsonPropertyName("userName")] public string UserName { get; set; }
|
||||||
[JsonPropertyName("userRealName")] public string UserRealName { get; set; }
|
[JsonPropertyName("userRealName")] public string UserRealName { get; set; }
|
||||||
|
[JsonPropertyName("phoneNo")] public string UserPhoneNumber { get; set; }
|
||||||
}
|
}
|
||||||
145
AutoDispathingWork/Migrations/20240810135019_initDb.Designer.cs
generated
Normal file
145
AutoDispathingWork/Migrations/20240810135019_initDb.Designer.cs
generated
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
using WorkerService1;
|
||||||
|
using WorkerService1.Domains;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AutoDispathingWork.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
[Migration("20240810135019_initDb")]
|
||||||
|
partial class initDb
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "8.0.7")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.LogInfo", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreateTime")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.Property<string>("From")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Level")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Message")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CreateTime");
|
||||||
|
|
||||||
|
b.ToTable("LogInfos");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.Polygon", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid?>("PolygonId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<List<List<Points>>>("Points")
|
||||||
|
.HasColumnType("jsonb");
|
||||||
|
|
||||||
|
b.Property<List<string>>("RangeCameras")
|
||||||
|
.HasColumnType("jsonb");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("PolygonId");
|
||||||
|
|
||||||
|
b.ToTable("Polygons");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Dto.Configuration.ClientOptions", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<string>("ApiGateway")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("CloseFileApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("CloseFileRunning")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<int>("Delay")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<string>("DiposeOrder")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("DispatchingRunning")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("GetCamerasApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("GetTaskApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("GetUserApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("LoginApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Password")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text")
|
||||||
|
.HasAnnotation("Relational:JsonPropertyName", "password");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text")
|
||||||
|
.HasAnnotation("Relational:JsonPropertyName", "username");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("ClientOptions");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
89
AutoDispathingWork/Migrations/20240810135019_initDb.cs
Normal file
89
AutoDispathingWork/Migrations/20240810135019_initDb.cs
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using WorkerService1.Domains;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AutoDispathingWork.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class initDb : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ClientOptions",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
ApiGateway = table.Column<string>(type: "text", nullable: false),
|
||||||
|
UserName = table.Column<string>(type: "text", nullable: false),
|
||||||
|
Password = table.Column<string>(type: "text", nullable: false),
|
||||||
|
Delay = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
DispatchingRunning = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
CloseFileRunning = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
LoginApi = table.Column<string>(type: "text", nullable: false),
|
||||||
|
GetTaskApi = table.Column<string>(type: "text", nullable: false),
|
||||||
|
GetUserApi = table.Column<string>(type: "text", nullable: false),
|
||||||
|
DiposeOrder = table.Column<string>(type: "text", nullable: false),
|
||||||
|
CloseFileApi = table.Column<string>(type: "text", nullable: false),
|
||||||
|
GetCamerasApi = table.Column<string>(type: "text", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ClientOptions", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "LogInfos",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
Message = table.Column<string>(type: "text", nullable: false),
|
||||||
|
From = table.Column<string>(type: "text", nullable: false),
|
||||||
|
Level = table.Column<string>(type: "text", nullable: false),
|
||||||
|
CreateTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_LogInfos", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Polygons",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
PolygonId = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
Name = table.Column<string>(type: "text", nullable: false),
|
||||||
|
UserId = table.Column<string>(type: "text", nullable: true),
|
||||||
|
UserName = table.Column<string>(type: "text", nullable: true),
|
||||||
|
Points = table.Column<List<List<Points>>>(type: "jsonb", nullable: true),
|
||||||
|
RangeCameras = table.Column<List<string>>(type: "jsonb", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Polygons", x => x.PolygonId);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_LogInfos_CreateTime",
|
||||||
|
table: "LogInfos",
|
||||||
|
column: "CreateTime");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ClientOptions");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "LogInfos");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Polygons");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
182
AutoDispathingWork/Migrations/20240810152436_dbv2.Designer.cs
generated
Normal file
182
AutoDispathingWork/Migrations/20240810152436_dbv2.Designer.cs
generated
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
using WorkerService1;
|
||||||
|
using WorkerService1.Domains;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AutoDispathingWork.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
[Migration("20240810152436_dbv2")]
|
||||||
|
partial class dbv2
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "8.0.7")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.LogInfo", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreateTime")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.Property<string>("From")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Level")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Message")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CreateTime");
|
||||||
|
|
||||||
|
b.ToTable("LogInfos");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.Polygon", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid?>("PolygonId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<List<List<Points>>>("Points")
|
||||||
|
.HasColumnType("jsonb");
|
||||||
|
|
||||||
|
b.Property<List<string>>("RangeCameras")
|
||||||
|
.HasColumnType("jsonb");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("PolygonId");
|
||||||
|
|
||||||
|
b.ToTable("Polygons");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.SmsSendRecord", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("Content")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ErrorMessage")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("IsSuccess")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("PhoneNumber")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("RefrenceId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<DateTime>("SendTime")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("SendTime");
|
||||||
|
|
||||||
|
b.ToTable("SmsSendRecords");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Dto.Configuration.ClientOptions", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<string>("ApiGateway")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("CloseFileApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("CloseFileRunning")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<int>("Delay")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<string>("DiposeOrder")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("DispatchingRunning")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("GetCamerasApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("GetTaskApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("GetUserApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("LoginApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Password")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text")
|
||||||
|
.HasAnnotation("Relational:JsonPropertyName", "password");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text")
|
||||||
|
.HasAnnotation("Relational:JsonPropertyName", "username");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("ClientOptions");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
AutoDispathingWork/Migrations/20240810152436_dbv2.cs
Normal file
46
AutoDispathingWork/Migrations/20240810152436_dbv2.cs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AutoDispathingWork.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class dbv2 : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "SmsSendRecords",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
RefrenceId = table.Column<string>(type: "text", nullable: false),
|
||||||
|
PhoneNumber = table.Column<string>(type: "text", nullable: false),
|
||||||
|
Content = table.Column<string>(type: "text", nullable: false),
|
||||||
|
SendTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||||
|
IsSuccess = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
ErrorMessage = table.Column<string>(type: "text", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_SmsSendRecords", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SmsSendRecords_SendTime",
|
||||||
|
table: "SmsSendRecords",
|
||||||
|
column: "SendTime");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "SmsSendRecords");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,179 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
using WorkerService1;
|
||||||
|
using WorkerService1.Domains;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AutoDispathingWork.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
partial class ApplicationDbContextModelSnapshot : ModelSnapshot
|
||||||
|
{
|
||||||
|
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "8.0.7")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.LogInfo", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreateTime")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.Property<string>("From")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Level")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Message")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CreateTime");
|
||||||
|
|
||||||
|
b.ToTable("LogInfos");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.Polygon", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid?>("PolygonId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<List<List<Points>>>("Points")
|
||||||
|
.HasColumnType("jsonb");
|
||||||
|
|
||||||
|
b.Property<List<string>>("RangeCameras")
|
||||||
|
.HasColumnType("jsonb");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("PolygonId");
|
||||||
|
|
||||||
|
b.ToTable("Polygons");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Domains.SmsSendRecord", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("Content")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ErrorMessage")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("IsSuccess")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("PhoneNumber")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("RefrenceId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<DateTime>("SendTime")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("SendTime");
|
||||||
|
|
||||||
|
b.ToTable("SmsSendRecords");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("WorkerService1.Dto.Configuration.ClientOptions", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<string>("ApiGateway")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("CloseFileApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("CloseFileRunning")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<int>("Delay")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<string>("DiposeOrder")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("DispatchingRunning")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("GetCamerasApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("GetTaskApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("GetUserApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("LoginApi")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Password")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text")
|
||||||
|
.HasAnnotation("Relational:JsonPropertyName", "password");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text")
|
||||||
|
.HasAnnotation("Relational:JsonPropertyName", "username");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("ClientOptions");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,10 @@
|
|||||||
using AutoDispathingWork.Utils;
|
using AutoDispathingWork.Utils;
|
||||||
using LiteDB;
|
using LiteDB;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Diagnostics;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
|
using Npgsql;
|
||||||
using WorkerService1;
|
using WorkerService1;
|
||||||
using WorkerService1.Dto.Configuration;
|
using WorkerService1.Dto.Configuration;
|
||||||
using WorkerService1.Services;
|
using WorkerService1.Services;
|
||||||
@ -26,6 +29,20 @@ builder.Services.AddCors(x =>
|
|||||||
.AllowAnyHeader();
|
.AllowAnyHeader();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
|
||||||
|
builder.Services.AddDbContext<ApplicationDbContext>(x =>
|
||||||
|
{
|
||||||
|
var dataSourceBuilder = new NpgsqlDataSourceBuilder(connectionString);
|
||||||
|
// 启用动态 JSON 序列化
|
||||||
|
dataSourceBuilder.EnableDynamicJson();
|
||||||
|
var dataSource = dataSourceBuilder.Build();
|
||||||
|
x.UseNpgsql(dataSource)
|
||||||
|
.UseLoggerFactory(new LoggerFactory())
|
||||||
|
.LogTo(Console.WriteLine, LogLevel.Information);
|
||||||
|
x.ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning));
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
builder.Services.AddSwaggerGen();
|
builder.Services.AddSwaggerGen();
|
||||||
|
|
||||||
builder.Services.AddSingleton<LiteDatabase>(x => new LiteDatabase(builder.Configuration["Database:ConnectionString"]));
|
builder.Services.AddSingleton<LiteDatabase>(x => new LiteDatabase(builder.Configuration["Database:ConnectionString"]));
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using LiteDB;
|
using AutoDispathingWork.Utils;
|
||||||
|
using LiteDB;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using WorkerService1.Dto.Configuration;
|
using WorkerService1.Dto.Configuration;
|
||||||
|
|
||||||
@ -7,12 +8,12 @@ namespace WorkerService1.Services;
|
|||||||
public class SettingServices
|
public class SettingServices
|
||||||
{
|
{
|
||||||
private readonly IOptionsMonitor<ClientOptions> _optionsMonitor;
|
private readonly IOptionsMonitor<ClientOptions> _optionsMonitor;
|
||||||
private readonly LiteDatabase _db;
|
|
||||||
|
|
||||||
public SettingServices(IOptionsMonitor<ClientOptions> optionsMonitor, LiteDatabase db)
|
|
||||||
|
|
||||||
|
public SettingServices(IOptionsMonitor<ClientOptions> optionsMonitor)
|
||||||
{
|
{
|
||||||
_optionsMonitor = optionsMonitor;
|
_optionsMonitor = optionsMonitor;
|
||||||
_db = db;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reset()
|
public void Reset()
|
||||||
@ -22,8 +23,10 @@ public class SettingServices
|
|||||||
|
|
||||||
public ClientOptions GetClientOptions()
|
public ClientOptions GetClientOptions()
|
||||||
{
|
{
|
||||||
var clientOptions = _db.GetCollection<ClientOptions>();
|
using var scope = StaticServiceProvider.Current.CreateScope();
|
||||||
var dbOptions = clientOptions.FindAll().FirstOrDefault();
|
var _db = scope.ServiceProvider.GetService<ApplicationDbContext>();
|
||||||
|
var clientOptions = _db.ClientOptions;
|
||||||
|
var dbOptions = clientOptions.FirstOrDefault();
|
||||||
if (dbOptions != null)
|
if (dbOptions != null)
|
||||||
{
|
{
|
||||||
return dbOptions;
|
return dbOptions;
|
||||||
@ -34,9 +37,18 @@ public class SettingServices
|
|||||||
|
|
||||||
public ClientOptions SettingClientOptions(ClientOptions options)
|
public ClientOptions SettingClientOptions(ClientOptions options)
|
||||||
{
|
{
|
||||||
var clientOptions = _db.GetCollection<ClientOptions>();
|
using var scope = StaticServiceProvider.Current.CreateScope();
|
||||||
clientOptions.DeleteAll();
|
var _db = scope.ServiceProvider.GetService<ApplicationDbContext>();
|
||||||
clientOptions.Insert(options);
|
var clientOptions = _db.ClientOptions;
|
||||||
|
var dbOptions = clientOptions.FirstOrDefault();
|
||||||
|
if (dbOptions != null)
|
||||||
|
{
|
||||||
|
clientOptions.Remove(dbOptions);
|
||||||
|
_db.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
clientOptions.Add(options);
|
||||||
|
_db.SaveChanges();
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
12
AutoDispathingWork/Services/SmsService.cs
Normal file
12
AutoDispathingWork/Services/SmsService.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace WorkerService1.Services;
|
||||||
|
|
||||||
|
public class SmsService
|
||||||
|
{
|
||||||
|
public Task SendSmsAsync(string phoneNumber, string message,string refrenceId)
|
||||||
|
{
|
||||||
|
//发送短信逻辑
|
||||||
|
|
||||||
|
Console.WriteLine($"Sending SMS to {phoneNumber} with message {message} and refrenceId {refrenceId}");
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using AutoDispathingWork.Utils;
|
using AutoDispathingWork.Utils;
|
||||||
using LiteDB;
|
using LiteDB;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using WorkerService1.Domains;
|
using WorkerService1.Domains;
|
||||||
@ -33,26 +34,25 @@ public class SpiderServices
|
|||||||
_serviceProvider = serviceProvider;
|
_serviceProvider = serviceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IOptionsMonitor<ClientOptions> OptionsMonitor => _serviceProvider.CreateScope().ServiceProvider
|
|
||||||
.GetRequiredService<IOptionsMonitor<ClientOptions>>();
|
|
||||||
|
|
||||||
private ClientOptions GetClientOptions => _serviceProvider.CreateScope().ServiceProvider
|
// private ClientOptions GetClientOptions => _serviceProvider.CreateScope().ServiceProvider
|
||||||
.GetRequiredService<SettingServices>()
|
// .GetRequiredService<SettingServices>()
|
||||||
.GetClientOptions();
|
// .GetClientOptions();
|
||||||
|
|
||||||
private LiteDatabase GetLiteDatabase => _serviceProvider
|
|
||||||
.GetRequiredService<LiteDatabase>();
|
|
||||||
|
|
||||||
public async Task<SpiderResponse<LoginResultData>> Login()
|
public async Task<SpiderResponse<LoginResultData>> Login()
|
||||||
{
|
{
|
||||||
|
using var scope = _serviceProvider.CreateScope();
|
||||||
using var client = _httpClientFactory.CreateClient();
|
using var client = _httpClientFactory.CreateClient();
|
||||||
var loginApi = GetClientOptions.LoginUrl;
|
var getClientOptions = scope.ServiceProvider.GetService<SettingServices>()?
|
||||||
|
.GetClientOptions();
|
||||||
|
var loginApi = getClientOptions.LoginUrl;
|
||||||
var json = $@"
|
var json = $@"
|
||||||
{{""userName"":""{GetClientOptions.UserName}"",""userPwd"":""{GetClientOptions.Password}"",""type"":""account"",""clientAppId"":""megcity-web""}}
|
{{""userName"":""{getClientOptions.UserName}"",""userPwd"":""{getClientOptions.Password}"",""type"":""account"",""clientAppId"":""megcity-web""}}
|
||||||
";
|
";
|
||||||
client.DefaultRequestHeaders.Add("Module-Alias", "pending-forward");
|
client.DefaultRequestHeaders.Add("Module-Alias", "pending-forward");
|
||||||
client.DefaultRequestHeaders.Add("Module-Source", "megcity-web");
|
client.DefaultRequestHeaders.Add("Module-Source", "megcity-web");
|
||||||
client.DefaultRequestHeaders.Add("Origin", "http://121.4.75.240");
|
client.DefaultRequestHeaders.Add("Origin", _optionsMonitor.CurrentValue.ApiGateway);
|
||||||
var response = await client.PostAsync(loginApi, new StringContent(json, Encoding.UTF8, "application/json"));
|
var response = await client.PostAsync(loginApi, new StringContent(json, Encoding.UTF8, "application/json"));
|
||||||
var respJsonStr = await response.Content.ReadAsStringAsync();
|
var respJsonStr = await response.Content.ReadAsStringAsync();
|
||||||
_logger.LogInformation("登录返回: {tokenRes}", respJsonStr);
|
_logger.LogInformation("登录返回: {tokenRes}", respJsonStr);
|
||||||
@ -91,6 +91,7 @@ public class SpiderServices
|
|||||||
entry.AbsoluteExpiration = DateTimeOffset.Now;
|
entry.AbsoluteExpiration = DateTimeOffset.Now;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(loginRes.Result?.ExpireTime / 1000 ?? 0);
|
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(loginRes.Result?.ExpireTime / 1000 ?? 0);
|
||||||
return loginRes.Result?.Token;
|
return loginRes.Result?.Token;
|
||||||
});
|
});
|
||||||
@ -135,7 +136,10 @@ public class SpiderServices
|
|||||||
// {"state":[3],"pageNo":1,"pageSize":50,"sortType":[40,10],"handleStartTime":1697293650750,"handleEndTime":1699885650750}
|
// {"state":[3],"pageNo":1,"pageSize":50,"sortType":[40,10],"handleStartTime":1697293650750,"handleEndTime":1699885650750}
|
||||||
// {"state":[1],"pageNo":1,"pageSize":50,"sortType":[20,10],"createStartTime":1697290618034,"createEndTime":1699882618034}
|
// {"state":[1],"pageNo":1,"pageSize":50,"sortType":[20,10],"createStartTime":1697290618034,"createEndTime":1699882618034}
|
||||||
// {\"state\":[1],\"pageNo\":1,\"pageSize\":50,\"sortType\":[20,10],\"createStartTime\":1697204639551,\"createEndTime\":1697204639551}
|
// {\"state\":[1],\"pageNo\":1,\"pageSize\":50,\"sortType\":[20,10],\"createStartTime\":1697204639551,\"createEndTime\":1697204639551}
|
||||||
var taskPath = GetClientOptions.GetTaskUrl;
|
using var scope = _serviceProvider.CreateScope();
|
||||||
|
var getClientOptions = scope.ServiceProvider.GetService<SettingServices>()?
|
||||||
|
.GetClientOptions();
|
||||||
|
var taskPath = getClientOptions.GetTaskUrl;
|
||||||
var response = await client.PostAsync(taskPath,
|
var response = await client.PostAsync(taskPath,
|
||||||
new StringContent(JsonSerializer.Serialize(body), Encoding.UTF8, "application/json"));
|
new StringContent(JsonSerializer.Serialize(body), Encoding.UTF8, "application/json"));
|
||||||
var respJsonStr = await response.Content.ReadAsStringAsync();
|
var respJsonStr = await response.Content.ReadAsStringAsync();
|
||||||
@ -178,7 +182,10 @@ public class SpiderServices
|
|||||||
client.DefaultRequestHeaders.Add("module-alias", "pending-forward");
|
client.DefaultRequestHeaders.Add("module-alias", "pending-forward");
|
||||||
client.DefaultRequestHeaders.Add("module-source", "megcity-web");
|
client.DefaultRequestHeaders.Add("module-source", "megcity-web");
|
||||||
var request = query ?? new UserQuery();
|
var request = query ?? new UserQuery();
|
||||||
var userPath = GetClientOptions.GetUserUrl;
|
using var scope = _serviceProvider.CreateScope();
|
||||||
|
var getClientOptions = scope.ServiceProvider.GetService<SettingServices>()?
|
||||||
|
.GetClientOptions();
|
||||||
|
var userPath = getClientOptions.GetUserUrl;
|
||||||
var response = await client.PostAsync(userPath,
|
var response = await client.PostAsync(userPath,
|
||||||
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"));
|
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"));
|
||||||
var respJsonStr = await response.Content.ReadAsStringAsync();
|
var respJsonStr = await response.Content.ReadAsStringAsync();
|
||||||
@ -221,7 +228,7 @@ public class SpiderServices
|
|||||||
client.DefaultRequestHeaders.Add("module-alias", "pending-forward");
|
client.DefaultRequestHeaders.Add("module-alias", "pending-forward");
|
||||||
client.DefaultRequestHeaders.Add("module-source", "megcity-web");
|
client.DefaultRequestHeaders.Add("module-source", "megcity-web");
|
||||||
|
|
||||||
var (handlerId, userRealName) = await GetUserIdByCamera(cameraName);
|
var (handlerId,phone, userRealName) = await GetUserIdByCamera(cameraName);
|
||||||
if (string.IsNullOrWhiteSpace(handlerId))
|
if (string.IsNullOrWhiteSpace(handlerId))
|
||||||
{
|
{
|
||||||
return new SpiderResponse<object>()
|
return new SpiderResponse<object>()
|
||||||
@ -240,7 +247,10 @@ public class SpiderServices
|
|||||||
HandlerId = handlerId,
|
HandlerId = handlerId,
|
||||||
TypeCode = typeCode
|
TypeCode = typeCode
|
||||||
};
|
};
|
||||||
var dispatchPath = string.Format(GetClientOptions.DiposeOrderUrl, caseNumber);
|
using var scope = _serviceProvider.CreateScope();
|
||||||
|
var getClientOptions = scope.ServiceProvider.GetService<SettingServices>()?
|
||||||
|
.GetClientOptions();
|
||||||
|
var dispatchPath = string.Format(getClientOptions.DiposeOrderUrl, caseNumber);
|
||||||
|
|
||||||
var response = await client.PostAsync(dispatchPath,
|
var response = await client.PostAsync(dispatchPath,
|
||||||
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"));
|
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"));
|
||||||
@ -253,6 +263,8 @@ public class SpiderServices
|
|||||||
if (spiderRes?.code == 0)
|
if (spiderRes?.code == 0)
|
||||||
{
|
{
|
||||||
var msg = $"成功分发任务,任务编号:{caseNumber},任务地址:{cameraName},任务类型:{typeCode},处理人:{userRealName}";
|
var msg = $"成功分发任务,任务编号:{caseNumber},任务地址:{cameraName},任务类型:{typeCode},处理人:{userRealName}";
|
||||||
|
var smsService = scope.ServiceProvider.GetService<SmsService>();
|
||||||
|
await smsService.SendSmsAsync(phoneNumber:phone, $"{userRealName}您好,您有一条新案件,请及时处置,谢谢。",caseNumber);
|
||||||
_logger.LogInformation(msg);
|
_logger.LogInformation(msg);
|
||||||
|
|
||||||
return new SpiderResponse<object>()
|
return new SpiderResponse<object>()
|
||||||
@ -290,7 +302,10 @@ public class SpiderServices
|
|||||||
//Region为请求文件接口需要的参数,根据调用接口参数而定
|
//Region为请求文件接口需要的参数,根据调用接口参数而定
|
||||||
form.Add(new StringContent(caseNumber), "caseNumber");
|
form.Add(new StringContent(caseNumber), "caseNumber");
|
||||||
form.Add(new StringContent(suggestion), "suggestion");
|
form.Add(new StringContent(suggestion), "suggestion");
|
||||||
var closeFile = GetClientOptions.CloseFileUrl;
|
using var scope = _serviceProvider.CreateScope();
|
||||||
|
var getClientOptions = scope.ServiceProvider.GetService<SettingServices>()?
|
||||||
|
.GetClientOptions();
|
||||||
|
var closeFile = getClientOptions.CloseFileUrl;
|
||||||
|
|
||||||
var response = await client.PostAsync(closeFile, form);
|
var response = await client.PostAsync(closeFile, form);
|
||||||
var respJsonStr = await response.Content.ReadAsStringAsync();
|
var respJsonStr = await response.Content.ReadAsStringAsync();
|
||||||
@ -302,7 +317,8 @@ public class SpiderServices
|
|||||||
if (spiderRes?.code == 0)
|
if (spiderRes?.code == 0)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("成功结案");
|
_logger.LogInformation("成功结案");
|
||||||
|
_serviceProvider.GetService<SmsService>()?
|
||||||
|
.SendSmsAsync("13700000000", "您有一条案件已经结案", caseNumber);
|
||||||
return new SpiderResponse<object>()
|
return new SpiderResponse<object>()
|
||||||
{
|
{
|
||||||
IsSuccess = true,
|
IsSuccess = true,
|
||||||
@ -335,7 +351,10 @@ public class SpiderServices
|
|||||||
var request = $@"
|
var request = $@"
|
||||||
{{""managementIds"":[""6e9232ef-7b84-11e8-86b1-6c92bf4e6960""],""name"":""{name}"" ,""action"":""all"",""pageNo"":1,""pageSize"":200}}
|
{{""managementIds"":[""6e9232ef-7b84-11e8-86b1-6c92bf4e6960""],""name"":""{name}"" ,""action"":""all"",""pageNo"":1,""pageSize"":200}}
|
||||||
";
|
";
|
||||||
var getCamersPath = GetClientOptions.GetCamerasUrl;
|
using var scope = _serviceProvider.CreateScope();
|
||||||
|
var getClientOptions = scope.ServiceProvider.GetService<SettingServices>()?
|
||||||
|
.GetClientOptions();
|
||||||
|
var getCamersPath = getClientOptions.GetCamerasUrl;
|
||||||
var response = await client.PostAsync(getCamersPath,
|
var response = await client.PostAsync(getCamersPath,
|
||||||
new StringContent(request, Encoding.UTF8, "application/json"));
|
new StringContent(request, Encoding.UTF8, "application/json"));
|
||||||
var respJsonStr = await response.Content.ReadAsStringAsync();
|
var respJsonStr = await response.Content.ReadAsStringAsync();
|
||||||
@ -373,23 +392,25 @@ public class SpiderServices
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<(string userId, string userRealName )> GetUserIdByCamera(string cameraAddress)
|
public async Task<(string userId,string phone, string userRealName )> GetUserIdByCamera(string cameraAddress)
|
||||||
{
|
{
|
||||||
|
using var scope = _serviceProvider.CreateScope();
|
||||||
var camerasResp = await GetCameras(cameraAddress);
|
var camerasResp = await GetCameras(cameraAddress);
|
||||||
var camera = camerasResp.Result?.Records.FirstOrDefault();
|
var camera = camerasResp.Result?.Records.FirstOrDefault();
|
||||||
if (camera == null) return (string.Empty, string.Empty);
|
if (camera == null) return (string.Empty,string.Empty, string.Empty);
|
||||||
var location = new Points(camera.lon, camera.lat);
|
var location = new Points(camera.lon, camera.lat);
|
||||||
var db = _serviceProvider.GetRequiredService<LiteDatabase>();
|
var db = scope.ServiceProvider.GetService<ApplicationDbContext>()
|
||||||
var polygonDb = db.GetCollection<Polygon>();
|
.Polygons;
|
||||||
var polygons = polygonDb.FindAll();
|
var polygonDb = db;
|
||||||
|
var polygons = await polygonDb.ToListAsync();
|
||||||
foreach (var polygon in polygons)
|
foreach (var polygon in polygons)
|
||||||
{
|
{
|
||||||
if (location.IsPointInsidePolygon(polygon))
|
if (location.IsPointInsidePolygon(polygon))
|
||||||
{
|
{
|
||||||
return (polygon.UserId, polygon.UserName);
|
return (polygon.UserId, polygon.PhoneNumber, polygon.UserName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (string.Empty, string.Empty);
|
return (string.Empty, string.Empty,string.Empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,6 @@
|
|||||||
using LiteDB;
|
using LiteDB;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using WorkerService1;
|
||||||
using WorkerService1.Domains;
|
using WorkerService1.Domains;
|
||||||
|
|
||||||
namespace AutoDispathingWork.Utils;
|
namespace AutoDispathingWork.Utils;
|
||||||
@ -10,7 +12,7 @@ public class StaticServiceProvider
|
|||||||
Current = serviceProvider;
|
Current = serviceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IServiceProvider Current { get; set; }
|
public static IServiceProvider Current { get; set; }
|
||||||
|
|
||||||
public static T GetRequiredService<T>()
|
public static T GetRequiredService<T>()
|
||||||
{
|
{
|
||||||
@ -22,9 +24,12 @@ public class StaticServiceProvider
|
|||||||
return Current.GetService<T>();
|
return Current.GetService<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ILiteCollection<LogInfo> GetLogDb()
|
public static void AddLog(LogInfo log)
|
||||||
{
|
{
|
||||||
return Current.GetRequiredService<LiteDatabase>().GetCollection<LogInfo>();
|
using var scope = Current.CreateScope();
|
||||||
|
var dbContext = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
|
||||||
|
dbContext.LogInfos.Add(log);
|
||||||
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ILogger GetLogger(string methodName)
|
public static ILogger GetLogger(string methodName)
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using Microsoft.Extensions.Options;
|
using AutoDispathingWork.Utils;
|
||||||
using WorkerService1.Domains;
|
using WorkerService1.Domains;
|
||||||
using WorkerService1.Dto.Configuration;
|
|
||||||
using WorkerService1.Services;
|
using WorkerService1.Services;
|
||||||
|
|
||||||
namespace WorkerService1;
|
namespace WorkerService1;
|
||||||
@ -8,21 +7,17 @@ namespace WorkerService1;
|
|||||||
public class Worker : BackgroundService
|
public class Worker : BackgroundService
|
||||||
{
|
{
|
||||||
private readonly ILogger<Worker> _logger;
|
private readonly ILogger<Worker> _logger;
|
||||||
private readonly SpiderServices _spiderServices;
|
|
||||||
private readonly IServiceProvider _serviceProvider;
|
|
||||||
|
|
||||||
public Worker(ILogger<Worker> logger, IServiceProvider serviceProvider, SpiderServices spiderServices)
|
public Worker(ILogger<Worker> logger)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_serviceProvider = serviceProvider;
|
|
||||||
_spiderServices = spiderServices;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
while (!stoppingToken.IsCancellationRequested)
|
while (!stoppingToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
using var scope = _serviceProvider.CreateScope();
|
using var scope = StaticServiceProvider.Current.CreateScope();
|
||||||
var settingServices = scope.ServiceProvider.GetRequiredService<SettingServices>();
|
var settingServices = scope.ServiceProvider.GetRequiredService<SettingServices>();
|
||||||
var options = settingServices.GetClientOptions();
|
var options = settingServices.GetClientOptions();
|
||||||
if (_logger.IsEnabled(LogLevel.Information))
|
if (_logger.IsEnabled(LogLevel.Information))
|
||||||
@ -46,12 +41,13 @@ public class Worker : BackgroundService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Handle()
|
private static async Task Handle()
|
||||||
{
|
{
|
||||||
|
var _spiderServices = StaticServiceProvider.Current.GetRequiredService<SpiderServices>();
|
||||||
var listRes = await _spiderServices.GetTaskList(1);
|
var listRes = await _spiderServices.GetTaskList(1);
|
||||||
if (listRes.IsSuccess)
|
if (listRes.IsSuccess)
|
||||||
{
|
{
|
||||||
var needDispose = listRes.Result?.records.Where(x => x.disposalStatus == 1);
|
var needDispose = listRes.Result?.records.Where(x => x.disposalStatus == 1).ToList();
|
||||||
//轮询列表,看有没有符合状态的进行处理
|
//轮询列表,看有没有符合状态的进行处理
|
||||||
if (needDispose?.Any() ?? false)
|
if (needDispose?.Any() ?? false)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"DefaultConnection": "Host=101.35.48.186;Port=15432;Database=AutoDispathingWork;Username=postgres;Password=sl52788542;"
|
||||||
|
},
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Information",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user