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);