Kaynağa Gözat

调整事务代码

guqiang 1 ay önce
ebeveyn
işleme
4f19824de6

+ 15 - 11
src/Hotline.Application/Exam/Service/Questions/QuestionService.cs

@@ -29,6 +29,7 @@ using Hotline.Application.Exam.Core.Extensions;
 using Hotline.Application.Exam.Constants.Messages;
 using Hotline.Repository.SqlSugar.Exam.Core.Constants;
 using NPOI.SS.Formula.Functions;
+using XF.Domain.Authentications;
 
 namespace Hotline.Application.Exam.Service.Questions
 {
@@ -44,6 +45,7 @@ namespace Hotline.Application.Exam.Service.Questions
         private readonly IDataPermissionFilterBuilder _dataPermissionFilterBuilder;
         private readonly IServiceProvider _serviceProvider;
         private readonly IMapper _mapper;
+        private readonly ISessionContext _sessionContext;           
 
         public QuestionService(IQuestionRepository repository,
             IQuestionTagRepository questionTagRepository,
@@ -52,7 +54,8 @@ namespace Hotline.Application.Exam.Service.Questions
             IQuestionSourcewareRepository questionSourcewareRepository,
             IQuestionKnowladgeRepository questionKnowladgeRepository,
             IDataPermissionFilterBuilder dataPermissionFilterBuilder, IServiceProvider serviceProvider,
-            IMapper mapper
+            IMapper mapper,
+            ISessionContext sessionContext
             ) : base(repository,mapper)
         {
             _repository = repository;
@@ -64,6 +67,7 @@ namespace Hotline.Application.Exam.Service.Questions
             _dataPermissionFilterBuilder = dataPermissionFilterBuilder;
             _serviceProvider = serviceProvider;
             _mapper = mapper;
+            this._sessionContext = sessionContext;
         }
         #endregion
 
@@ -279,7 +283,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             var questionTags = _mapper.Map<List<QuestionTag>>(questionTagDtos);
 
-            questionTags.ToInsert();
+            questionTags.ToInsert(_sessionContext);
 
             await _questionTagRepository.ValidateAddAsync(questionTags, cancellationToken);
 
@@ -308,7 +312,7 @@ namespace Hotline.Application.Exam.Service.Questions
                 sortIndex++;
             });
 
-            questionOptionses.ToInsert();
+            questionOptionses.ToInsert(_sessionContext);
 
             await _questionOptionRepository.ValidateAddAsync(questionOptionses, cancellationToken);
 
@@ -327,7 +331,7 @@ namespace Hotline.Application.Exam.Service.Questions
             if (actionRequest.QuestionType.CheckSelectType()) return null;
             var questionAnswer = _mapper.Map<QuestionAnswer>(actionRequest.QuestionAnswerDto);
 
-            questionAnswer.ToInsert();
+            questionAnswer.ToInsert(_sessionContext);
 
             await _questionAnswerRepository.ValidateAddAsync(questionAnswer, cancellationToken);
 
@@ -343,7 +347,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             var questionSourcewares = _mapper.Map<List<QuestionSourceware>>(questionSourcewareDtos);
                         
-            questionSourcewares.ToInsert();
+            questionSourcewares.ToInsert(_sessionContext);
 
             await _questionSourcewareRepository.ValidateAddAsync(questionSourcewares, cancellationToken);
 
@@ -359,7 +363,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             var questionKnowladges = _mapper.Map<List<QuestionKnowladge>>(questionKnoladgeDtos);
 
-            questionKnowladges.ToInsert();
+            questionKnowladges.ToInsert(_sessionContext);
 
             await _questionKnowladgeRepository.ValidateAddAsync(questionKnowladges, cancellationToken);
 
@@ -393,7 +397,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             //questionSourcewares.ForEach(x => x.QuestionId = actionRequest.Id);
 
-            questionSourcewares.ToUpdate();
+            questionSourcewares.ToUpdate(_sessionContext);
 
             await _questionSourcewareRepository.ValidateUpdateAsync(questionSourcewares, cancellationToken);
 
@@ -429,7 +433,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             //questionKnowladges.ForEach(x => x.QuestionId = actionRequest.Id);
 
-            questionKnowladges.ToUpdate();
+            questionKnowladges.ToUpdate(_sessionContext);
 
             await _questionKnowladgeRepository.ValidateUpdateAsync(questionKnowladges, cancellationToken);
 
@@ -446,7 +450,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             questionAnswer.QuestionId = actionRequest.Id;            
 
-            questionAnswer.ToUpdate();
+            questionAnswer.ToUpdate(_sessionContext);
 
             await _questionAnswerRepository.ValidateUpdateAsync(questionAnswer, cancellationToken);
 
@@ -481,7 +485,7 @@ namespace Hotline.Application.Exam.Service.Questions
 
             //entitys.ForEach(x => x.QuestionId = actionRequest.Id);
 
-            entitys.ToUpdate();
+            entitys.ToUpdate(_sessionContext);
 
             await _questionOptionRepository.ValidateUpdateAsync(entitys, cancellationToken);
 
@@ -511,7 +515,7 @@ namespace Hotline.Application.Exam.Service.Questions
             }
             //questionTags = _mapper.Map<List<UpdateQuestionTagDto>, List<QuestionTag>>(questionTagDtos,questionTags);
 
-            questionTags.ToUpdate();
+            questionTags.ToUpdate(_sessionContext);
 
             await _questionTagRepository.ValidateUpdateAsync(questionTags, cancellationToken);
 

+ 40 - 8
src/Hotline.Repository.SqlSugar/Extensions/ApiServiceExtension.cs

