diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 44e6cfcbe..da88b7db3 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -168,7 +168,7 @@ namespace IRaCIS.Core.Application.Service if (_trialUserRoleReposiotry.Any(t => t.TrialUserId == Guid.Empty)) { - var list = _trialUserRoleReposiotry.Where(t => t.IsDeleted == true, false, true).Select(t => new { t.TrialId, t.UserRole.IdentityUserId, t.UserId, t.JoinTime, t.RemoveTime, t.DeletedTime, t.DeleteUserId }).ToList(); + var list = _trialUserRoleReposiotry.Where(t => t.IsDeleted == true && t.TrialUserId == Guid.Empty, false, true).Select(t => new { t.TrialId, t.UserRole.IdentityUserId, t.UserId, t.JoinTime, t.RemoveTime, t.DeletedTime, t.DeleteUserId, t.CreateUserId }).ToList(); foreach (var item in list.GroupBy(t => new { t.IdentityUserId, t.TrialId })) @@ -183,19 +183,33 @@ namespace IRaCIS.Core.Application.Service var first = userRoleList.OrderByDescending(t => t.RemoveTime).FirstOrDefault(); - await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser() + //判断在项目中是否存在 + + var find = _trialIdentityUserRepository.Where(t => t.IdentityUserId == first.IdentityUserId && t.TrialId == first.TrialId).FirstOrDefault(); + + if (find == null) { - Id = id, - IdentityUserId = item.Key.IdentityUserId, - TrialId = item.Key.TrialId, - RemoveTime = first.RemoveTime, - IsDeleted = true, - DeletedTime = first.DeletedTime, - DeleteUserId = first.DeleteUserId, - }); + await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser() + { + Id = id, + IdentityUserId = item.Key.IdentityUserId, + TrialId = item.Key.TrialId, + RemoveTime = first.RemoveTime, + IsDeleted = true, + DeletedTime = first.DeletedTime, + DeleteUserId = first.DeleteUserId, + + }); + + + await _trialUserRoleReposiotry.BatchUpdateNoTrackingAsync(t => t.TrialId == item.Key.TrialId && userIdList.Contains(t.UserId), u => new TrialUserRole() { TrialUserId = id, UpdateTime = (DateTime)first.DeletedTime }); + } + else + { + await _trialUserRoleReposiotry.BatchUpdateNoTrackingAsync(t => t.TrialId == item.Key.TrialId && userIdList.Contains(t.UserId), u => new TrialUserRole() { TrialUserId = find.Id, UpdateTime = (DateTime)first.DeletedTime }); + } - await _trialUserRoleReposiotry.BatchUpdateNoTrackingAsync(t => t.TrialId == item.Key.TrialId && userIdList.Contains(t.UserId), u => new TrialUserRole() { TrialUserId = id }); }