diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 2247700bf..0effb6e44 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -113,6 +113,12 @@ + + + Always + + + diff --git a/IRaCIS.Core.API/Resources/GeoLite2-City.mmdb b/IRaCIS.Core.API/Resources/GeoLite2-City.mmdb new file mode 100644 index 000000000..50635e325 Binary files /dev/null and b/IRaCIS.Core.API/Resources/GeoLite2-City.mmdb differ diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index 3ab94f632..47020190d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -50,6 +50,7 @@ + diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 6a53400fd..49176cf72 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -16,6 +16,7 @@ using IRaCIS.Core.Infrastructure.Encryption; using IRaCIS.Core.Infrastructure.NewtonsoftJson; using MassTransit; using MassTransit.Mediator; +using MaxMind.GeoIP2; using Medallion.Threading; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Builder; @@ -95,6 +96,46 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Ok(); } + [AllowAnonymous] + public async Task NewIP([FromServices] IRepository _userLogRepository) + { + var path = Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources, "GeoLite2-City.mmdb"); + + + var ipList = _userLogRepository.Select(t => t.IP).Distinct().ToList(); + + foreach (var ip in ipList) + { + try + { + using (var reader = new DatabaseReader(path)) + { + + var city = reader.City(ip); + + Console.WriteLine(city.Country.IsoCode); // 'US' 'CN' + Console.WriteLine(city.Country.Name); // 'United States' 'China' + //Console.WriteLine(city.Country.Names["zh-CN"]); // '美国' + Console.WriteLine(city.MostSpecificSubdivision.Name); // 'Minnesota' 'Hubei' + Console.WriteLine(city.City.Name); // 'Minneapolis' 'WUHan' + + + Console.WriteLine("----------------"); + } + } + catch (Exception ex) + { + + Console.WriteLine($"{ip}在数据库无法解析 {ex.Message}"); // 44.9733 + } + + } + + + + + return ResponseOutput.Ok(); + } /// /// IQC 回退到影像上传 @@ -182,11 +223,11 @@ namespace IRaCIS.Core.Application.Service /// /// [AllowAnonymous] - public async Task BackImageResize(Guid trialSiteId ,Guid subjectId/* , [FromServices] IRepository<>*/) + public async Task BackImageResize(Guid trialSiteId, Guid subjectId/* , [FromServices] IRepository<>*/) { ///${params.trialId}/ Image /${params.subjectId}/${params.subjectVisitId}/${ dicomInfo.studyUid}/${ v.seriesUid}.jpg - var dealSeriesList = await _dicomSeriesRepository.Where(t => t.DicomStudy.Subject.TrialSiteId == trialSiteId && t.SubjectId== subjectId).Select(t => new { t.Id, t.SubjectId, t.TrialId, t.SubjectVisitId, t.StudyInstanceUid, t.SeriesInstanceUid, t.ImageResizePath, t.UpdateUserId, FirstInstancePath = t.DicomInstanceList.First().Path }).ToListAsync(); + var dealSeriesList = await _dicomSeriesRepository.Where(t => t.DicomStudy.Subject.TrialSiteId == trialSiteId && t.SubjectId == subjectId).Select(t => new { t.Id, t.SubjectId, t.TrialId, t.SubjectVisitId, t.StudyInstanceUid, t.SeriesInstanceUid, t.ImageResizePath, t.UpdateUserId, FirstInstancePath = t.DicomInstanceList.First().Path }).ToListAsync(); //下载到本地 string tempFolderPath = Path.Combine(Directory.GetCurrentDirectory(), $"DownloadTemp_{NewId.NextGuid()}"); @@ -218,7 +259,7 @@ namespace IRaCIS.Core.Application.Service // 保存缩略图为 JPEG image.Save(resizePath, new JpegEncoder()); } - + var ossFolder = $"{dealSeries.TrialId}/Image/{dealSeries.SubjectId}/{dealSeries.SubjectVisitId}/{dealSeries.StudyInstanceUid}"; var relativePath = await _IOSSService.UploadToOSSAsync(resizePath, ossFolder, false);