@@ -1,6 +1,7 @@
 using Exam.Infrastructure.Data.Entity;
 using Exam.Infrastructure.Data.Interface;
 using Exam.Infrastructure.Extensions;
+using XF.Domain.Authentications;
 using XF.Domain.Entities;
 using XF.Domain.Repository;
 
@@ -8,7 +9,7 @@ namespace Hotline.Repository.SqlSugar.Extensions
 {
     public static class ApiServiceExtension
     {
-        public static void ToInsert<T>(this T entity) where T : class, IEntity<string>, new()
+        public static void ToInsert<T>(this T entity,ISessionContext sessionContext=null) where T : class, IEntity<string>, new()
         {
             if (entity.Id.IsNullOrEmpty())
             {
@@ -24,20 +25,36 @@ namespace Hotline.Repository.SqlSugar.Extensions
                 if (creationEntity != null)
                 {
                     creationEntity.CreationTime = DateTime.Now;
+                   
                 }
-
             }
+
+            if (sessionContext != null)
+            {
+                var current = entity as Entity;
+                if (current != null)
+                {
+                    current.CreatorId = sessionContext.UserId;
+                    current.CreatorOrgId = sessionContext.OrgId;
+                    current.CreatorOrgName = sessionContext.OrgName;
+                    current.CreatorOrgLevel = sessionContext.OrgLevel;
+                    current.CreatorName = sessionContext.UserName;
+                    current.AreaId = sessionContext.AreaId;
+                }
+
+              }
+
         }
 
-        public static void ToInsert<T>(this List<T> entities) where T : class, IEntity<string>, new()
+        public static void ToInsert<T>(this List<T> entities, ISessionContext sessionContext = null) where T : class, IEntity<string>, new()
         {
             foreach(var entity in entities)
             {
-                entity.ToInsert();
+                entity.ToInsert(sessionContext);
             }
         }
 
-        public static void ToUpdate<T>(this T entity) where T : class, IEntity<string>, new()
+        public static void ToUpdate<T>(this T entity, ISessionContext sessionContext = null) where T : class, IEntity<string>, new()
         {
             if(entity is FullStateEntity)
             {
@@ -47,14 +64,29 @@ namespace Hotline.Repository.SqlSugar.Extensions
 
                     entity = fullStateEntity as T ?? entity;
                 
-            }          
+            }
+
+            if (sessionContext != null)
+            {
+                var current = entity as Entity;
+                if (current != null)
+                {
+                    current.CreatorId = sessionContext.UserId;
+                    current.CreatorOrgId = sessionContext.OrgId;
+                    current.CreatorOrgName = sessionContext.OrgName;
+                    current.CreatorOrgLevel = sessionContext.OrgLevel;
+                    current.CreatorName = sessionContext.UserName;
+                    current.AreaId = sessionContext.AreaId;
+                }
+
+            }
         }
 
-        public static void ToUpdate<T>(this List<T> entities) where T : class, IEntity<string>, new()       
+        public static void ToUpdate<T>(this List<T> entities, ISessionContext sessionContext = null) where T : class, IEntity<string>, new()       
         {
             foreach (var entity in entities)
             {
-                entity.ToUpdate();
+                entity.ToUpdate(sessionContext);
             }
         }
     }

+ 9 - 5
src/Hotline.Repository.SqlSugar/Service/ApiService.cs

@@ -7,9 +7,11 @@ using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Repository.SqlSugar.Interface;
 using Mapster;
 using MapsterMapper;
+using Microsoft.AspNetCore.Http;
 using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 using SqlSugar;
 using System.Reflection;
+using XF.Domain.Authentications;
 using XF.Domain.Entities;
 using XF.Domain.Repository;
 
@@ -29,14 +31,16 @@ namespace Exam.Insfrastructure.Service.Service
         private bool _isStartTrain = false;
 
         private IMapper _mapper;
+        private readonly ISessionContext _sessionContext;
 
         public T Entity { get; set; }
 
-        public ApiService(IExamRepository<T, TDBContext> repository,IMapper mapper)
+        public ApiService(IExamRepository<T, TDBContext> repository,IMapper mapper,ISessionContext sessionContext = null)
         {
             _repository = repository;
             _validator = _repository.Validator;
             _mapper = mapper;
+            this._sessionContext = sessionContext;
         } 
         #endregion
 
@@ -219,7 +223,7 @@ namespace Exam.Insfrastructure.Service.Service
         {
             var entities = _mapper.Map<List<T>>(actionRequests);
 
-            entities.ToInsert();
+            entities.ToInsert(_sessionContext);
 
             if (_isStartTrain)
             {
@@ -261,7 +265,7 @@ namespace Exam.Insfrastructure.Service.Service
 
             entity = _mapper.Map<TUpdate, T>(actionRequest,entity);
 
-            entity.ToUpdate();
+            entity.ToUpdate(_sessionContext);
 
             if (_isStartTrain)
             {
@@ -288,7 +292,7 @@ namespace Exam.Insfrastructure.Service.Service
 
             entities = _mapper.Map<List<TUpdate>, List<T>>(actionRequests,entities);
 
-            entities.ToUpdate();
+            entities.ToUpdate(_sessionContext);
             if (_isStartTrain)
             {
                 await _repository.ValidateUpdateAsync(entities, cancellationToken);
@@ -312,7 +316,7 @@ namespace Exam.Insfrastructure.Service.Service
 
             entities = _mapper.Map<List<StatusActionRequest>, List<T>>(statusActionRequests,entities);
 
-            entities.ToUpdate();
+            entities.ToUpdate(_sessionContext);
 
             if (_isStartTrain)
             {