Ejemplo n.º 1
0
        public async Task <ApiResult <object> > ReportAsync(AdminLogDto dto)
        {
            var result = await _adminLogService.ReportAsync(dto);

            return(new ApiResult <object>()
            {
                Code = result.Result ? (int)ApiResultCode.Success : (int)ApiResultCode.UnknownError,
                Data = null,
                Message = result.Result ? "成功" : result.Message
            });
        }
Ejemplo n.º 2
0
        public async Task Write(AdminLogDto log)
        {
            try
            {
                var logModel = ModelConvertUtil <AdminLogDto, AdminLogInfo> .ModelCopy(log);

                await Task.Run(() => logRepository.InsertAsync(logModel));
            }
            catch (Exception ex)
            {
                logger.Error(typeof(ActionLog), "AOP记录", ex);
            }
        }
Ejemplo n.º 3
0
        public async Task <ServiceInvokeResult <bool> > ReportAsync(AdminLogDto dto)
        {
            var operationIdCorrect = await _operationIdConfigRepository.QueryAsQueryable(a => a.AppId == dto.AppId && a.OperationId == dto.OperationId).AnyAsync();

            if (!operationIdCorrect)
            {
                return(PrintInvokeResult(false, "应用ID与操作ID不匹配"));
            }

            var aesHelper            = new AesHelper();
            var encryptBeforeContent = aesHelper.Encrypt(dto.BeforeContent);
            var encryptAfterContent  = aesHelper.Encrypt(dto.AfterContent);

            //实例化领域模型
            var administrator = new Administrator(dto.AdminId, dto.AdminName);
            var adminLog      = new AdminLog(dto.AppId, encryptBeforeContent, encryptAfterContent, dto.LinkId,
                                             dto.OperationId, dto.OperationIP, dto.OperationRemark, dto.CreateUnixTime, administrator);

            //验证模型
            var validationResult = new AdminLogReportValidation().Validate(adminLog);

            if (!validationResult.IsValid)
            {
                await _bus.RaiseEvent(new DomainNotification(nameof(AdminLogService), JsonConvert.SerializeObject(validationResult.Errors)));
            }

            //提交至仓储持久化
            var addResult = await _adminLogRepository.Add(adminLog);

            if (addResult <= 0)
            {
                return(PrintInvokeResult(false, "日志入库失败"));
            }

            return(PrintInvokeResult(true, "上报完成"));
        }
Ejemplo n.º 4
0
        private AdminLogDto CreateLog(AspectContext aspectContext)
        {
            var log = new AdminLogDto()
            {
                Title   = Title,
                Content = aspectContext.ServiceMethod.Name
            };

            object      factory = aspectContext.ServiceProvider.GetService(typeof(IHttpContextAccessor));
            HttpContext context = ((IHttpContextAccessor)factory).HttpContext;
            var         claims  = context.User.Claims.ToList();

            if (claims != null && claims.Count > 0)
            {
                log.AdminID = Convert.ToInt16(claims.Find(c => c.Type == ClaimTypes.Sid).Value);
            }
            log.IP = context.Connection.RemoteIpAddress.ToString();

            var paramString = "* [已加密]";

            if (aspectContext.Parameters.Length == 0)
            {
                paramString = "无参";
            }
            else if (!EncryptionParam)
            {
                var timeConverter = new IsoDateTimeConverter {
                    DateTimeFormat = "yyyy-MM-dd HH:mm:ss"
                };
                paramString = Newtonsoft.Json.JsonConvert.SerializeObject(aspectContext.Parameters, Newtonsoft.Json.Formatting.Indented, timeConverter);
            }

            log.Content    = string.Format("请求路由:{0}      请求服务:{1}      请求参数:{2}", context.Request.Path, aspectContext.ServiceMethod.Name, paramString);
            log.CreateTime = DateTime.Now;
            return(log);
        }
Ejemplo n.º 5
0
 public static AdminLogEntity EntityMap(this AdminLogDto model)
 {
     return(Mapper.Map <AdminLogEntity>(model));
 }