导入人员发送邮件
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
ba2965e295
commit
918362e854
|
@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl);
|
Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl);
|
||||||
|
|
||||||
Task ExternalUserJoinEmail(Guid trialId, Guid userId,string userTypes, string baseUrl, string rootUrl);
|
Task ExternalUserJoinEmail(Guid trialId, Guid userId, string userTypes, string baseUrl, string rootUrl);
|
||||||
|
|
||||||
Task<(Guid identityUserId, Guid userRoleId)> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl);
|
Task<(Guid identityUserId, Guid userRoleId)> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl);
|
||||||
|
|
||||||
|
@ -434,8 +434,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId)).IfNullThrowException();
|
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId)).IfNullThrowException();
|
||||||
|
|
||||||
var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException();
|
var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException();
|
||||||
|
|
||||||
var messageToSend = new MimeMessage();
|
var messageToSend = new MimeMessage();
|
||||||
//发件地址
|
//发件地址
|
||||||
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
|
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
|
||||||
//收件地址
|
//收件地址
|
||||||
|
@ -453,7 +453,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
|
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
|
||||||
|
|
||||||
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
||||||
|
|
||||||
var redirectUrl = $"{domain}/api/User/UserRedirect?url={System.Web.HttpUtility.UrlEncode(routeUrl)}";
|
var redirectUrl = $"{domain}/api/User/UserRedirect?url={System.Web.HttpUtility.UrlEncode(routeUrl)}";
|
||||||
|
|
||||||
|
@ -471,7 +471,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
trialInfo.ResearchProgramNo,
|
trialInfo.ResearchProgramNo,
|
||||||
trialInfo.TrialCode,
|
trialInfo.TrialCode,
|
||||||
sysUserInfo.UserName,
|
sysUserInfo.UserName,
|
||||||
userTypes,
|
userTypes,
|
||||||
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
|
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -512,7 +512,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new Domain.Models.IdentityUser() { EmailToken = token });
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new Domain.Models.IdentityUser() { EmailToken = token });
|
||||||
}
|
}
|
||||||
|
|
||||||
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
||||||
|
|
||||||
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
|
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
|
||||||
|
|
||||||
|
@ -623,7 +623,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new Domain.Models.IdentityUser() { EmailToken = token });
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new Domain.Models.IdentityUser() { EmailToken = token });
|
||||||
}
|
}
|
||||||
|
|
||||||
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
||||||
|
|
||||||
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
|
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
CreateMap<UserCommand, UserRole>();
|
CreateMap<UserCommand, UserRole>();
|
||||||
|
|
||||||
|
|
||||||
|
CreateMap<TrialExternalUser, IdentityUser>();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ using StackExchange.Redis;
|
||||||
using Panda.DynamicWebApi.Attributes;
|
using Panda.DynamicWebApi.Attributes;
|
||||||
using IdentityModel;
|
using IdentityModel;
|
||||||
using Microsoft.AspNetCore.Components.Routing;
|
using Microsoft.AspNetCore.Components.Routing;
|
||||||
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
|
using Microsoft.AspNetCore.Identity;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Contracts
|
namespace IRaCIS.Core.Application.Contracts
|
||||||
{
|
{
|
||||||
|
@ -1078,7 +1080,6 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public async Task ImportGenerateAccountAndJoinTrialAsync(Guid trialId, string baseUrl, string routeUrl, List<SiteSurveyUserImportDto> list)
|
public async Task ImportGenerateAccountAndJoinTrialAsync(Guid trialId, string baseUrl, string routeUrl, List<SiteSurveyUserImportDto> list)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
|
var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
|
||||||
|
|
||||||
|
|
||||||
|
@ -1088,55 +1089,36 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
var first = addUserRoleList.FirstOrDefault();
|
var first = addUserRoleList.FirstOrDefault();
|
||||||
|
|
||||||
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
|
var userEmail = item.Key;
|
||||||
var sysUserInfo = await _identityUserRepository.Where(t => t.EMail == item.Key, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
if (sysUserInfo == null)
|
var userTypeIdList = item.Select(t => t.UserTypeId).ToList();
|
||||||
|
|
||||||
|
var existSysUser = await _identityUserRepository.Where(t => t.EMail == userEmail, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
if (existSysUser != null)
|
||||||
{
|
{
|
||||||
var @lock = _distributedLockProvider.CreateLock($"UserCode");
|
|
||||||
|
|
||||||
using (await @lock.AcquireAsync())
|
//账号状态设置为启用
|
||||||
|
existSysUser.Status = UserStateEnum.Enable;
|
||||||
|
|
||||||
|
foreach (var userTypeId in userTypeIdList)
|
||||||
{
|
{
|
||||||
var saveItem = _mapper.Map<IdentityUser>(first);
|
var findRole = existSysUser.UserRoleList.FirstOrDefault(t => t.UserTypeId == userTypeId);
|
||||||
|
|
||||||
|
if (findRole != null)
|
||||||
if (trialType == TrialType.NoneOfficial)
|
|
||||||
{
|
{
|
||||||
saveItem.IsTestUser = true;
|
//存在该角色,设置为启用
|
||||||
|
findRole.IsUserRoleDisabled = false;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// 中心调研生成账号 都是外部的
|
|
||||||
saveItem.IsZhiZhun = false;
|
|
||||||
saveItem.Code = _identityUserRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
|
||||||
|
|
||||||
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(IdentityUser));
|
|
||||||
|
|
||||||
saveItem.UserName = saveItem.UserCode;
|
|
||||||
|
|
||||||
saveItem.UserRoleList = new List<UserRole>();
|
|
||||||
|
|
||||||
foreach (var addUserRole in addUserRoleList)
|
|
||||||
{
|
{
|
||||||
addUserRole.IsGeneratedAccount = true;
|
//不存在该角色,那么就添加
|
||||||
|
var addRole = _mapper.Map<UserRole>(existSysUser);
|
||||||
//var trialSiteId = addUserRole.TrialSiteId;
|
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == userTypeId).Select(t => t.UserTypeEnum).First();
|
||||||
|
addRole.UserTypeId = userTypeId;
|
||||||
var addRole = _mapper.Map<UserRole>(saveItem);
|
addRole.IsUserRoleDisabled = false;
|
||||||
|
existSysUser.UserRoleList.Add(addRole);
|
||||||
addRole.UserTypeEnum = addUserRole.UserTypeEnum;
|
|
||||||
addRole.UserTypeId = addUserRole.UserTypeId;
|
|
||||||
|
|
||||||
saveItem.UserRoleList.Add(addRole);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var newUser = await _identityUserRepository.AddAsync(saveItem);
|
|
||||||
|
|
||||||
await _identityUserRepository.SaveChangesAsync();
|
|
||||||
|
|
||||||
sysUserInfo = newUser;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1144,86 +1126,114 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var addUserRole in addUserRoleList)
|
//生成账户 并插入
|
||||||
|
var generateUser = _mapper.Map<IdentityUser>(first);
|
||||||
|
|
||||||
|
if (trialType == TrialType.NoneOfficial)
|
||||||
{
|
{
|
||||||
var find = sysUserInfo.UserRoleList.FirstOrDefault(t => t.UserTypeEnum == addUserRole.UserTypeEnum && t.UserTypeId == addUserRole.UserTypeId);
|
generateUser.IsTestUser = true;
|
||||||
|
|
||||||
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();
|
// 外部人员生成账号 都是外部的
|
||||||
|
generateUser.IsZhiZhun = false;
|
||||||
|
|
||||||
|
generateUser.Code = _identityUserRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||||
|
|
||||||
|
generateUser.UserCode = AppSettings.GetCodeStr(generateUser.Code, nameof(IdentityUser));
|
||||||
|
|
||||||
|
//generateUser.UserName = generateUser.UserCode;
|
||||||
|
|
||||||
|
|
||||||
|
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
||||||
|
|
||||||
|
generateUser.Status = UserStateEnum.Disable;
|
||||||
|
|
||||||
|
generateUser.UserRoleList = new List<UserRole>() { };
|
||||||
|
|
||||||
|
foreach (var userTypeId in userTypeIdList)
|
||||||
|
{
|
||||||
|
var addRole = _mapper.Map<UserRole>(generateUser);
|
||||||
|
|
||||||
|
addRole.Id = NewId.NextSequentialGuid();
|
||||||
|
|
||||||
|
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == userTypeId).Select(t => t.UserTypeEnum).First();
|
||||||
|
|
||||||
|
addRole.UserTypeId = userTypeId;
|
||||||
|
|
||||||
|
generateUser.UserRoleList.Add(addRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
var newAddUser = await _identityUserRepository.AddAsync(generateUser);
|
||||||
|
|
||||||
|
|
||||||
|
existSysUser = newAddUser;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var userId = sysUserInfo.Id;
|
await _identityUserRepository.SaveChangesAsync();
|
||||||
|
|
||||||
//判断是否加入到项目
|
|
||||||
var findTrialUser = await _trialIdentityUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, true);
|
|
||||||
|
|
||||||
|
var identityUserId = existSysUser.Id;
|
||||||
|
|
||||||
|
|
||||||
|
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var isNeedSendEmail = false;
|
||||||
|
|
||||||
if (findTrialUser == null)
|
if (findTrialUser == null)
|
||||||
{
|
{
|
||||||
|
//没有项目参与人员
|
||||||
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
|
findTrialUser = await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
|
||||||
{
|
{
|
||||||
|
IdentityUserId = identityUserId,
|
||||||
TrialId = trialId,
|
TrialId = trialId,
|
||||||
IdentityUserId = userId,
|
|
||||||
JoinTime = DateTime.Now,
|
JoinTime = DateTime.Now,
|
||||||
TrialUserRoleList =
|
|
||||||
sysUserInfo.UserRoleList.Select(t => new TrialUserRole() { TrialId = trialId, UserId = t.Id }).ToList()
|
TrialUserRoleList = userTypeIdList.Select(u => new TrialUserRole()
|
||||||
|
{
|
||||||
|
TrialId = trialId,
|
||||||
|
UserId = existSysUser.UserRoleList.FirstOrDefault(t => t.UserTypeId == u).Id,
|
||||||
|
|
||||||
|
}).ToList()
|
||||||
});
|
});
|
||||||
|
|
||||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, baseUrl, routeUrl);
|
isNeedSendEmail = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (findTrialUser.IsDeleted == true)
|
else
|
||||||
{
|
{
|
||||||
await _trialIdentityUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, c => new TrialIdentityUser()
|
//有该人员
|
||||||
|
//是否有该角色
|
||||||
|
|
||||||
|
foreach (var userTypeId in userTypeIdList)
|
||||||
{
|
{
|
||||||
IsDeleted = false,
|
var findTrialUserRole = findTrialUser.TrialUserRoleList.Where(t => t.UserRole.UserTypeId == userTypeId).FirstOrDefault();
|
||||||
DeletedTime = null,
|
|
||||||
JoinTime = DateTime.Now,
|
|
||||||
});
|
|
||||||
|
|
||||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, baseUrl, routeUrl);
|
if (findTrialUserRole == null)
|
||||||
}
|
{
|
||||||
|
isNeedSendEmail = true;
|
||||||
|
//添加该角色
|
||||||
|
findTrialUser.TrialUserRoleList.Add(new TrialUserRole() { TrialUserId = findTrialUser.Id, TrialId = trialId, UserId = existSysUser.UserRoleList.FirstOrDefault(t => t.UserTypeId == userTypeId).Id });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//如果禁用,那么启用
|
||||||
|
if (findTrialUserRole.IsDeleted == true)
|
||||||
|
{
|
||||||
|
findTrialUserRole.IsDeleted = false;
|
||||||
|
findTrialUserRole.DeletedTime = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
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 = userRole.TrialSiteId, UserId = userRoleId });
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
findTrialSiteUser.IsDeleted = false;
|
|
||||||
findTrialSiteUser.DeletedTime = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
findTrialSiteUser.IsDeleted = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isNeedSendEmail)
|
||||||
|
{
|
||||||
|
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, identityUserId, baseUrl, routeUrl);
|
||||||
|
}
|
||||||
await _trialSiteUserRoleRepository.SaveChangesAsync();
|
await _trialSiteUserRoleRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -171,8 +171,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public bool IsSystemUser { get; set; }
|
public bool IsSystemUser { get; set; }
|
||||||
|
|
||||||
[NotDefault]
|
//public Guid SystemUserId { get; set; }
|
||||||
public Guid SystemUserId { get; set; }
|
|
||||||
|
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid UserTypeId { get; set; }
|
public Guid UserTypeId { get; set; }
|
||||||
|
|
|
@ -16,6 +16,7 @@ using Microsoft.AspNetCore.Mvc;
|
||||||
using DocumentFormat.OpenXml.Spreadsheet;
|
using DocumentFormat.OpenXml.Spreadsheet;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Application.Contracts;
|
using IRaCIS.Application.Contracts;
|
||||||
|
using MassTransit;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -76,7 +77,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (existSysUser.LastName != addOrEditTrialExternalUser.LastName || existSysUser.FirstName != addOrEditTrialExternalUser.FirstName)
|
if (existSysUser.LastName != addOrEditTrialExternalUser.LastName || existSysUser.FirstName != addOrEditTrialExternalUser.FirstName)
|
||||||
{
|
{
|
||||||
//$"该用户在系统中的用户名为:{existSysUser.LastName + " / " + existSysUser.FirstName} 电话:{existSysUser.Phone},与填写信息存在不一致项, 请将界面信息修改为与系统一致,再进行保存",
|
//$"该用户在系统中的用户名为:{existSysUser.LastName + " / " + existSysUser.FirstName} 电话:{existSysUser.Phone},与填写信息存在不一致项, 请将界面信息修改为与系统一致,再进行保存",
|
||||||
return ResponseOutput.NotOk(_localizer["TrialExternalUser_Inconsistency", existSysUser.LastName + " / " + existSysUser.FirstName, existSysUser.Phone], new { existSysUser.LastName, existSysUser.FirstName, existSysUser.Phone, existSysUser.IsZhiZhun, existSysUser.IsTestUser }, ApiResponseCodeEnum.NeedTips);
|
return ResponseOutput.NotOk(_localizer["TrialExternalUser_Inconsistency", existSysUser.LastName + " / " + existSysUser.FirstName, existSysUser.Phone], new { existSysUser.LastName, existSysUser.FirstName, existSysUser.Phone, existSysUser.OrganizationName, existSysUser.IsZhiZhun, existSysUser.IsTestUser }, ApiResponseCodeEnum.NeedTips);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -147,7 +148,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
Id = addEntity.Id,
|
Id = addEntity.Id,
|
||||||
Email=addEntity.Email,
|
Email=addEntity.Email,
|
||||||
IsSystemUser=addEntity.IsSystemUser,
|
IsSystemUser=addEntity.IsSystemUser,
|
||||||
SystemUserId=addEntity.SystemUserId,
|
//SystemUserId=addEntity.SystemUserId,
|
||||||
UserTypeId=addOrEditTrialExternalUser.UserTypeId
|
UserTypeId=addOrEditTrialExternalUser.UserTypeId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -256,7 +257,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
//生成账户 并插入
|
//生成账户 并插入
|
||||||
var externalUser = _trialExternalUseRepository.FirstOrDefaultAsync(t => t.Id == itemFirst.Id);
|
var externalUser = await _trialExternalUseRepository.FirstOrDefaultAsync(t => t.Id == itemFirst.Id);
|
||||||
var generateUser = _mapper.Map<IdentityUser>(externalUser);
|
var generateUser = _mapper.Map<IdentityUser>(externalUser);
|
||||||
|
|
||||||
if (trialType == TrialType.NoneOfficial)
|
if (trialType == TrialType.NoneOfficial)
|
||||||
|
@ -269,10 +270,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
generateUser.Code = _identityUserRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
generateUser.Code = _identityUserRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||||
|
|
||||||
|
|
||||||
generateUser.UserCode = AppSettings.GetCodeStr(generateUser.Code, nameof(IdentityUser));
|
generateUser.UserCode = AppSettings.GetCodeStr(generateUser.Code, nameof(IdentityUser));
|
||||||
|
|
||||||
generateUser.UserName = generateUser.UserCode;
|
//generateUser.UserName = generateUser.UserCode;
|
||||||
|
|
||||||
|
|
||||||
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
||||||
|
@ -285,8 +285,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var addRole = _mapper.Map<UserRole>(generateUser);
|
var addRole = _mapper.Map<UserRole>(generateUser);
|
||||||
|
|
||||||
|
addRole.Id = NewId.NextSequentialGuid();
|
||||||
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == userTypeId).Select(t => t.UserTypeEnum).First();
|
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == userTypeId).Select(t => t.UserTypeEnum).First();
|
||||||
|
|
||||||
addRole.UserTypeId = userTypeId;
|
addRole.UserTypeId = userTypeId;
|
||||||
|
|
||||||
generateUser.UserRoleList.Add(addRole);
|
generateUser.UserRoleList.Add(addRole);
|
||||||
|
@ -294,7 +294,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var newAddUser = await _identityUserRepository.AddAsync(generateUser);
|
var newAddUser = await _identityUserRepository.AddAsync(generateUser);
|
||||||
|
|
||||||
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => externalIdList.Contains(t.Id), u => new TrialExternalUser() { IsSystemUser = false, SystemUserId = newAddUser.Id });
|
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => externalIdList.Contains(t.Id), u => new TrialExternalUser()
|
||||||
|
{
|
||||||
|
IsSystemUser = false,
|
||||||
|
SystemUserId = newAddUser.Id,
|
||||||
|
FirstName = existSysUser.FirstName,
|
||||||
|
LastName = existSysUser.LastName,
|
||||||
|
OrganizationName = existSysUser.OrganizationName,
|
||||||
|
Phone = existSysUser.Phone,
|
||||||
|
});
|
||||||
|
|
||||||
existSysUser = newAddUser;
|
existSysUser = newAddUser;
|
||||||
|
|
||||||
|
@ -315,7 +323,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.NotOk("database dirty data ");
|
return ResponseOutput.NotOk("database dirty data ");
|
||||||
}
|
}
|
||||||
|
|
||||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true).Include(t => t.TrialUserRoleList).FirstOrDefaultAsync();
|
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||||
|
|
||||||
if (findTrialUser == null)
|
if (findTrialUser == null)
|
||||||
{
|
{
|
||||||
|
@ -329,7 +337,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
TrialUserRoleList = userTypeIdList.Select(u => new TrialUserRole()
|
TrialUserRoleList = userTypeIdList.Select(u => new TrialUserRole()
|
||||||
{
|
{
|
||||||
TrialId = trialId,
|
TrialId = trialId,
|
||||||
UserId = existSysUser.UserRoleList.FirstOrDefault(t=>t.UserTypeId==u).Id,
|
UserId = existSysUser.UserRoleList.FirstOrDefault(t => t.UserTypeId == u).Id,
|
||||||
|
|
||||||
}).ToList()
|
}).ToList()
|
||||||
});
|
});
|
||||||
|
@ -342,12 +350,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
foreach (var userTypeId in userTypeIdList)
|
foreach (var userTypeId in userTypeIdList)
|
||||||
{
|
{
|
||||||
var findTrialUserRole = findTrialUser.TrialUserRoleList.Where(t => t.UserId == userTypeId).FirstOrDefault();
|
var findTrialUserRole = findTrialUser.TrialUserRoleList.Where(t => t.UserRole.UserTypeId == userTypeId).FirstOrDefault();
|
||||||
|
|
||||||
if (findTrialUserRole == null)
|
if (findTrialUserRole == null)
|
||||||
{
|
{
|
||||||
//添加该角色
|
//添加该角色
|
||||||
findTrialUser.TrialUserRoleList.Add(new TrialUserRole() { TrialUserId = findTrialUser.Id, TrialId = trialId, UserId = existSysUser.UserRoleList.FirstOrDefault(t => t.UserTypeId == userTypeId).Id });
|
findTrialUser.TrialUserRoleList.Add(new TrialUserRole() { TrialUserId = findTrialUser.Id, TrialId = trialId, UserId = existSysUser.UserRoleList.FirstOrDefault(t => t.UserTypeId == userTypeId).Id });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -362,9 +370,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await _trialIdentityUserRepository.SaveChangesAsync();
|
await _trialIdentityUserRepository.SaveChangesAsync();
|
||||||
|
|
||||||
var usertyps = string.Join(',', userTypeList.Where(t=> userTypeIdList.Contains(t.UserTypeId)).Select(t => t.UserTypeShortName));
|
var usertyps = string.Join(',', userTypeList.Where(t => userTypeIdList.Contains(t.UserTypeId)).Select(t => t.UserTypeShortName));
|
||||||
|
|
||||||
await _mailVerificationService.ExternalUserJoinEmail(trialId, identityUserId, usertyps, sendEmail.BaseUrl, sendEmail.RouteUrl);
|
await _mailVerificationService.ExternalUserJoinEmail(trialId, identityUserId, usertyps, sendEmail.BaseUrl, sendEmail.RouteUrl);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue