This commit is contained in:
xiaolipro 2025-07-12 17:03:21 +08:00
parent 9b160e1d6f
commit 4a7c50727e
492 changed files with 2939 additions and 2554 deletions

View File

@ -1,13 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/projectSettingsUpdater.xml
/.idea.SJZY.Track.Api.iml
/modules.xml
/contentModel.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="xiaolipro.cn" value="https://baget.xiaolipro.cn/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>

View File

@ -2,21 +2,21 @@
# Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SJZY.Track.Api", "src\SJZY.Track.Api\SJZY.Track.Api.csproj", "{5F1A9619-A5A3-4F5F-AEFF-880707A251E1}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrackCenter.Api", "src\TrackCenter.Api\TrackCenter.Api.csproj", "{5F1A9619-A5A3-4F5F-AEFF-880707A251E1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SJZY.Track.Application", "src\SJZY.Track.Application\SJZY.Track.Application.csproj", "{E052AEB3-A86F-431E-A685-769D3E59CB8A}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrackCenter.Application", "src\TrackCenter.Application\TrackCenter.Application.csproj", "{E052AEB3-A86F-431E-A685-769D3E59CB8A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DAC93270-5A25-40E5-B851-E7CA398DBC31}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{0E2537C3-6EF3-4085-9BD2-CF923E53F82A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SJZY.Track.Repository", "src\SJZY.Track.Repository\SJZY.Track.Repository.csproj", "{D9CF5706-1972-414F-821E-AA32C13B8570}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrackCenter.Repository", "src\TrackCenter.Repository\TrackCenter.Repository.csproj", "{D9CF5706-1972-414F-821E-AA32C13B8570}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SJZY.Track.Application.Contract", "src\SJZY.Track.Application.Contract\SJZY.Track.Application.Contract.csproj", "{390A44FB-0DB5-4B66-86AB-7712DC3030F5}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrackCenter.Application.Contract", "src\TrackCenter.Application.Contract\TrackCenter.Application.Contract.csproj", "{390A44FB-0DB5-4B66-86AB-7712DC3030F5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SJZY.Track.Test", "test\SJZY.Track.Test\SJZY.Track.Test.csproj", "{3A53539C-4A85-4E5D-A071-7B4B193AB0E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SJZY.Track.Domain", "src\SJZY.Track.Domain\SJZY.Track.Domain.csproj", "{073EB297-E752-49AC-BED8-B4AEBAB518F6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrackCenter.Domain", "src\TrackCenter.Domain\TrackCenter.Domain.csproj", "{073EB297-E752-49AC-BED8-B4AEBAB518F6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution items", "solution items", "{086C7812-46F9-49FD-B490-A769E2C0729E}"
ProjectSection(SolutionItems) = preProject
@ -24,6 +24,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution items", "solution
NuGet.Config = NuGet.Config
.gitignore = .gitignore
.editorconfig = .editorconfig
global.json = global.json
EndProjectSection
EndProject
Global

View File

@ -0,0 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=dels/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=SJZY/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

5
global.json Normal file
View File

@ -0,0 +1,5 @@
{
"sdk": {
"version": "8.0.303"
}
}

View File

@ -1,27 +0,0 @@
using SJZY.Expand.ABP.Core.Configuration;
using SJZY.Expand.ABP.Core.Configuration.AutoRegistOptions;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Track.Api;
try
{
var builder = WebApplication.CreateBuilder(args);
builder
.AddConfigurationContainer()
.AddOptionsFromConfiguration()
.UseSerilogDefault()
.AddOTel() //注入OTel
.Host.AddAppSettingsSecretsJson()
.UseAutofac();
await builder.AddApplicationAsync<SjzyTrackApiModule>();
var app = builder.Build();
await app.InitializeApplicationAsync();
app.UseOTel(); //启动WebApi的请求管道配置
await app.RunAsync();
}
catch (Exception ex)
{
Console.WriteLine($"项目启动失败,异常信息:{ex}");
}

View File

@ -1,128 +0,0 @@
using System.Reflection;
using System.Runtime.InteropServices;
using FluentValidation.AspNetCore;
using Hangfire;
using Microsoft.AspNetCore.Mvc;
using SJZY.Expand.ABP.Core;
using SJZY.Expand.ABP.Core.Cors;
using SJZY.Expand.ABP.Core.Filter;
using SJZY.Expand.ABP.Core.JsonSerialization;
using SJZY.Expand.ABP.Core.Localization;
using SJZY.Expand.ABP.Core.Prometheus;
using SJZY.Expand.ABP.Core.Redis;
using SJZY.Expand.ABP.Core.Swagger;
using SJZY.Track.Application;
using SJZY.Track.Application.Hangfire;
using SJZY.Track.Application.HostServices;
using SJZY.Track.Repository;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.Auditing;
using Volo.Abp.Autofac;
using Volo.Abp.Json;
using Volo.Abp.Modularity;
[assembly: HostingStartup(typeof(HostingStartup))]
namespace SJZY.Track.Api;
[DependsOn(
typeof(AbpAutofacModule),
typeof(SjzyAbpCodeModule),
typeof(AbpAspNetCoreMvcModule),
typeof(AbpAspNetCoreSerilogModule),
typeof(SjzyTrackApplicationModule),
typeof(SjzyTrackRepositoryModule)
)]
public class SjzyTrackApiModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var environment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
context.Services.AddSwagger();
//过滤器相关配置
context.Services.AddMvc(options =>
{
options.Filters.AddService<GlobalExceptionFilter>();
options.Filters.AddService<RequestLogFilter>();
options.Filters.AddService<UnifyResultFilter>();
}).AddNewtonsoftJson();
context.Services.AddFluentValidationAutoValidation().AddFluentValidationClientsideAdapters();
//Json格式化全局处理
context.Services.Configure<MvcNewtonsoftJsonOptions>(options =>
{
options.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.
CamelCasePropertyNamesContractResolver(); //.DefaultContractResolver();
options.SerializerSettings.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
options.SerializerSettings.Converters.Add(new LongJsonConverter());
});
Configure<AbpJsonOptions>(options => options.OutputDateTimeFormat = "yyyy-MM-dd HH:mm:ss");
Configure<AbpAuditingOptions>(options => { options.IsEnabled = false; });
context.Services.AddRedis();
context.Services.AddHostedService<RedisHostService>();
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
var configuration = context.GetConfiguration();
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseRequestCulture();
app.UseRouting();
app.UseCorsPolicy();
app.UseConfiguredEndpoints();
app.UseAbpSwaggerUI(env);
app.UseAbpSerilogEnrichers();
app.UsePrometheus();
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
DisplayStorageConnectionString = false,
IgnoreAntiforgeryToken = true,
AppPath = configuration["Swagger:JsonUrlPrefix"]! + "/",
PrefixPath = System.Diagnostics.Debugger.IsAttached
? ""
: configuration["Swagger:JsonUrlPrefix"]!,
DashboardTitle = "轨迹预警任务",
Authorization = new[] { new AnonymousHangfireAuthorizationFilter() }
});
#region 启动提示
// var isLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
// var arch = RuntimeInformation.ProcessArchitecture;
// var os = isLinux ? "linux-" : "win-";
// var rid = os + arch;
// Console.WriteLine("\r\nrid:" + rid);
// // 获取当前程序集路径
// var assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// var path = Path.Combine(assemblyPath, "runtimes", rid, "native", isLinux ? "librdkafka.so" : "librdkafka.dll");
// Console.WriteLine("libPath:"+path);
// var loadSuccess = Confluent.Kafka.Library.Load(path);
// Console.WriteLine($"KafkaLib 加载{loadSuccess}");
// Console.WriteLine("Kafka.LibVersion:" + Confluent.Kafka.Library.VersionString);
Console.WriteLine($@"
+-------------------------------------------------------+
| |
| |
| 轨迹中心启动成功 |
| {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} |
| |
| |
+-------------------------------------------------------+
");
#endregion
}
}

View File

@ -1,100 +0,0 @@
{
"Environment": "Dev",
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft.AspNetCore": "Debug"
}
},
"ConnectionStrings": {
"DefaultConnection": "server=mysql-dev.default.svc.cluster.local;Database=sjzy_track;Uid=sjzy_dev_user;Pwd=818f83e5;AllowLoadLocalInfile=true;SslMode=None;Charset=utf8mb4;"
},
"CAP": {
"FailedRetryCount": 0,
"FailedRetryInterval": 60,
"PrefetchCount": 1,
"ConsumerThreadCount": 2,
"UseDispatchingPerGroup": true,
"SucceedMessageExpiredAfter": 21600
},
"Redis": {
"Host": "redis-dev.default.svc.cluster.local:6379",
"Password": "gaVEHR3V7qiY",
"MaxPoolSize": 1000,
"Database": 6,
"Prefix": "",
"IdleTimeout": 1000
},
"CorsPolicy": [
""
],
"Swagger": {
"IsEnable": true,
"ServiceUrl": "/trackApi",
"JsonUrlPrefix": "/trackApi",
//转发目录前缀,部署服务器时需要配置 /kingmall
"ScanPrefix": [
"SJZY"
]
//全局扫描程序集或xml文件时只加载以 SJZY 开头的内容
},
"RabbitMQ": {
"UserName": "sjzy",
"Password": "jhUbkzDT7VVi",
"HostName": "rabbitmq-dev.default.svc.cluster.local",
"Port": 5672
},
"Notice": {
"Webhook": "https://open.feishu.cn/open-apis/bot/v2/hook/fbe92f24-7f9f-41ea-a93a-63d855a03bc0",
"Title": "😭 轨迹中台开发环境异常"
},
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"System": "Debug",
"Microsoft": "Debug",
"Microsoft.Hosting.Lifetime": "Debug",
"Microsoft.EntityFrameworkCore": "Debug"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console",
"Args": {
//"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, SystemConsoleTheme.Literate",
"outputTemplate": "{NewLine}[{Timestamp:yyyy-MM-dd HH:mm:ss fff} {Level:u3}] {Message:lj}"
}
}
]
},
"OSS": {
"AccessKeyId": "LTAI5t81UbwY8rkqLkURCEys",
"AccessKeySecret": "hFfNFTJSyVA1EqBSuXwBaSdm3RGoFL",
"Endpoint": "http://oss-cn-shenzhen.aliyuncs.com/",
"BucketName": "cams3",
"ReturnHttpsUrl": true
},
"ElasticSearch": {
"NodeUrls": [ "http://elasticsearch-dev.default.svc.cluster.local:9200" ],
"LoginName": "elastic",
"Password": "afyTgmVb8jq6",
"Base64PassPassword": "Basic ZWxhc3RpYzphZnlUZ21WYjhqcTY="
},
"RemoteServices": {
"InterfaceForward": {
"BaseUrl": "http://interfaceapi-test.default.svc.cluster.local:5041/",
"AppKey": "BSI2302001",
"AppSecret": "ArJYL14XZneXpqvpq80wyi3h2hT918AX"
},
"UserCenter": {
"BaseUrl": "http://userapi-dev.default.svc.cluster.local:5020/"
}
},
"Language": {
"SystemName": "Track",
"Index": 6,
"KeyPrefix": "language"
}
}

View File

@ -1,96 +0,0 @@
{
"Environment": "Dev",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "server=192.168.80.81;Database=sjzy_package_channel;Uid=root;Pwd=10c1fb814e7c1552;"
},
"Redis": {
"ConnectionString": "192.168.80.57:6379,abortConnect=false",
"PassWord": "",
"DefaultDatabaseIndex": 6,
"Prefix": ""
},
"Consul": {
"ServiceName": "PackageChannel",
"ServiceIP": "192.168.80.55",
"ServicePort": 5034,
"ServiceHealthCheck": "http://192.168.80.55:5034/HealthCheck",
"ConsulAddress": "http://192.168.80.56:8500"
},
"CorsPolicy": [
"http://172.16.216.101:18006"
],
"Swagger": {
"IsEnable": true,
"ServiceUrl": "",
"JsonUrlPrefix": "", //转发目录前缀,部署服务器时需要配置 /kingmall
"ScanPrefix": [ "SJZY" ] //全局扫描程序集或xml文件时只加载以 SJZY 开头的内容
},
"OSS": {
"AccessKeyId": "LTAI5tJWyx1kgQfk221QFknu",
"AccessKeySecret": "0AvP3vyBdwT1pwvLXeqeJ448US8QL8",
"Endpoint": "http://oss-cn-shenzhen.aliyuncs.com/",
"BucketName": "cams3"
},
"RabbitMQ": {
"UserName": "sjzy",
"Password": "sjzyadmin",
"HostName": "192.168.80.56",
"Port": 5672
},
"Custome": {
"Setting1": 12,
"Setting2": 22
},
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"System": "Warning",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.EntityFrameworkCore": "Information"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console",
"Args": {
//"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, SystemConsoleTheme.Literate",
"outputTemplate": "{NewLine}[{Timestamp:yyyy-MM-dd HH:mm:ss fff} {Level:u3}] {Message:lj}"
}
},
{
"Name": "File",
"Args": {
"path": "logs/.log",
"rollingInterval": "Day",
"outputTemplate": "{NewLine}[{Timestamp:yyyy-MM-dd HH:mm:ss,fff} {Level:u3}] {Message:lj}"
}
},
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "http://192.168.80.56:9200",
"indexFormat": "log_channel_{0:yyyy.MM.dd}",
"autoRegisterTemplate": true,
"autoRegisterTemplateVersion": "ESv7",
"connectionGlobalHeaders": "Authorization=Basic ZWxhc3RpYzpzanp5YWRtaW4=;"
}
}
]
},
"QiChaCha": {
"ApiUrl": "http://api.qichacha.com",
"Key": "3f07b46db1104426a7beec2a70b67334",
"SecretKey": "0DEDE94A0E14C5A060CF65F87A96FDDC",
"ValidDays": 180
}
}

View File

@ -1,91 +0,0 @@
{
"Environment": "Dev",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "server=mysql-test.default.svc.cluster.local;Database=sjzy_track;Uid=sjzy_test_user;Pwd=848c1c31;AllowLoadLocalInfile=true;SslMode=None;Charset=utf8mb4;",
"canalView": "server=mysql-test.default.svc.cluster.local;Database=sjzy_track;Uid=sjzy_test_user;Pwd=848c1c31;AllowLoadLocalInfile=true;SslMode=None;Charset=utf8mb4;"
},
"Redis": {
"ConnectionString": "192.168.80.58:6379,abortConnect=false",
"PassWord": "",
"DefaultDatabaseIndex": 8,
"Prefix": ""
},
"Consul": {
"ServiceName": "Package.Setting",
"ServiceIP": "192.168.80.57",
"ServicePort": 5047,
"ServiceHealthCheck": "http://192.168.80.57:5047/HealthCheck",
"ConsulAddress": "http://192.168.80.58:8500"
},
"CorsPolicy": [
""
],
"Swagger": {
"IsEnable": true,
"ServiceUrl": "",
"JsonUrlPrefix": "", //转发目录前缀,部署服务器时需要配置 /kingmall
"ScanPrefix": [ "SJZY" ] //全局扫描程序集或xml文件时只加载以 SJZY 开头的内容
},
"RabbitMQ": {
"UserName": "sjzy",
"Password": "sjzyadmin",
"HostName": "192.168.80.58",
"Port": 5672
},
"Custome": {
"Setting1": 12,
"Setting2": 22
},
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"System": "Warning",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.EntityFrameworkCore": "Information"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console",
"Args": {
//"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, SystemConsoleTheme.Literate",
"outputTemplate": "{NewLine}[{Timestamp:yyyy-MM-dd HH:mm:ss fff} {Level:u3}] {Message:lj}"
}
},
{
"Name": "File",
"Args": {
"path": "logs/.log",
"rollingInterval": "Day",
"outputTemplate": "{NewLine}[{Timestamp:yyyy-MM-dd HH:mm:ss,fff} {Level:u3}] {Message:lj}"
}
},
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "http://192.168.80.97:9200",
"indexFormat": "log_package_setting_{0:yyyy.MM.dd}",
"autoRegisterTemplate": true,
"autoRegisterTemplateVersion": "ESv7",
"connectionGlobalHeaders": "Authorization=Basic ZWxhc3RpYzpzanp5YWRtaW4=;"
}
}
]
},
"OSS": {
"AccessKeyId": "LTAI5tJWyx1kgQfk221QFknu",
"AccessKeySecret": "0AvP3vyBdwT1pwvLXeqeJ448US8QL8",
"Endpoint": "http://oss-cn-shenzhen.aliyuncs.com/",
"BucketName": "cams3",
"ReturnHttpsUrl": true
}
}

View File

@ -1,22 +0,0 @@
{
"Configuration": {
"UseLocalConfiguration": false,
"ConfiguraFileName": "appsettings.Development.json",
"Apollo": {
"AppId": "SJZY.Track.Configuration",
"Env": "DEV",
"Namespace": "test",
"MetaServer": "https://apollo.test.shijizhongyun.com",
"ConfigServer": [
"https://apollo.test.shijizhongyun.com"
]
}
},
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://*:5056"
}
}
}
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
public class TrackPushRecordItem
{
}

View File

@ -1,8 +0,0 @@
using SJZY.Track.Application.Contract.Dtos.Forewarning;
namespace SJZY.Track.Application.Contract.Events;
public class ClearRulCacheEvent
{
public List<RuleAreaBaseInfo> Items { get; set; }
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Application.Contract.Services;
public interface IKpiAreaCacheService
{
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Application.Contract.Services;
public interface ITrackFlagService
{
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Application.Contract.Services;
public interface ITrackStatusService
{
}

View File

@ -1,46 +0,0 @@
using SJZY.Expand.ABP.Core;
using SJZY.Track.Domain.Extensions;
using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Caching;
/// <summary>
/// 系统id中文名称字典缓存
/// </summary>
public class SystemCnNameDictCache : BasicCacheForPeriodicRefresh<int, string>, ISingletonDependency
{
private readonly IVSystemQueries _vSystemQueries;
public SystemCnNameDictCache(IVSystemQueries vSystemQueries) : base(RedisHelper.Client)
{
_vSystemQueries = vSystemQueries;
}
protected override string BuildRedisKey(int key) => $"{GlobalConst.TrackDataDictKeyPrefix}:SystemCnName:{key}";
protected override TimeSpan RedisExpire => TimeSpan.FromSeconds(-1); // 设置缓存不过期,指定id系统被删除时仍能兜底提供系统中文名
protected override TimeSpan LocalExpire => TimeSpan.FromMinutes(10); // 本地缓存10分钟过期后在次请求会刷新数据
protected override TimeSpan MissingKeySetNullRedisExpire => TimeSpan.FromMinutes(1); // 缓存不存在时设置redisNull
protected override async ValueTask<string?> LoadAsync(int key)
{
if (key == 0) return null;
return await _vSystemQueries.GetFirstAsync(x => x.Id == key, x => x.CnName);
}
protected override async ValueTask<Dictionary<int, string>> LoadAsync(HashSet<int> keys)
{
if (keys.Count == 0) return Empty<int, string>.Dict;
var result = await _vSystemQueries.GetListAsync(x => keys.Contains(x.Id), x => new
{
x.Id,
x.CnName
});
return result.Count == 0
? Empty<int, string>.Dict
: result.ToDictionary(x => x.Id, y => y.CnName);
}
}

View File

@ -1,81 +0,0 @@
using System.Diagnostics;
using BSI.Stack.Rabbit;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using RabbitMQ.Client;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Rabbit;
/// <summary>
/// 支持发布确认模式
/// </summary>
public class RabbitClientBusExt : RabbitClientBus, ISingletonDependency
{
public RabbitClientBusExt(IServiceProvider sp, ILogger<RabbitClient> logger)
: base(sp, logger, sp.GetRequiredService<IOptionsMonitor<RabbitOptions>>().CurrentValue)
{
}
public void PublishByConfirmSelect(
string exchange,
string routingKey,
byte[] data,
Action<IBasicProperties>? options = null
)
{
using var activity = RabbitInstrumentation.ActivitySource.StartActivity("/" + exchange + "/" + routingKey);
activity?.SetTag("kind", "publish");
var key = exchange + ":" + routingKey;
Lazy<IModel> orAdd = Channels.GetOrAdd(key, (Func<string, Lazy<IModel>>) (_ => new Lazy<IModel>(CreateModel)));
var basicProperties1 = orAdd.Value.CreateBasicProperties();
// 配置属性
if (options != null)
options(basicProperties1);
var model = orAdd.Value;
// 启用发布确认
model.ConfirmSelect();
var readOnlyMemory = (ReadOnlyMemory<byte>) data;
model.BasicPublish(exchange, routingKey, basicProperties1, readOnlyMemory);
model.WaitForConfirmsOrDie();
}
public void PublishByConfirmSelect(
string exchange,
string routingKey,
IEnumerable<byte[]> datas,
Action<IBasicProperties>? options = null
)
{
using var activity = RabbitInstrumentation.ActivitySource.StartActivity("/" + exchange + "/" + routingKey);
activity?.SetTag("kind", "publish");
var key = exchange + ":" + routingKey;
Lazy<IModel> orAdd = Channels.GetOrAdd(key, (Func<string, Lazy<IModel>>) (_ => new Lazy<IModel>(CreateModel)));
var basicProperties1 = orAdd.Value.CreateBasicProperties();
// 配置属性
if (options != null)
options(basicProperties1);
var model = orAdd.Value;
// 启用发布确认
model.ConfirmSelect();
foreach (var data in datas)
{
var readOnlyMemory = (ReadOnlyMemory<byte>) data;
model.BasicPublish(exchange, routingKey, basicProperties1, readOnlyMemory);
}
model.WaitForConfirmsOrDie();
}
private IConnection GetConnection()
{
var key = Connections.OrderBy((Func<KeyValuePair<IConnection, int>, int>) (q => q.Value)).Select((Func<KeyValuePair<IConnection, int>, IConnection>) (q => q.Key)).FirstOrDefault();
Connections.AddOrUpdate(key, (Func<IConnection, int>) (_ => 1), (Func<IConnection, int, int>) ((_, v) => v + 1));
return key;
}
private IModel CreateModel() => GetConnection().CreateModel();
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Domain.Dtos.TrackFlags;
namespace SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
public interface ITrackFlagRepository : IBasicRepository<TrackFlagEntity>
{
Task<GetTrackFlagDetailVO?> GetDetailAsync(int id);
Task<UnifyPageResultDto<GetTrackFlagListVO>> GetPageTrackFlag(GetPageTrackFlagVO input);
}

View File

@ -1,10 +0,0 @@
// Global using directives
global using System;
global using System.Collections.Generic;
global using System.Linq.Expressions;
global using System.Threading.Tasks;
global using SJZY.Expand.ABP.Core.Common.Dto;
global using SJZY.Expand.ABP.Core.SqlSugar.Entitys;
global using SJZY.Track.Domain.SeedWork;
global using SqlSugar;

View File

@ -1,62 +0,0 @@
namespace SJZY.Track.Domain.Queries;
public interface IBasicQuery<T> where T : IEntity
{
/// <summary>
/// top 1
/// </summary>
/// <param name="whereExpression"></param>
/// <returns></returns>
Task<T?> GetFirstAsync(Expression<Func<T, bool>> whereExpression);
/// <summary>
/// top 1 select fields
/// </summary>
/// <param name="whereExpression"></param>
/// <param name="resultExpression"></param>
/// <typeparam name="TResult"></typeparam>
/// <returns></returns>
Task<TResult?> GetFirstAsync<TResult>(Expression<Func<T, bool>> whereExpression,
Expression<Func<T, TResult>> resultExpression);
/// <summary>
/// get list
/// </summary>
/// <param name="whereExpression"></param>
/// <returns></returns>
Task<List<T>> GetListAsync(Expression<Func<T, bool>> whereExpression);
/// <summary>
/// get list select fields
/// </summary>
/// <param name="whereExpression"></param>
/// <param name="resultExpression"></param>
/// <typeparam name="TResult"></typeparam>
/// <returns></returns>
Task<List<TResult>> GetListAsync<TResult>(Expression<Func<T, bool>> whereExpression,
Expression<Func<T, TResult>> resultExpression);
/// <summary>
/// get list select fields, return arrary
/// </summary>
/// <param name="whereExpression"></param>
/// <param name="resultExpression"></param>
/// <typeparam name="TResult"></typeparam>
/// <returns></returns>
Task<TResult[]> GetArrayAsync<TResult>(Expression<Func<T, bool>> whereExpression,
Expression<Func<T, TResult>> resultExpression);
/// <summary>
/// count
/// </summary>
/// <param name="exp"></param>
/// <returns></returns>
Task<int> CountAsync(Expression<Func<T, bool>> exp);
/// <summary>
/// exists
/// </summary>
/// <param name="exp"></param>
/// <returns></returns>
Task<bool> IsAnyAsync(Expression<Func<T, bool>> exp);
}

View File

@ -1,75 +0,0 @@
using SJZY.Track.Domain.Dtos.Order;
using SJZY.Track.Domain.Dtos.TrackContents;
using SJZY.Track.Domain.Dtos.TrackPull;
namespace SJZY.Track.Domain.Queries;
/// <summary>
/// 提供接口专用查询
/// </summary>
public interface IProvideQueries
{
/// <summary>
/// 根据子系统内容映射,得到映射后的轨迹code
/// </summary>
/// <param name="upSubSystemId"></param>
/// <param name="subSystemId"></param>
/// <param name="trackCodes"></param>
/// <returns></returns>
Task<List<string>> MapTrackCodesAsync(int upSubSystemId, int subSystemId, params string[] trackCodes);
/// <summary>
/// 获取子系统内容Code映射
/// </summary>
/// <param name="upSubSystemId"></param>
/// <param name="subSystemId"></param>
/// <param name="trackCodes"></param>
/// <returns></returns>
Task<List<TrackCodeMapVO>> GetTrackCodeMapsAsync(int upSubSystemId, int subSystemId, params string[] trackCodes);
/// <summary>
/// 根据订单模板找对应服务商
/// </summary>
/// <param name="subSystemId"></param>
/// <param name="orderNos"></param>
/// <returns></returns>
Task<List<OrderWithServiceProviderVO>> FindOrderWithServiceProviderAsync(int subSystemId, List<string> orderNos);
/// <summary>
/// 获取服务商下所有单(未完成的)
/// </summary>
/// <param name="serviceProviderCode">服务商代码</param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
Task<List<OrderWithServiceProviderVO>> FindOrderWithServiceProviderAsync(string serviceProviderCode, int pageIndex,
int pageSize = 1000);
/// <summary>
/// 获取轨迹内容
/// </summary>
/// <param name="subSystemId"></param>
/// <param name="trackCode"></param>
/// <returns></returns>
Task<TrackContentVO?> GetTrackContentAsync(int subSystemId, string trackCode);
/// <summary>
/// 获取轨迹内容
/// </summary>
/// <param name="subSystemIds">子系统ids</param>
/// <param name="trackCodes">轨迹代码集合</param>
/// <returns></returns>
Task<List<TrackContentVO>> GetTrackContentsAsync(int[] subSystemIds, string[] trackCodes);
/// <summary>
/// 获取所有拉取配置
/// </summary>
/// <returns></returns>
Task<List<TrackPullConfigVo>> GetAllPullConfigsAsync();
/// <summary>
/// 子系统id换code
/// </summary>
/// <param name="subSystemId"></param>
/// <returns></returns>
Task<string> SubSystemId2CodeAsync(int subSystemId);
}

View File

@ -1,18 +0,0 @@
namespace SJZY.Track.Domain.Queries;
public interface ITimezoneQueries
{
/// <summary>
/// 通过城市英文名称获取时区
/// </summary>
/// <param name="cityEnName"></param>
/// <returns></returns>
Task<string> GetCityTimezone(string cityEnName);
/// <summary>
/// 通过港口三字码获取时区
/// </summary>
/// <param name="airCode"></param>
/// <returns></returns>
Task<string> GetPortTimezone(string airCode);
}

View File

@ -1,7 +0,0 @@
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Domain.Queries;
public interface IVExternalSubjectQueries : IBasicQuery<VExternalSubjectEntity>
{
}

View File

@ -1,7 +0,0 @@
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Domain.Queries;
public interface IVFsUserQueries : IBasicQuery<VFSUserEntity>
{
}

View File

@ -1,7 +0,0 @@
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Domain.Queries;
public interface IVSystemQueries : IBasicQuery<VSystemEntity>
{
}

View File

@ -1,15 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../common.props" />
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SJZY.Expand.ABP.Core" Version="7.8.6"/>
<PackageReference Include="SJZY.Expand.ElasticSearch" Version="7.0.17" />
</ItemGroup>
</Project>

View File

@ -1,7 +0,0 @@
using Volo.Abp.Modularity;
namespace SJZY.Track.Domain;
public class SjzyTrackDomainModule : AbpModule
{
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Domain.SeedWork;
public interface IAggregateRoot : IEntity
{
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Domain.SeedWork;
public interface IEntity
{
}

View File

@ -1,66 +0,0 @@
using SJZY.UserCenter.HttpApi.Services;
#pragma warning disable 1591
namespace SJZY.Track.Repository;
/// <summary>
/// Sqlsugar 上下文对象
/// </summary>
public class DataBaseContext
{
#region 审计属性自动赋值
public static void OnExcutingAction(object oldValue, DataFilterModel entityInfo)
{
//过滤掉 "v_" 开头的表
if (entityInfo.EntityColumnInfo.DbTableName.StartsWith("v_", StringComparison.OrdinalIgnoreCase))
throw new Exception("非法的操作,不允许编辑映射表");
//新增
if (entityInfo.OperationType == DataFilterType.InsertByObject)
{
var time = DateTime.Now;
var userId = CurrentUserRequest.CurrentUser.UserId;
if (entityInfo.PropertyName == nameof(ICreateBaicEntity.CreateTime))
entityInfo.SetValue(time);
else if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateTime))
entityInfo.SetValue(time);
else if (entityInfo.PropertyName == nameof(ICreateBaicEntity.CreateUserId))
{
entityInfo.SetValue(userId);
}
else if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateUserId))
{
entityInfo.SetValue(userId);
}
}
//修改
else if (entityInfo.OperationType == DataFilterType.UpdateByObject)
{
if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateTime))
entityInfo.SetValue(DateTime.Now);
else if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateUserId))
{
entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId);
}
//删除
else if (entityInfo.PropertyName == nameof(IDeleteBasicEntity.IsDeleted))
{
var currentType = entityInfo.EntityValue.GetType();
bool.TryParse(
currentType.GetProperty(entityInfo.PropertyName)?.GetValue(entityInfo.EntityValue)?.ToString(),
out bool isdelete);
if (isdelete)
{
//currentType.GetProperty(nameof(IDeleteBasicEntity.DeleteUserId))?.SetValue(entityInfo.EntityValue, 5);
currentType.GetProperty(nameof(IDeleteBasicEntity.DeleteTime))
?.SetValue(entityInfo.EntityValue, DateTime.Now);
}
}
}
}
#endregion 审计属性自动赋值
}

View File

@ -1,6 +0,0 @@
global using SJZY.Expand.ABP.Core;
global using SJZY.Expand.ABP.Core.Common.Dto;
global using SJZY.Expand.ABP.Core.SqlSugar;
global using SJZY.Expand.ABP.Core.SqlSugar.Entitys;
global using SqlSugar;
global using Volo.Abp.DependencyInjection;

View File

@ -1,39 +0,0 @@
using System.Linq.Expressions;
using SJZY.Track.Domain.Queries;
using SJZY.Track.Domain.SeedWork;
namespace SJZY.Track.Repository.Queries;
/// <summary>
/// basic queries
/// </summary>
/// <typeparam name="T"></typeparam>
public class BasicQuery<T> : SimpleClient<T>, IBasicQuery<T> where T : class, IEntity, new()
{
/// <inheritdoc />
public BasicQuery()
{
Context = SqlsugarScopeBasic.GetContextSafely("default");
}
/// <inheritdoc />
public async Task<TResult?> GetFirstAsync<TResult>(Expression<Func<T, bool>> whereExpression,
Expression<Func<T, TResult>> resultExpression)
{
return await Context.Queryable<T>().Where(whereExpression).Select(resultExpression).FirstAsync();
}
/// <inheritdoc />
public async Task<List<TResult>> GetListAsync<TResult>(Expression<Func<T, bool>> whereExpression,
Expression<Func<T, TResult>> resultExpression)
{
return await Context.Queryable<T>().Where(whereExpression).Select(resultExpression).ToListAsync();
}
/// <inheritdoc />
public async Task<TResult[]> GetArrayAsync<TResult>(Expression<Func<T, bool>> whereExpression,
Expression<Func<T, TResult>> resultExpression)
{
return await Context.Queryable<T>().Where(whereExpression).Select(resultExpression).ToArrayAsync();
}
}

View File

@ -1,8 +0,0 @@
using SJZY.Track.Domain.Queries;
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Repository.Queries;
public class VExternalSubjectQueries : BasicQuery<VExternalSubjectEntity>, IVExternalSubjectQueries, ITransientDependency
{
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Domain.Queries;
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Repository.Queries;
public class VFsUserQueries: BasicQuery<VFSUserEntity>, IVFsUserQueries, ITransientDependency
{
}

View File

@ -1,8 +0,0 @@
using SJZY.Track.Domain.Queries;
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Repository.Queries;
public class VSystemQueries : BasicQuery<VSystemEntity>, IVSystemQueries, ITransientDependency
{
}

View File

@ -1,5 +0,0 @@
namespace SJZY.Track.Repository.Repositories;
public class KpiAreaInfoRepository
{
}

View File

@ -1,20 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../common.props" />
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<NoWarn>CS8613</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SJZY.LoggerCenter.HttpApi" Version="7.0.5" />
<PackageReference Include="SJZY.OTel.Extension" Version="1.1.3" />
<PackageReference Include="Volo.Abp.Autofac" Version="7.0.2" />
<PackageReference Include="SJZY.UserCenter.HttpApi" Version="3.1.8.17-alpha" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SJZY.Track.Domain\SJZY.Track.Domain.csproj" />
</ItemGroup>
</Project>

View File

@ -1,61 +0,0 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using SJZY.Expand.ABP.Core.SqlSugar.Options;
using SJZY.Expand.ElasticSearch;
using SJZY.Track.Domain;
using SJZY.Track.Domain.Queries;
using SJZY.Track.Repository.Queries;
using SJZY.Track.Repository.Repositories;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
namespace SJZY.Track.Repository;
/// <summary>
/// 仓储模块
/// </summary>
[DependsOn(typeof(AbpAutofacModule))]
[DependsOn(typeof(SjzyTrackDomainModule))]
public class SjzyTrackRepositoryModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
context.Services.AddSqlsugar(options =>
{
options.AddRange(new List<SqlsugarOptions>
{
new()
{
ConnectionString = configuration["ConnectionStrings:DefaultConnection"]!,
DbType = DbType.MySql,
IsAutoCloseConnection = true,
ConfigId = "default",
OpenSqlLog = true
}
}
);
}, DataBaseContext.OnExcutingAction, "SJZY.Track.Domain");
context.Services.AddElasticSearch(options =>
{
if (System.Diagnostics.Debugger.IsAttached)
{
options.ShowLogInfo = true;
}
options.NodeUrls = configuration.GetSection("ElasticSearch:NodeUrls").Get<List<string>>()!;
options.LoginName = configuration["ElasticSearch:LoginName"]!;
options.Password = configuration["ElasticSearch:Password"]!;
options.Base64PassPassword = configuration["ElasticSearch:Base64PassPassword"]!;
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddTransient(typeof(IBasicQuery<>), typeof(BasicQuery<>));
context.Services.AddTransient(typeof(IBasicRepository<>), typeof(BasicRepository<>));
}
}

View File

@ -0,0 +1,28 @@
using Serilog;
using TrackCenter.Api;
var builder = WebApplication.CreateSlimBuilder(args);
var configuration = builder.Configuration;
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
try
{
builder.WebHost.UseUrls(builder.Configuration.GetSection("App:Urls").Get<string[]>() ?? []);
builder.Host.UseAutofac().UseSerilog();
builder.Services.AddApplication<TrackCenterApiModule>();
var app = builder.Build();
app.InitializeApplication();
app.Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "G");
}
finally
{
Log.CloseAndFlush();
}

