EapLogDal.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using DllEapEntity;
  4. using DllEapEntity.Dtos;
  5. using Microsoft.Extensions.Configuration;
  6. using MongoDB.Bson;
  7. using MongoDB.Driver;
  8. using Newtonsoft.Json;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Text.RegularExpressions;
  14. using System.Threading.Tasks;
  15. namespace DllEapDal
  16. {
  17. public class EapLogDal
  18. {
  19. private readonly string dbConnStr = null;
  20. private MongoClient client = null;
  21. public EapLogDal(IConfiguration configuration)
  22. {
  23. dbConnStr = configuration["MongoDb"];
  24. client = new MongoClient(dbConnStr);
  25. }
  26. /// <summary>
  27. /// 获取列表
  28. /// </summary>
  29. /// <param name="start"></param>
  30. /// <param name="end"></param>
  31. /// <param name="filter"></param>
  32. /// <param name="sort"></param>
  33. /// <param name="order"></param>
  34. /// <returns></returns>
  35. public async Task<LayuiModel<EapLogDto>> GetLogList(int skip, int length, string sort, string order,
  36. int? platform, string action, string message, DateTime? startTime, DateTime? endTime,
  37. string opeatorCode)
  38. {
  39. var db = client.GetDatabase("EapLog");
  40. var collection = db.GetCollection<EapLogDto>("Logs");
  41. FilterDefinitionBuilder<EapLogDto> filterDefinitionBuilder =
  42. Builders<EapLogDto>.Filter;
  43. var definitionFilters = new List<FilterDefinition<EapLogDto>>();
  44. if (platform.HasValue)
  45. {
  46. var tmp = filterDefinitionBuilder.Eq("ApplicationId", platform);
  47. definitionFilters.Add(tmp);
  48. }
  49. if (!string.IsNullOrEmpty(action))
  50. {
  51. var tmp = filterDefinitionBuilder.Regex("Action", new BsonRegularExpression(
  52. new Regex(action, RegexOptions.IgnoreCase)));
  53. definitionFilters.Add(tmp);
  54. }
  55. if (!string.IsNullOrEmpty(message))
  56. {
  57. var tmp = filterDefinitionBuilder.Regex("Message", new BsonRegularExpression(
  58. new Regex(message, RegexOptions.IgnoreCase)));
  59. definitionFilters.Add(tmp);
  60. }
  61. if (startTime.HasValue)
  62. {
  63. var tmp = filterDefinitionBuilder.Gt("OperatingTime", (BsonDateTime)startTime);
  64. definitionFilters.Add(tmp);
  65. }
  66. if (endTime.HasValue)
  67. {
  68. var tmp = filterDefinitionBuilder.Lt("OperatingTime", (BsonDateTime)endTime);
  69. definitionFilters.Add(tmp);
  70. }
  71. if (!string.IsNullOrEmpty(opeatorCode))
  72. {
  73. var tmp = filterDefinitionBuilder.Regex("Reccode", new BsonRegularExpression(
  74. new Regex(opeatorCode, RegexOptions.IgnoreCase)));
  75. definitionFilters.Add(tmp);
  76. }
  77. var filter = filterDefinitionBuilder.Where(t => true);
  78. if (definitionFilters.Count > 0)
  79. {
  80. filter = filterDefinitionBuilder.And(definitionFilters);
  81. }
  82. var datas = collection.Find(filter, new FindOptions() { AllowDiskUse = true });
  83. var total = await collection.CountDocumentsAsync(filter);
  84. var sortbuilder = Builders<EapLogDto>.Sort;
  85. var sortExp = sortbuilder.Descending(sort);
  86. if (order == "asc")
  87. {
  88. sortExp = sortbuilder.Ascending(sort);
  89. }
  90. var logs = datas.Sort(sortExp).Skip(skip).Limit(length).ToList();
  91. if (logs != null && logs.Count > 0)
  92. {
  93. logs.ForEach(item =>
  94. {
  95. item.OperatingTime = item.OperatingTime;
  96. });
  97. }
  98. return new LayuiModel<EapLogDto>
  99. {
  100. count = (int)total,
  101. data = logs
  102. };
  103. }
  104. /// <summary>
  105. /// 获取日志详情
  106. /// </summary>
  107. /// <param name="id"></param>
  108. /// <returns></returns>
  109. public async Task<EapLogDto> Get(string id)
  110. {
  111. var db = client.GetDatabase("EapLog");
  112. var collection = db.GetCollection<EapLogDto>("Logs");
  113. FilterDefinitionBuilder<EapLogDto> filterDefinitionBuilder =
  114. Builders<EapLogDto>.Filter;
  115. var idFilter = filterDefinitionBuilder.Eq("_id", BsonObjectId.Create(id));
  116. var data = (await collection.FindAsync(idFilter)).FirstOrDefault();
  117. using (IDatabase mysqlDb = DbFactory.Base("eapslave"))
  118. {
  119. string errorinfo = string.Empty;
  120. var staff = (await mysqlDb.FindListForConditionAsync<Staff>($" and " +
  121. $"a.fcode='{data.Reccode}'", ref errorinfo)).FirstOrDefault();
  122. data.RecName = staff?.FName;
  123. return data;
  124. }
  125. }
  126. }
  127. }