123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using Cksoft.Data;
- using Cksoft.Data.Repository;
- using DllEapEntity;
- using DllEapEntity.Dtos;
- using Microsoft.Extensions.Configuration;
- using MongoDB.Bson;
- using MongoDB.Driver;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace DllEapDal
- {
- public class EapLogDal
- {
- private readonly string dbConnStr = null;
- private MongoClient client = null;
- public EapLogDal(IConfiguration configuration)
- {
- dbConnStr = configuration["MongoDb"];
- client = new MongoClient(dbConnStr);
- }
- /// <summary>
- /// 获取列表
- /// </summary>
- /// <param name="start"></param>
- /// <param name="end"></param>
- /// <param name="filter"></param>
- /// <param name="sort"></param>
- /// <param name="order"></param>
- /// <returns></returns>
- public async Task<LayuiModel<EapLogDto>> GetLogList(int skip, int length, string sort, string order,
- int? platform, string action, string message, DateTime? startTime, DateTime? endTime,
- string opeatorCode)
- {
- var db = client.GetDatabase("EapLog");
- var collection = db.GetCollection<EapLogDto>("Logs");
- FilterDefinitionBuilder<EapLogDto> filterDefinitionBuilder =
- Builders<EapLogDto>.Filter;
- var definitionFilters = new List<FilterDefinition<EapLogDto>>();
- if (platform.HasValue)
- {
- var tmp = filterDefinitionBuilder.Eq("ApplicationId", platform);
- definitionFilters.Add(tmp);
- }
- if (!string.IsNullOrEmpty(action))
- {
- var tmp = filterDefinitionBuilder.Regex("Action", new BsonRegularExpression(
- new Regex(action, RegexOptions.IgnoreCase)));
- definitionFilters.Add(tmp);
- }
- if (!string.IsNullOrEmpty(message))
- {
- var tmp = filterDefinitionBuilder.Regex("Message", new BsonRegularExpression(
- new Regex(message, RegexOptions.IgnoreCase)));
- definitionFilters.Add(tmp);
- }
- if (startTime.HasValue)
- {
- var tmp = filterDefinitionBuilder.Gt("OperatingTime", (BsonDateTime)startTime);
- definitionFilters.Add(tmp);
- }
- if (endTime.HasValue)
- {
- var tmp = filterDefinitionBuilder.Lt("OperatingTime", (BsonDateTime)endTime);
- definitionFilters.Add(tmp);
- }
- if (!string.IsNullOrEmpty(opeatorCode))
- {
- var tmp = filterDefinitionBuilder.Regex("Reccode", new BsonRegularExpression(
- new Regex(opeatorCode, RegexOptions.IgnoreCase)));
- definitionFilters.Add(tmp);
- }
- var filter = filterDefinitionBuilder.Where(t => true);
- if (definitionFilters.Count > 0)
- {
- filter = filterDefinitionBuilder.And(definitionFilters);
- }
- var datas = collection.Find(filter, new FindOptions() { AllowDiskUse = true });
- var total = await collection.CountDocumentsAsync(filter);
- var sortbuilder = Builders<EapLogDto>.Sort;
- var sortExp = sortbuilder.Descending(sort);
- if (order == "asc")
- {
- sortExp = sortbuilder.Ascending(sort);
- }
- var logs = datas.Sort(sortExp).Skip(skip).Limit(length).ToList();
- if (logs != null && logs.Count > 0)
- {
- logs.ForEach(item =>
- {
- item.OperatingTime = item.OperatingTime;
- });
- }
- return new LayuiModel<EapLogDto>
- {
- count = (int)total,
- data = logs
- };
- }
- /// <summary>
- /// 获取日志详情
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- public async Task<EapLogDto> Get(string id)
- {
- var db = client.GetDatabase("EapLog");
- var collection = db.GetCollection<EapLogDto>("Logs");
- FilterDefinitionBuilder<EapLogDto> filterDefinitionBuilder =
- Builders<EapLogDto>.Filter;
- var idFilter = filterDefinitionBuilder.Eq("_id", BsonObjectId.Create(id));
- var data = (await collection.FindAsync(idFilter)).FirstOrDefault();
- using (IDatabase mysqlDb = DbFactory.Base("eapslave"))
- {
- string errorinfo = string.Empty;
- var staff = (await mysqlDb.FindListForConditionAsync<Staff>($" and " +
- $"a.fcode='{data.Reccode}'", ref errorinfo)).FirstOrDefault();
- data.RecName = staff?.FName;
- return data;
- }
- }
- }
- }
|