From 727e49f72e128aa19155ac31c51d8dfb0a58a23e Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 28 Oct 2024 16:28:31 +0800 Subject: [PATCH] feat middleHealthz --- .../BusinessPlaceShiftTinyResponse.cs | 2 +- .../SysData/Controller/MiddlesController.cs | 29 +++++++++++++++++++ .../SysData/Request/HealthCheckRequest.cs | 9 ++++++ .../Request/MiddleHealthCheckRequest.cs | 6 ++++ .../SysData/Services/IHealthCheckService.cs | 6 ++++ .../Services/Implements/HealthCheckService.cs | 10 +++++++ .../Services/Implements/SysDataService.cs | 25 ++++++++++++++-- 7 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs create mode 100644 Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs create mode 100644 Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs create mode 100644 Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs create mode 100644 Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs diff --git a/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs b/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs index 359754c7..40217d10 100644 --- a/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs +++ b/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs @@ -3,7 +3,7 @@ public class BusinessPlaceShiftTinyResponse { /// - /// 无用字段,暂时不删除 //todo + /// 无用字段,暂时不删除 /// public string CustomCode { get; set; } diff --git a/Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs b/Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs new file mode 100644 index 00000000..c3485490 --- /dev/null +++ b/Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs @@ -0,0 +1,29 @@ +using Dlhis.Basic.Common.SysData.Request; +using Dlhis.Basic.Common.SysData.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.Common.SysData.Controller; + +[Authorize] +[Route("api/[controller]")] +[ApiController] +public class MiddlesController : ControllerBase +{ + private readonly IHealthCheckService _healthCheckService; + + public MiddlesController(IHealthCheckService healthCheckService) + { + _healthCheckService = healthCheckService; + } + + /// + /// 健康检查 + /// + /// + [HttpPost("healthz")] + public async Task CheckAsync(MiddleHealthCheckRequest request) + { + await _healthCheckService.CheckAsync(request.Factories); + } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs b/Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs new file mode 100644 index 00000000..4e530661 --- /dev/null +++ b/Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Common.SysData.Request; + +public class HealthCheckRequest +{ + [MinLength(1)] + public List Factories { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs b/Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs new file mode 100644 index 00000000..c08b33c0 --- /dev/null +++ b/Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs @@ -0,0 +1,6 @@ +namespace Dlhis.Basic.Common.SysData.Request; + +public class MiddleHealthCheckRequest +{ + public List Factories { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs b/Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs new file mode 100644 index 00000000..489f8e5b --- /dev/null +++ b/Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs @@ -0,0 +1,6 @@ +namespace Dlhis.Basic.Common.SysData.Services; + +public interface IHealthCheckService : IScopeDependency +{ + Task CheckAsync(List factories); +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs b/Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs new file mode 100644 index 00000000..90203b63 --- /dev/null +++ b/Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs @@ -0,0 +1,10 @@ +namespace Dlhis.Basic.Common.SysData.Services.Implements; + +public class HealthCheckService : IHealthCheckService +{ + public async Task CheckAsync(List factories) + { + //todo 状态显示 + await Task.CompletedTask; + } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs b/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs index 3b35e692..f413900e 100644 --- a/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs +++ b/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs @@ -1,5 +1,7 @@ using System.Reflection; using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Canteen.Entities; +using Dlhis.Entity.Canteen.Enums; using Kurisu.AspNetCore; using Kurisu.AspNetCore.DataAccess.Entity; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; @@ -34,17 +36,34 @@ public class SysDataService : ISysDataService switch (tableName) { case "Gainfo": - //sql = $"select * from Gainfo where factory = '{factory}'"; return await _dbContext.Queryable().Where(x => x.Factory == factory).Select(x => (object)x).ToListAsync(); case "GainfoMeal": { + var factories = await GetWalletFactoriesAsync(factory); + var codes = await _dbContext.Queryable().Where(x => x.Factory == factory).Select(x => x.Code).ToListAsync(); + // return await _dbContext.Queryable() + // .Where(x => codes.Contains(x.UserCode) && factories.Contains(x.TenantId)) + // .Where(x => x.Source != BalanceRecordSourceEnumType.EMealVoucher) + // .GroupBy(x => x.UserCode) + // .Select(x => new + // { + // x.UserCode, + // Balance = SqlFunc.AggregateSum(x.Amount) + // }) + // .ToListAsync(); return null; - //todo 余额 - ///return await _dbContext.Queryable().Where(x => codes.Contains(x.UserCode)).Select(x => (object)x).ToListAsync(); } default: return await _dbContext.Client.SqlQueryable(sql).ToListAsync(); } } + + public async Task> GetWalletFactoriesAsync(string factory) + { + var wallets = await _dbContext.Queryable().ToListAsync(); + var code = wallets.First(x => x.Factory == factory).Code; + + return wallets.Where(x => x.Code == code).Select(x => x.Factory).ToList(); + } } \ No newline at end of file