OperateLogController.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Azure.Cosmos.Table;
  4. using Microsoft.Extensions.Options;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using TEAMModelOS.Models;
  11. using TEAMModelOS.SDK.DI;
  12. using TEAMModelOS.SDK.Models.Cosmos.BI;
  13. using System.Text;
  14. namespace TEAMModeBI.Controllers.OperateRecord
  15. {
  16. [Route("operatelog")]
  17. [ApiController]
  18. public class OperateLogController : ControllerBase
  19. {
  20. private readonly AzureStorageFactory _azureStorage;
  21. private readonly DingDing _dingDing;
  22. private readonly Option _option;
  23. public OperateLogController(AzureStorageFactory azureStorage, DingDing dingDing, IOptionsSnapshot<Option> option)
  24. {
  25. _azureStorage = azureStorage;
  26. _dingDing = dingDing;
  27. _option = option?.Value;
  28. }
  29. /// <summary>
  30. /// 查询BI操作记录
  31. /// </summary>
  32. /// <param name="jsonElement"></param>
  33. /// <returns></returns>
  34. [HttpPost("get-operatelogbydate")]
  35. public async Task<IActionResult> GetOperateLogByDate(JsonElement jsonElement)
  36. {
  37. try
  38. {
  39. jsonElement.TryGetProperty("startDate", out JsonElement startDate);
  40. jsonElement.TryGetProperty("endDate", out JsonElement endDate);
  41. List<OperateLog> operateLogs = null;
  42. StringBuilder tableSql = new StringBuilder();
  43. if (!string.IsNullOrEmpty($"{startDate}"))
  44. {
  45. operateLogs = await _azureStorage.QueryWhereString<OperateLog>($"RowKey {QueryComparisons.GreaterThanOrEqual} '{startDate}'");
  46. }
  47. else if (!string.IsNullOrEmpty($"{startDate}") && !string.IsNullOrEmpty($"{endDate}"))
  48. {
  49. operateLogs = await _azureStorage.QueryWhereString<OperateLog>($"RowKey {QueryComparisons.GreaterThanOrEqual} '{startDate}' {TableOperators.And} RowKey {QueryComparisons.LessThanOrEqual} '{endDate}'");
  50. }
  51. else
  52. {
  53. operateLogs = await _azureStorage.QueryWhereString<OperateLog>();
  54. //operateLogs = await _azureStorage.FindListByDict<OperateLog>(dic);
  55. }
  56. return Ok(new { state = 200, operateLogs });
  57. }
  58. catch (Exception ex)
  59. {
  60. await _dingDing.SendBotMsg($"BI,{_option.Location} /operatelog/get-operatelogbydate {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
  61. return BadRequest();
  62. }
  63. }
  64. /// <summary>
  65. /// 删除操作记录
  66. /// </summary>
  67. /// <param name="jsonElement"></param>
  68. /// <returns></returns>
  69. [HttpPost("del-operatelogbydate")]
  70. public async Task<IActionResult> DelOperateLogByDate(JsonElement jsonElement)
  71. {
  72. try
  73. {
  74. if (!jsonElement.TryGetProperty("tmdId", out JsonElement _tmdId)) return BadRequest(); //醍摩豆账户
  75. if (!jsonElement.TryGetProperty("tmdName", out JsonElement _tmdName)) return BadRequest(); //醍摩豆账号名称
  76. jsonElement.TryGetProperty("startDate", out JsonElement startDate);
  77. jsonElement.TryGetProperty("endDate", out JsonElement endDate);
  78. jsonElement.TryGetProperty("rowKey", out JsonElement rowKey);
  79. //操作记录
  80. OperateLog operateLog = new OperateLog();
  81. string blobOrTable = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
  82. operateLog.PartitionKey = "OperateLog-BI";
  83. operateLog.RowKey = blobOrTable;
  84. operateLog.recordID = blobOrTable;
  85. operateLog.platformSource = "BI";
  86. operateLog.tmdId = $"{_tmdId}";
  87. operateLog.tmdName = $"{_tmdName}";
  88. operateLog.visitApi = "/operatelog/del-operatelogbydate";
  89. operateLog.operateTime = DateTime.Now;
  90. //var temp = await _azureStorage.Delete<OperateLog>(partitionKey: "OperateLog-BI", rowKey: $"{startDate}"); //删除单个
  91. StringBuilder operateStr = new StringBuilder($"{_tmdName}【{_tmdId}】账户删除操作记录,");
  92. StringBuilder tableStrWhere = new StringBuilder();
  93. if (!string.IsNullOrEmpty($"{rowKey}"))
  94. {
  95. tableStrWhere.Append($"RowKey {QueryComparisons.Equal} '{rowKey}'");
  96. operateStr.Append($"删除的时间戳:{rowKey}");
  97. }
  98. else
  99. {
  100. tableStrWhere.Append($"RowKey {QueryComparisons.GreaterThanOrEqual} '{startDate}'{TableOperators.And} RowKey {QueryComparisons.LessThanOrEqual} '{endDate}'");
  101. operateStr.Append($"删除的时间戳,开始——结束时间戳:{startDate}-{endDate}");
  102. }
  103. var temp = await _azureStorage.DeleteStringWhere<OperateLog>(rowKey: tableStrWhere.ToString());
  104. operateLog.operateDescribe = operateStr.ToString();
  105. await _azureStorage.Save<OperateLog>(operateLog); //保存操作记录
  106. if (temp.Count > 0)
  107. {
  108. return Ok(new { state = 200 });
  109. }
  110. else return Ok(new { state = 400 });
  111. }
  112. catch (Exception ex)
  113. {
  114. await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/del-operatelogbydate {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
  115. return BadRequest();
  116. }
  117. }
  118. }
  119. }