导入人员
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
340f5c580e
commit
7535d49844
|
@ -15425,7 +15425,7 @@
|
|||
TrialSiteSurveyService
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Doctor},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VerificationCode},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserRole},Medallion.Threading.IDistributedLockProvider,IRaCIS.Core.Application.Auth.ITokenService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Application.Service.IMailVerificationService,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.IdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialIdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Doctor},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VerificationCode},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserRole},Medallion.Threading.IDistributedLockProvider,IRaCIS.Core.Application.Auth.ITokenService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Application.Service.IMailVerificationService,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
||||
<summary>
|
||||
TrialSiteSurveyService
|
||||
</summary>
|
||||
|
|
|
@ -22,6 +22,10 @@ using static MassTransit.ValidationResultExtensions;
|
|||
using DocumentFormat.OpenXml.Vml.Spreadsheet;
|
||||
using IdentityModel.OidcClient;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using MassTransit;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using StackExchange.Redis;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
|
@ -32,6 +36,8 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public class TrialSiteSurveyService(IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
|
||||
IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository,
|
||||
IRepository<UserRole> _userRoleRepository,
|
||||
IRepository<IdentityUser> _identityUserRepository,
|
||||
IRepository<TrialIdentityUser> _trialIdentityUserRepository,
|
||||
IRepository<Trial> _trialRepository,
|
||||
IRepository<TrialSite> _trialSiteRepository,
|
||||
IRepository<Doctor> _doctorRepository,
|
||||
|
@ -689,7 +695,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey);
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.UserRole.UserTypeEnum == UserTypeEnum.SPM || u.UserRole.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
var isSPMjoin= isTrialSPMJoin && hasSPMOrCPM;
|
||||
var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM;
|
||||
|
||||
if (isSPMjoin)
|
||||
{
|
||||
|
@ -1023,20 +1029,23 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
|
||||
|
||||
//判断是否有系统账号
|
||||
foreach (var item in list)
|
||||
|
||||
foreach (var item in list.GroupBy(t => t.Email))
|
||||
{
|
||||
var addUserRoleList = item.ToList();
|
||||
|
||||
var first = addUserRoleList.FirstOrDefault();
|
||||
|
||||
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
|
||||
var sysUserInfo = await _userRoleRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
|
||||
var sysUserInfo = await _identityUserRepository.Where(t => t.EMail == item.Key, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
|
||||
|
||||
if (sysUserInfo == null)
|
||||
{
|
||||
|
||||
var @lock = _distributedLockProvider.CreateLock($"UserCode");
|
||||
|
||||
using (await @lock.AcquireAsync())
|
||||
{
|
||||
var saveItem = _mapper.Map<UserRole>(item);
|
||||
var saveItem = _mapper.Map<IdentityUser>(first);
|
||||
|
||||
|
||||
if (trialType == TrialType.NoneOfficial)
|
||||
|
@ -1048,39 +1057,91 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
saveItem.IsZhiZhun = false;
|
||||
saveItem.Code = _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(UserRole));
|
||||
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(IdentityUser));
|
||||
|
||||
saveItem.UserName = saveItem.UserCode;
|
||||
|
||||
//saveItem.UserTypeEnum = _userTypeRepository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
|
||||
saveItem.UserRoleList = new List<UserRole>();
|
||||
|
||||
var newUser = _userRoleRepository.AddAsync(saveItem).Result;
|
||||
foreach (var addUserRole in addUserRoleList)
|
||||
{
|
||||
addUserRole.IsGeneratedAccount = true;
|
||||
|
||||
_ = _userRoleRepository.SaveChangesAsync().Result;
|
||||
//var trialSiteId = addUserRole.TrialSiteId;
|
||||
|
||||
var addRole = _mapper.Map<UserRole>(saveItem);
|
||||
|
||||
addRole.UserTypeEnum = addUserRole.UserTypeEnum;
|
||||
addRole.UserTypeId = addUserRole.UserTypeId;
|
||||
|
||||
saveItem.UserRoleList.Add(addRole);
|
||||
|
||||
}
|
||||
|
||||
|
||||
var newUser = await _identityUserRepository.AddAsync(saveItem);
|
||||
|
||||
await _identityUserRepository.SaveChangesAsync();
|
||||
|
||||
sysUserInfo = newUser;
|
||||
|
||||
}
|
||||
|
||||
item.IsGeneratedAccount = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
foreach (var addUserRole in addUserRoleList)
|
||||
{
|
||||
var find = sysUserInfo.UserRoleList.FirstOrDefault(t => t.UserTypeEnum == addUserRole.UserTypeEnum && t.UserTypeId == addUserRole.UserTypeId);
|
||||
|
||||
if (find != null && find.IsUserRoleDisabled == true)
|
||||
{
|
||||
find.IsUserRoleDisabled = false;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var addRole = _mapper.Map<UserRole>(sysUserInfo);
|
||||
|
||||
addRole.Id = NewId.NextSequentialGuid();
|
||||
addRole.IdentityUserId = sysUserInfo.Id;
|
||||
addRole.UserTypeEnum = addUserRole.UserTypeEnum;
|
||||
addRole.UserTypeId = addUserRole.UserTypeId;
|
||||
|
||||
sysUserInfo.UserRoleList.Add(addRole);
|
||||
}
|
||||
}
|
||||
|
||||
await _identityUserRepository.SaveChangesAsync();
|
||||
|
||||
}
|
||||
|
||||
var userId = sysUserInfo.Id;
|
||||
var trialSiteId = item.TrialSiteId;
|
||||
|
||||
//判断是否加入到项目
|
||||
var findTrialUser = await _trialUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
|
||||
var findTrialUser = await _trialIdentityUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, true);
|
||||
|
||||
|
||||
if (findTrialUser == null)
|
||||
{
|
||||
await _trialUserRoleRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
|
||||
|
||||
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
|
||||
{
|
||||
TrialId = trialId,
|
||||
IdentityUserId = userId,
|
||||
JoinTime = DateTime.Now,
|
||||
TrialUserRoleList =
|
||||
sysUserInfo.UserRoleList.Select(t => new TrialUserRole() { TrialId = trialId, UserId = t.Id }).ToList()
|
||||
});
|
||||
|
||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, baseUrl, routeUrl);
|
||||
|
||||
}
|
||||
else if (findTrialUser.IsDeleted == true)
|
||||
{
|
||||
await _trialUserRoleRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUserRole()
|
||||
await _trialIdentityUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, c => new TrialIdentityUser()
|
||||
{
|
||||
IsDeleted = false,
|
||||
DeletedTime = null,
|
||||
|
@ -1091,11 +1152,14 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
}
|
||||
|
||||
|
||||
var findTrialSiteUser = await _trialSiteUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true);
|
||||
foreach (var userRole in addUserRoleList)
|
||||
{
|
||||
var userRoleId = sysUserInfo.UserRoleList.Where(t => t.UserTypeId == userRole.UserTypeId).First().Id;
|
||||
|
||||
var findTrialSiteUser = await _trialSiteUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userRoleId && t.TrialSiteId == userRole.TrialSiteId, true);
|
||||
if (findTrialSiteUser == null)
|
||||
{
|
||||
await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
|
||||
await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = userRole.TrialSiteId, UserId = userRoleId });
|
||||
|
||||
}
|
||||
else
|
||||
|
@ -1104,13 +1168,14 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
findTrialSiteUser.DeletedTime = null;
|
||||
}
|
||||
|
||||
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
|
||||
|
||||
await _trialSiteUserRoleRepository.SaveChangesAsync();
|
||||
|
||||
findTrialSiteUser.IsDeleted = false;
|
||||
}
|
||||
|
||||
|
||||
await _trialSiteUserRoleRepository.SaveChangesAsync();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue