From 4733adede5e8993f741e9b94541aafeb6a733859 Mon Sep 17 00:00:00 2001 From: nsnail Date: Fri, 2 Aug 2024 09:26:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20ip=E5=BD=92=E5=B1=9E?= =?UTF-8?q?=E5=9C=B0=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=20(#168)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: tk --- .../Services/RepositoryService.cs | 58 ++++++++++++------- .../Dto/Sys/LoginLog/CreateLoginLogReq.cs | 2 + src/frontend/admin/package.json | 10 ++-- .../admin/src/components/naIp/index.vue | 30 ---------- .../admin/src/components/naSearch/index.vue | 11 ++-- .../src/components/scStatistic/index.vue | 7 ++- .../admin/src/views/sys/dic/index.vue | 1 + .../admin/src/views/sys/log/login/index.vue | 2 +- .../src/views/sys/log/operation/index.vue | 2 +- 9 files changed, 60 insertions(+), 63 deletions(-) delete mode 100644 src/frontend/admin/src/components/naIp/index.vue diff --git a/src/backend/NetAdmin.Application/Services/RepositoryService.cs b/src/backend/NetAdmin.Application/Services/RepositoryService.cs index 62763bae..356dec99 100644 --- a/src/backend/NetAdmin.Application/Services/RepositoryService.cs +++ b/src/backend/NetAdmin.Application/Services/RepositoryService.cs @@ -30,6 +30,18 @@ public abstract class RepositoryService(BasicReposit set => Rpo.DbContextOptions.EnableCascadeSave = value; } + /// + /// 导出实体 + /// + protected async Task ExportAsync( // + Func, ISelectGrouping> selector, QueryReq query, string fileName + , Expression, object>> listExp) + where TQuery : DataAbstraction, new() + { + var list = await selector(query).Take(Numbers.MAX_LIMIT_EXPORT).ToListAsync(listExp).ConfigureAwait(false); + return await GetExportFileStreamAsync(fileName, list).ConfigureAwait(false); + } + /// /// 导出实体 /// @@ -48,26 +60,7 @@ public abstract class RepositoryService(BasicReposit ? await select.ToListAsync().ConfigureAwait(false) : await select.ToListAsync(listExp).ConfigureAwait(false); - var listTyped = list.Adapt>(); - var stream = new MemoryStream(); - var writer = new StreamWriter(stream); - var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); - csv.WriteHeader(); - await csv.NextRecordAsync().ConfigureAwait(false); - - foreach (var item in listTyped) { - csv.WriteRecord(item); - await csv.NextRecordAsync().ConfigureAwait(false); - } - - await csv.FlushAsync().ConfigureAwait(false); - _ = stream.Seek(0, SeekOrigin.Begin); - - App.HttpContext.Response.Headers.ContentDisposition - = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { - FileNameStar = $"{fileName}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" - }.ToString(); - return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + return await GetExportFileStreamAsync(fileName, list).ConfigureAwait(false); } /// @@ -117,6 +110,31 @@ public abstract class RepositoryService(BasicReposit } #endif + private static async Task GetExportFileStreamAsync(string fileName, object list) + { + var listTyped = list.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in listTyped) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{fileName}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + private IUpdate BuildUpdate( // TEntity entity // , IEnumerable includeFields // diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/LoginLog/CreateLoginLogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/LoginLog/CreateLoginLogReq.cs index 31863a90..fee1abca 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/LoginLog/CreateLoginLogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/LoginLog/CreateLoginLogReq.cs @@ -19,6 +19,8 @@ public record CreateLoginLogReq : Sys_LoginLog, IRegister { var body = s.Detail.ResponseBody.ToObject>(); ContextUserToken userToken = null; + + // ReSharper disable once InvertIf if (body.Data?.AccessToken != null) { try { userToken = ContextUserToken.Create(body.Data.AccessToken); diff --git a/src/frontend/admin/package.json b/src/frontend/admin/package.json index fce54ba8..4e0b56e2 100644 --- a/src/frontend/admin/package.json +++ b/src/frontend/admin/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", - "ace-builds": "^1.35.2", + "ace-builds": "^1.35.4", "aieditor": "^1.0.13", "axios": "^1.7.2", "clipboard": "^2.0.11", @@ -18,7 +18,7 @@ "cropperjs": "^1.6.2", "crypto-js": "^4.2.0", "echarts": "^5.5.1", - "element-plus": "^2.7.7", + "element-plus": "^2.7.8", "json-bigint": "^1.0.0", "json5-to-table": "^0.1.8", "markdown-it": "^14.1.0", @@ -28,7 +28,7 @@ "qrcodejs2": "^0.0.2", "sortablejs": "^1.15.2", "vkbeautify": "^0.99.3", - "vue": "^3.4.31", + "vue": "^3.4.34", "vue-i18n": "^9.13.1", "vue-router": "^4.4.0", "vue3-ace-editor": "^2.2.4", @@ -37,12 +37,12 @@ "vuex": "^4.1.0" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.0.5", + "@vitejs/plugin-vue": "^5.1.1", "prettier": "^3.3.3", "prettier-plugin-organize-attributes": "^1.0.0", "sass": "^1.77.8", "terser": "^5.31.3", - "vite": "^5.3.4" + "vite": "^5.3.5" }, "browserslist": [ "> 1%", diff --git a/src/frontend/admin/src/components/naIp/index.vue b/src/frontend/admin/src/components/naIp/index.vue deleted file mode 100644 index ee01e838..00000000 --- a/src/frontend/admin/src/components/naIp/index.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - \ No newline at end of file diff --git a/src/frontend/admin/src/components/naSearch/index.vue b/src/frontend/admin/src/components/naSearch/index.vue index 5f399df5..a75fc0ae 100644 --- a/src/frontend/admin/src/components/naSearch/index.vue +++ b/src/frontend/admin/src/components/naSearch/index.vue @@ -2,7 +2,7 @@