fix 调整tenantId为空引起上传失败
This commit is contained in:
@@ -11,7 +11,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Kurisu.AspNetCore" Version="0.9.37" />
|
<PackageReference Include="Kurisu.AspNetCore" Version="0.9.38" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
|||||||
{
|
{
|
||||||
private readonly IServiceProvider _serviceProvider;
|
private readonly IServiceProvider _serviceProvider;
|
||||||
private readonly ILogger<BalanceRecordUploadBackgroundService> _logger;
|
private readonly ILogger<BalanceRecordUploadBackgroundService> _logger;
|
||||||
private readonly IWebHostEnvironment _environment;
|
|
||||||
private readonly ISettingService _settingService;
|
private readonly ISettingService _settingService;
|
||||||
private readonly ICanteenApi _canteenApi;
|
private readonly ICanteenApi _canteenApi;
|
||||||
|
|
||||||
@@ -18,14 +17,12 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
|||||||
|
|
||||||
public BalanceRecordUploadBackgroundService(IServiceProvider serviceProvider,
|
public BalanceRecordUploadBackgroundService(IServiceProvider serviceProvider,
|
||||||
ILogger<BalanceRecordUploadBackgroundService> logger,
|
ILogger<BalanceRecordUploadBackgroundService> logger,
|
||||||
IWebHostEnvironment environment,
|
|
||||||
ISettingService settingService,
|
ISettingService settingService,
|
||||||
ICanteenApi canteenApi,
|
ICanteenApi canteenApi,
|
||||||
IHealthCheckService healthCheckService)
|
IHealthCheckService healthCheckService)
|
||||||
{
|
{
|
||||||
_serviceProvider = serviceProvider;
|
_serviceProvider = serviceProvider;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_environment = environment;
|
|
||||||
_settingService = settingService;
|
_settingService = settingService;
|
||||||
_canteenApi = canteenApi;
|
_canteenApi = canteenApi;
|
||||||
_healthCheckService = healthCheckService;
|
_healthCheckService = healthCheckService;
|
||||||
@@ -33,7 +30,7 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
|||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
while (!stoppingToken.IsCancellationRequested && _environment.IsProduction())
|
while (!stoppingToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
if (!_healthCheckService.GetIsOffline())
|
if (!_healthCheckService.GetIsOffline())
|
||||||
{
|
{
|
||||||
@@ -48,7 +45,10 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var balanceRecords = await db.Queryable<LocalBalanceRecordEntity>().Where(x => x.TenantId == factory).Where(x => !x.IsSync).ToListAsync(stoppingToken);
|
var balanceRecords = await db.Queryable<LocalBalanceRecordEntity>()
|
||||||
|
.Where(x => x.TenantId == factory)
|
||||||
|
.Where(x => !x.IsSync).ToListAsync(stoppingToken);
|
||||||
|
|
||||||
if (balanceRecords.Any())
|
if (balanceRecords.Any())
|
||||||
{
|
{
|
||||||
_logger.LogInformation("上传离线订单");
|
_logger.LogInformation("上传离线订单");
|
||||||
@@ -87,9 +87,13 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
|||||||
balanceRecords = await db.Queryable<LocalBalanceRecordEntity>().Where(x => x.TenantId == factory).Where(x => !x.IsSync).ToListAsync(stoppingToken);
|
balanceRecords = await db.Queryable<LocalBalanceRecordEntity>().Where(x => x.TenantId == factory).Where(x => !x.IsSync).ToListAsync(stoppingToken);
|
||||||
if (!balanceRecords.Any())
|
if (!balanceRecords.Any())
|
||||||
{
|
{
|
||||||
_logger.LogInformation("上传离线订单完成");
|
_logger.LogInformation("{factory}上传离线订单完成", factory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.LogInformation("{factory}无离线订单", factory);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -125,7 +129,7 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.Delay(60 * 1000, stoppingToken);
|
await Task.Delay(30 * 1000, stoppingToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,132 +1,13 @@
|
|||||||
using Kurisu.AspNetCore.Authentication.Abstractions;
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
|
||||||
using Kurisu.AspNetCore.DataAccess.Entity;
|
|
||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Attributes;
|
|
||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
|
|
||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Options;
|
|
||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
|
||||||
using Kurisu.AspNetCore.Startup;
|
using Kurisu.AspNetCore.Startup;
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
namespace Dlhis.Middle.Packs;
|
namespace Dlhis.Middle.Packs;
|
||||||
|
|
||||||
public class SqlSugarPack : BaseAppPack
|
public class SqlSugarPack : BaseAppPack
|
||||||
{
|
{
|
||||||
private const string _infoTemplate = "ExecuteCommand[{ms}] Timeout[{timeout}] \r\n {sql}";
|
|
||||||
|
|
||||||
public override void ConfigureServices(IServiceCollection services)
|
public override void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
services.AddSqlSugar(DbType.Sqlite);
|
services.AddSqlSugar(DbType.Sqlite);
|
||||||
services.Replace(ServiceDescriptor.Scoped(typeof(ISqlSugarClient), sp =>
|
|
||||||
{
|
|
||||||
var options = sp.GetService<IOptions<SqlSugarOptions>>().Value;
|
|
||||||
var logger = sp.GetService<ILogger<SqlSugarClient>>();
|
|
||||||
var currentUser = sp.GetService<ICurrentUser>();
|
|
||||||
var sugarOptions = sp.GetService<ISqlSugarOptionsService>();
|
|
||||||
|
|
||||||
var configs = new List<ConnectionConfig>
|
|
||||||
{
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
ConfigId = "db-main",
|
|
||||||
|
|
||||||
ConnectionString = options.DefaultConnectionString,
|
|
||||||
DbType = DbType.Sqlite,
|
|
||||||
InitKeyType = InitKeyType.Attribute,
|
|
||||||
IsAutoCloseConnection = true,
|
|
||||||
|
|
||||||
MoreSettings = new ConnMoreSettings
|
|
||||||
{
|
|
||||||
DisableNvarchar = true,
|
|
||||||
},
|
|
||||||
ConfigureExternalServices = new ConfigureExternalServices
|
|
||||||
{
|
|
||||||
EntityService = (c, p) =>
|
|
||||||
{
|
|
||||||
if (!p.IsPrimarykey && c.PropertyType.IsGenericType && c.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)
|
|
||||||
|| (!p.IsPrimarykey && p.PropertyInfo.PropertyType == typeof(string)))
|
|
||||||
{
|
|
||||||
p.IsNullable = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ISqlSugarClient db = new SqlSugarClient(configs);
|
|
||||||
|
|
||||||
db.Ado.CommandTimeOut = options.Timeout;
|
|
||||||
|
|
||||||
db.Aop.OnLogExecuted = (sql, parameters) =>
|
|
||||||
{
|
|
||||||
var ms = db.Ado.SqlExecutionTime.Milliseconds;
|
|
||||||
|
|
||||||
//警告慢sql
|
|
||||||
if (ms >= options.SlowSqlTime * 1000)
|
|
||||||
logger.LogWarning(message: _infoTemplate, ms, options.Timeout, sql);
|
|
||||||
|
|
||||||
if (options.EnableSqlLog)
|
|
||||||
{
|
|
||||||
sql = UtilMethods.GetSqlString(DbType.MySql, sql, parameters);
|
|
||||||
logger.LogInformation(message: _infoTemplate, ms, options.Timeout, sql);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//软删除
|
|
||||||
db.QueryFilter.AddTableFilter<ISoftDeleted>(x => x.IsDeleted == false);
|
|
||||||
|
|
||||||
|
|
||||||
//增删改
|
|
||||||
db.Aop.DataExecuting = (oldValue, model) =>
|
|
||||||
{
|
|
||||||
if (sugarOptions.IgnoreTenant == false //启用租户
|
|
||||||
&& currentUser != null //用户信息存在
|
|
||||||
&& model.PropertyName == nameof(ITenantId.TenantId) //当前为租户字段
|
|
||||||
&& typeof(ITenantId).IsAssignableFrom(model.EntityValue.GetType())) //继承ITenantId
|
|
||||||
{
|
|
||||||
var tenant = currentUser.GetStringTenantId();
|
|
||||||
model.SetValue(tenant);
|
|
||||||
}
|
|
||||||
|
|
||||||
//处理人员和时间字段
|
|
||||||
switch (model.OperationType)
|
|
||||||
{
|
|
||||||
case DataFilterType.InsertByObject:
|
|
||||||
{
|
|
||||||
if (model.IsAnyAttribute<InsertDateTimeGenerationAttribute>())
|
|
||||||
{
|
|
||||||
model.SetValue(DateTime.Now);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentUser != null && model.IsAnyAttribute<InsertUserGenerationAttribute>())
|
|
||||||
{
|
|
||||||
if ((int)model.EntityColumnInfo.PropertyInfo.GetValue(model.EntityValue) == 0)
|
|
||||||
{
|
|
||||||
model.SetValue(currentUser.GetStringSubjectId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case DataFilterType.UpdateByObject:
|
|
||||||
{
|
|
||||||
if (model.IsAnyAttribute<UpdateDateTimeGenerationAttribute>())
|
|
||||||
{
|
|
||||||
model.SetValue(DateTime.Now);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentUser != null && model.IsAnyAttribute<UpdateUserGenerationAttribute>())
|
|
||||||
{
|
|
||||||
model.SetValue(currentUser.GetStringSubjectId());
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return db;
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,6 @@ using Dlhis.Middle.BackgroundServices;
|
|||||||
using Dlhis.Middle.Entities;
|
using Dlhis.Middle.Entities;
|
||||||
using Dlhis.Middle.Services;
|
using Dlhis.Middle.Services;
|
||||||
using Kurisu.AspNetCore;
|
using Kurisu.AspNetCore;
|
||||||
using Kurisu.AspNetCore.Authentication.Extensions;
|
|
||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||||
using Kurisu.AspNetCore.Startup;
|
using Kurisu.AspNetCore.Startup;
|
||||||
using Microsoft.IdentityModel.Logging;
|
using Microsoft.IdentityModel.Logging;
|
||||||
@@ -33,7 +32,6 @@ public class Startup : DefaultStartup
|
|||||||
|
|
||||||
services.AddRemoteCall(App.ActiveTypes);
|
services.AddRemoteCall(App.ActiveTypes);
|
||||||
services.AddMemoryCache();
|
services.AddMemoryCache();
|
||||||
services.AddUserInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|||||||
Reference in New Issue
Block a user