View File

@ -3,7 +3,7 @@
<Import Project="../../common.props"/>
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8</TargetFramework>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>..\..</DockerfileContext>
@ -14,12 +14,15 @@
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.2"/>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.17.0"/>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0"/>
<PackageReference Include="Volo.Abp.Autofac" Version="7.0.2"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SJZY.Track.Application\SJZY.Track.Application.csproj"/>
<ProjectReference Include="..\SJZY.Track.Repository\SJZY.Track.Repository.csproj"/>
<ProjectReference Include="..\TrackCenter.Application\TrackCenter.Application.csproj" />
<ProjectReference Include="..\TrackCenter.Repository\TrackCenter.Repository.csproj" />
<PackageReference Include="Fake.Autofac" Version="8.0.0-preview11" />
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="10.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<None Update="kafkalib\**\*" CopyToPublishDirectory="Always" CopyToOutputDirectory="Always" />

View File

@ -0,0 +1,78 @@
using Fake.AspNetCore;
using Fake.AspNetCore.Auditing;
using Fake.AspNetCore.Mvc.Conventions;
using Fake.Autofac;
using Fake.Modularity;
using FluentValidation.AspNetCore;
using Hangfire;
using TrackCenter.Application;
using TrackCenter.Application.Hangfire;
using TrackCenter.Repository;
namespace TrackCenter.Api;
[DependsOn(typeof(FakeAutofacModule))]
[DependsOn(typeof(TrackCenterApplicationModule))]
[DependsOn(typeof(TrackCenterRepositoryModule))]
public class TrackCenterApiModule : FakeModule
{
private const string DefaultCorsPolicyName = "default";
public override void ConfigureServices(ServiceConfigurationContext context)
{
var services = context.Services;
var configuration = context.Services.GetConfiguration();
services.Configure<ApplicationService2ControllerOptions>(options =>
{
options.ScanApplicationServices<TrackCenterApplicationModule>();
});
services.AddFakeExceptionFilter()
.AddFakeValidationActionFilter()
.AddFakeAspNetCoreAuditing()
.AddFakeUnitOfWorkActionFilter();
services.AddFakeSwaggerGen();
context.Services.AddFluentValidationAutoValidation().AddFluentValidationClientsideAdapters();
services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicyName, builder =>
{
builder.WithOrigins(configuration.GetSection("App:CorsOrigins").Get<string[]>() ?? [])
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
}
public override void ConfigureApplication(ApplicationConfigureContext context)
{
var app = context.GetWebApplication();
var configuration = context.GetConfiguration();
app.MapControllers();
// Configure the HTTP request pipeline.
app.UseFakeSwagger();
app.UseRouting();
app.UseCors(DefaultCorsPolicyName);
// todo: 缺乏配置
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
DisplayStorageConnectionString = false,
IgnoreAntiforgeryToken = true,
AppPath = configuration["Swagger:JsonUrlPrefix"]! + "/",
PrefixPath = System.Diagnostics.Debugger.IsAttached
? ""
: configuration["Swagger:JsonUrlPrefix"]!,
DashboardTitle = "轨迹预警任务",
Authorization = [new AnonymousHangfireAuthorizationFilter()]
});
}
}

View File

@ -0,0 +1,21 @@
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft.AspNetCore": "Information"
}
},
"Enrich": [
"FromLogContext",
"WithMachineName",
"WithProcessId",
"WithThreadId"
],
"WriteTo": [
{
"Name": "Console"
}
]
}
}

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.Forewarning;
namespace TrackCenter.Application.Contract.Dtos.Forewarning;
public class AreaCacheEntry
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.Forewarning;
namespace TrackCenter.Application.Contract.Dtos.Forewarning;
public class RuleAreaBaseInfo
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class BatchDeleteTrackByEsIdInput
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class BatchDeleteTrackInput : OrderNosInfo
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class BatchUpsertTrackInput : OrderNosInfo
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class DeleteOrderInput : OrderNoInfo
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class FileItemDto
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class GetDetailTimelineInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class GetDetailTimelineOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class TrackOrderDetailDto
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class GetPageTrackOrderInput : PageInfoInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class GetPageTrackTemplateListInput : PageInfoInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
/// <summary>
/// 支持模板,传入时区补正,按轨迹发生时间升序降序

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class GetTrackOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class GetTrackTemplateListInput
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class LinkOrderInput
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
/// <summary>
/// 子系统id+订单类型+订单号 确定唯一订单

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class PushTrackInput : OrderNosInfo
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
/// <summary>
/// 查询轨迹推送映射关系入参

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class RefreshTrackInput
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
/// <summary>
/// 轨迹标识符,用于唯一标识一个轨迹

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class TrackTemplateOutput
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class UpdateOrderInput : OrderNoInfo
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class UpdateOrderStatusInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class UpdateOrderPullConfigsInput : OrderNosInfo
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class UpsertOrderInput : UpdateOrderInput
{

View File

@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace TrackCenter.Application.Contract.Dtos.ProvideServices;
public class UpsertTrackInput : OrderNoInfo
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class EditTrackContentInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class EditTrackContentMapInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetAvailableContentInput
{

View File

@ -1,6 +1,6 @@
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using TrackCenter.Application.Contract.Dtos.ProvideServices;
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetAvailableContentOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetContentDetailInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetContentDetailOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetPageTrackContentInput : PageInfoInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetTrackContentByCodeInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public class GetTrackContentByCodeOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackContents;
namespace TrackCenter.Application.Contract.Dtos.TrackContents;
public sealed class TrackContentOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackFlags;
namespace TrackCenter.Application.Contract.Dtos.TrackFlags;
public class EditTrackFlagInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackFlags;
namespace TrackCenter.Application.Contract.Dtos.TrackFlags;
public class GetTrackFlagListDto
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackNode;
namespace TrackCenter.Application.Contract.Dtos.TrackNode;
public class EditTrackNodeInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
namespace TrackCenter.Application.Contract.Dtos.TrackOrder;
public class GetTrackCounterOutput
{

View File

@ -0,0 +1,5 @@
namespace TrackCenter.Application.Contract.Dtos.TrackOrder;
public class TrackPushRecordItem
{
}

View File

@ -1,7 +1,7 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
namespace TrackCenter.Application.Contract.Dtos.TrackOrder;
public class TrackPushRecordOutput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class EditTrackPullConfigInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class EditTrackPullContentInput
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class TrackPullContentConfigDto
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class TrackPullParamConfigDto
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class TrackPullParamsWithContentDto
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class TrackPullPayload
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class TrackRefreshAttach
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPull;
namespace TrackCenter.Application.Contract.Dtos.TrackPull;
public class TrackRefreshContext
{

View File

@ -1,4 +1,4 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackPush;
namespace TrackCenter.Application.Contract.Dtos.TrackPush;
public class EditTrackPushConfigInput
{

Some files were not shown because too many files have changed in this diff Show More