Example #1
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, "上报完成"));
        }