Selaa lähdekoodia

整理代码结构

Li 2 vuotta sitten
vanhempi
commit
7904881b2d

+ 189 - 0
TEAMModelBI/Controllers/BITable/OperateLogController.cs

@@ -0,0 +1,189 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Azure.Cosmos.Table;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.Json;
+using System.Threading.Tasks;
+using TEAMModelOS.Models;
+using TEAMModelOS.SDK.DI;
+using TEAMModelOS.SDK.Models.Cosmos.BI;
+using System.Text;
+using TEAMModelOS.SDK.Models.Table;
+using TEAMModelBI.Filter;
+using TEAMModelBI.Tool.Extension;
+using TEAMModelOS.SDK.Extension;
+using TEAMModelBI.DI.BIAzureStorage;
+using TEAMModelOS.SDK.Context.BI;
+
+namespace TEAMModelBI.Controllers.BITable
+{
+    [Route("operatelog")]
+    [ApiController]
+    public class OperateLogController : ControllerBase
+    {
+        private readonly AzureStorageFactory _azureStorage;
+        private readonly DingDing _dingDing;
+        private readonly Option _option;
+
+        public OperateLogController(AzureStorageFactory azureStorage, DingDing dingDing, IOptionsSnapshot<Option> option)
+        {
+            _azureStorage = azureStorage;
+            _dingDing = dingDing;
+            _option = option?.Value;
+        }
+
+        /// <summary>
+        /// 查询BI操作记录
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [HttpPost("get-record")]
+        public async Task<IActionResult> GetOperateLogRecord(JsonElement jsonElement)
+        {
+            try
+            {
+                jsonElement.TryGetProperty("single", out JsonElement single);
+                jsonElement.TryGetProperty("startDate", out JsonElement startDate);
+                jsonElement.TryGetProperty("endDate", out JsonElement endDate);
+                jsonElement.TryGetProperty("platform", out JsonElement platform);
+                if(!jsonElement.TryGetProperty("reorder", out JsonElement orderby)) return BadRequest();
+                jsonElement.TryGetProperty("site", out JsonElement site);
+
+                List<BIOptLog> operateLogs = new();
+                StringBuilder tableSql = new StringBuilder();
+
+                if (!string.IsNullOrEmpty($"{single}"))
+                    tableSql.Append($" time eq {single}L ");
+                if (!string.IsNullOrEmpty($"{startDate}"))
+                    tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" and time ge {startDate}L " : $"time ge {startDate}L ");
+                if (!string.IsNullOrEmpty($"{endDate}"))
+                    tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" and time le {endDate}L " : $" time le {endDate}L ");
+                if (!string.IsNullOrEmpty($"{platform}"))
+                    tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" and platform eq '{platform}' " : $" platform eq '{platform}' ");
+                
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+                if ($"{site}".Equals(BIConst.Global))
+                    table = _azureStorage.GetCloudTableClient(BIConst.Global).GetTableReference("BIOptLog");
+
+                //lambda 表达式排序
+                operateLogs = await table.QueryWhereString<BIOptLog>(tableSql.ToString());
+                switch (orderby.GetString())
+                {
+                    case "asc":
+                        //lambda  排序 升序
+                        operateLogs.Sort((x, y) => x.time.CompareTo(y.time));
+                        return Ok(new { state = 200, operateLogs });
+                    case "desc":
+                        //lambda 排序 降序
+                        operateLogs.Sort((x, y) => y.time.CompareTo(x.time));
+                        return Ok(new { state = 200, operateLogs });
+                    default:
+                        return Ok(new { state = 200, operateLogs });
+                }
+            }
+            catch (Exception ex)
+            {
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /operatelog/get-record \n  {ex.Message}\n{ex.StackTrace} ",GroupNames.成都开发測試群組);
+                return BadRequest();
+            }
+        }
+
+        /// <summary>
+        /// 删除操作记录
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [AuthToken(Roles = "admin")]
+        [HttpPost("del-record")]
+        public async Task<IActionResult> DelOperateLogRecord(JsonElement jsonElement) 
+        {
+            try
+            {             
+                jsonElement.TryGetProperty("startDate", out JsonElement startDate);
+                jsonElement.TryGetProperty("endDate", out JsonElement endDate);
+                jsonElement.TryGetProperty("rowKey", out JsonElement rowKey);
+                jsonElement.TryGetProperty("site", out JsonElement site);
+
+                var (_tmdId, _tmdName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
+                //var temp = await _azureStorage.Delete<OperateLog>(partitionKey: "OperateLog-BI", rowKey: $"{startDate}");  //删除单个
+                StringBuilder operateStr = new StringBuilder($"{_tmdName}【{_tmdId}】账户删除操作记录,");
+                StringBuilder tableStrWhere = new StringBuilder();
+                if (!string.IsNullOrEmpty($"{rowKey}"))
+                {
+                    tableStrWhere.Append($"RowKey {QueryComparisons.Equal} '{rowKey}'");
+                    operateStr.Append($"删除的时间戳:{rowKey}");
+                }
+                else
+                {
+                    tableStrWhere.Append($"time ge {startDate}L and time le {endDate}L ");
+                    operateStr.Append($"删除的时间戳,开始——结束时间戳:{startDate}-{endDate}");
+                }
+                var tableClient = _azureStorage.GetCloudTableClient();
+                var blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public");
+                if ($"{site}".Equals(BIConst.Global))
+                {
+                    tableClient = _azureStorage.GetCloudTableClient(BIConst.Global);
+                    blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public", BIConst.Global);
+                }
+
+                var table = tableClient.GetTableReference("BIOptLog");
+                var temp = await table.DeleteStringWhere<BIOptLog>(rowKey: tableStrWhere.ToString());
+
+                //保存操作记录
+                //await _azureStorage.SaveBILog("operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
+
+                if (temp.Count > 0)
+                {
+                    return Ok(new { state = 200 });
+                }
+                else return Ok(new { state = 400 });
+            }
+            catch (Exception ex)
+            {
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/del-record \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
+                return BadRequest();
+            }
+        }
+
+        /// <summary>
+        /// 依据醍摩豆账户查询日志记录
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("get-logtmdid")]
+        public async Task<IActionResult> GetLogTmdId(JsonElement jsonElement) 
+        {
+            try
+            {
+                if (!jsonElement.TryGetProperty("tmdId", out JsonElement tmdId)) return BadRequest();
+                jsonElement.TryGetProperty("platform", out JsonElement platform);
+                jsonElement.TryGetProperty("site", out JsonElement site);
+
+                string storageSql = null;
+                if (!string.IsNullOrEmpty($"{platform}"))
+                    storageSql = $"tmdId eq '{tmdId}' and platform eq '{platform}'";
+                else storageSql = $"tmdId eq '{tmdId}'";
+
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+                if ($"{site}".Equals(BIConst.Global))
+                    table = _azureStorage.GetCloudTableClient(BIConst.Global).GetTableReference("BIOptLog");
+                var optLogs = await table.QueryWhereString<BIOptLog>(storageSql);
+
+                return Ok(new { state = 200, optLogs });
+            }
+            catch (Exception ex)
+            {
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/get-logtmdid  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
+                return BadRequest();
+            }
+        }
+
+
+    }
+}

+ 1 - 0
TEAMModelBI/TEAMModelBI.csproj

@@ -27,6 +27,7 @@
 	</ItemGroup>
 
 	<ItemGroup>
+		<Folder Include="Controllers\OperateRecord\" />
 		<Folder Include="wwwroot\" />
 	</ItemGroup>
 	<PropertyGroup>