[성현모] Web.Operation CPMeta 기능 추가

This commit is contained in:
SHM
2025-11-03 14:27:54 +09:00
parent d6c033f149
commit 8198f0b7bb
14 changed files with 384 additions and 5 deletions

View File

@ -41,6 +41,19 @@ namespace WebApi.Project.UniqueKeyApi.Controllers
return Results.Ok(response);
}
[HttpGet]
public async Task<IResult> GetWbmsMeta([FromQuery] DateOnly? startDate, DateOnly? endDate, int? ShardID = 1)
{
Guid guid = Guid.NewGuid();
LogXnet.WriteLine($"[Request][{GetRequestMethod()}:{GetMethodName()}][Client IP:{GetClientIP()}][RequestUrl:{GetRequestUrl()}]::({guid}){Environment.NewLine} key:{startDate}~{endDate}", LogXLabel.CONTROLLER);
Response_GetWbms response = await _cpMetaService.GetWbmsMeta(new Request_GetWbmsMeta() { StartDateTime = startDate, EndDateTime = endDate, ShardID = (int)ShardID }, guid.ToString());
LogXnet.WriteLine($"[Response]::({guid}){Environment.NewLine} {response.ToJson()}", LogXLabel.CONTROLLER);
return Results.Ok(response);
}
[HttpGet]
public async Task<IResult> GetWbmsMetaByProductID([FromQuery] string ProductID, int? ShardID = 1)
{

View File

@ -29,6 +29,12 @@ namespace WebApi.Project.UniqueKeyApi.Models
}
//Wbms Meta Select
public class Request_GetWbmsMeta
{
public DateOnly? StartDateTime { get; set; }
public DateOnly? EndDateTime { get; set; }
public int ShardID { get; set; } = 1;
}
public class Request_GetWbmsMetaByProductID
{
public string ProductID { get; set; } = string.Empty;

View File

@ -107,6 +107,70 @@ namespace WebApi.Project.UniqueKeyApi.Services
return response;
}
public async Task<Response_GetWbms> GetWbmsMeta(Request_GetWbmsMeta request, string guid = "")
{
Response_GetWbms response = new Response_GetWbms();
response.Wbms = new List<tWbms>();
if (request != null)
{
using (var scope = _scopeFactory.CreateScope())
{
int shardId = request.ShardID;
if (shardId <= 0)
shardId = 1;
var provider = scope.ServiceProvider.GetRequiredService<DbContextProvider>();
using (var context = GetCPMetaDBContext(provider, shardId))
{
if (context is not null)
{
try
{
using (var transaction = await context.CreateTransactionAsync(IsolationLevel.ReadUncommitted))
{
var data = await context.tWbms.AsNoTracking().Where(x => ((DateOnly)request.StartDateTime) <= DateOnly.FromDateTime(x.cDateTime) && DateOnly.FromDateTime(x.cDateTime) <= ((DateOnly)request.EndDateTime)).ToListAsync();
await context.CloseTransactionAsync(transaction);
if (data != null)
{
if (response.Wbms is not null)
{
response.Wbms.AddRange(data);
}
response.Result = WebApiResult.Success.ToString();
}
else
{
response.Wbms = null;
response.Result = WebApiResult.Failed.ToString();
response.Message = $"Get CPMeta Failed";
}
}
}
catch (Exception e)
{
response.Wbms = null;
response.Result = WebApiResult.Failed.ToString();
response.Message = $"Get CPMeta Failed";
LogXnet.WriteLine($"GetWbmsMeta By ProductID Transaction Error::{guid}", LogXLabel.Error);
LogXnet.WriteLine(e);
}
}
else //invalid shard id
{
LogXnet.WriteLine($"ShardID Error::{guid}", LogXLabel.Error);
response.Result = WebApiResult.Failed.ToString();
response.Message = "Invalid shard id";
}
}
}
}
return response;
}
public async Task<Response_GetWbms> GetWbmsMeta(Request_GetWbmsMetaByProductID request, string guid = "")
{
Response_GetWbms response = new Response_GetWbms();