修改医生生成账号
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
53bcdaa6ce
commit
5cdc5400dc
|
@ -116,7 +116,7 @@ namespace IRaCIS.Api.Controllers
|
||||||
[FromServices] IReadingImageTaskService readingImageTaskService,
|
[FromServices] IReadingImageTaskService readingImageTaskService,
|
||||||
[FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig,
|
[FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig,
|
||||||
[FromServices] IOptionsMonitor<SystemEmailSendConfig> _emailConfig,
|
[FromServices] IOptionsMonitor<SystemEmailSendConfig> _emailConfig,
|
||||||
[FromServices]IMapper _mapper,
|
[FromServices] IMapper _mapper,
|
||||||
[FromServices] IMailVerificationService _mailVerificationService)
|
[FromServices] IMailVerificationService _mailVerificationService)
|
||||||
{
|
{
|
||||||
var emailConfig = _emailConfig.CurrentValue;
|
var emailConfig = _emailConfig.CurrentValue;
|
||||||
|
@ -375,7 +375,7 @@ namespace IRaCIS.Api.Controllers
|
||||||
|
|
||||||
[HttpGet("User/UserRedirect")]
|
[HttpGet("User/UserRedirect")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<IActionResult> UserRedirect([FromServices] IRepository<UserRole> _userRoleRepository, string url, [FromServices] ILogger<ExtraController> _logger)
|
public async Task<IActionResult> UserRedirect([FromServices] IRepository<IdentityUser> _useRepository, string url, [FromServices] ILogger<ExtraController> _logger)
|
||||||
{
|
{
|
||||||
|
|
||||||
var decodeUrl = System.Web.HttpUtility.UrlDecode(url);
|
var decodeUrl = System.Web.HttpUtility.UrlDecode(url);
|
||||||
|
@ -391,7 +391,7 @@ namespace IRaCIS.Api.Controllers
|
||||||
var errorUrl = domainStrList[0] + "//" + domainStrList[2] + "/error";
|
var errorUrl = domainStrList[0] + "//" + domainStrList[2] + "/error";
|
||||||
|
|
||||||
|
|
||||||
if (!await _userRoleRepository.AnyAsync(t => t.Id == Guid.Parse(userId) && t.EmailToken == token && t.IsFirstAdd))
|
if (!await _useRepository.AnyAsync(t => t.Id == Guid.Parse(userId) && t.EmailToken == token && t.IsFirstAdd))
|
||||||
{
|
{
|
||||||
decodeUrl = errorUrl + $"?lang={lang}&ErrorMessage={System.Web.HttpUtility.UrlEncode(lang == "zh" ? "您的初始化链接已过期" : "Error!The initialization link has expired. Return")} ";
|
decodeUrl = errorUrl + $"?lang={lang}&ErrorMessage={System.Web.HttpUtility.UrlEncode(lang == "zh" ? "您的初始化链接已过期" : "Error!The initialization link has expired. Return")} ";
|
||||||
}
|
}
|
||||||
|
|
|
@ -558,7 +558,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public async Task<Guid> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl)
|
public async Task<Guid> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl)
|
||||||
{
|
{
|
||||||
var doctor = await _doctorTypeRepository.FindAsync(doctorId);
|
var doctor = await _doctorTypeRepository.FindAsync(doctorId);
|
||||||
UserRole sysUserInfo = new UserRole();
|
var sysUserInfo = new IdentityUser();
|
||||||
|
|
||||||
var userType = await _userTypeRepository.FirstAsync(t => t.UserTypeEnum == UserTypeEnum.IndependentReviewer);
|
var userType = await _userTypeRepository.FirstAsync(t => t.UserTypeEnum == UserTypeEnum.IndependentReviewer);
|
||||||
|
|
||||||
|
@ -572,7 +572,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (!isDoctorHaveAccount)
|
if (!isDoctorHaveAccount)
|
||||||
{
|
{
|
||||||
|
|
||||||
var saveItem = new UserRole() { FirstName = doctor.FirstName, LastName = doctor.LastName, EMail = doctor.EMail };
|
var saveItem = new IdentityUser() { FirstName = doctor.FirstName, LastName = doctor.LastName, EMail = doctor.EMail };
|
||||||
|
|
||||||
var trialType = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefaultAsync();
|
var trialType = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
@ -584,28 +584,26 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
saveItem.Code = _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
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.UserName = saveItem.UserCode;
|
||||||
|
|
||||||
saveItem.UserTypeEnum = UserTypeEnum.IndependentReviewer;
|
|
||||||
|
|
||||||
saveItem.DoctorId = doctorId;
|
saveItem.UserRoleList = new List<UserRole>() { new UserRole() { DoctorId = doctorId, UserTypeEnum = UserTypeEnum.IndependentReviewer, UserTypeId = userType.Id } };
|
||||||
saveItem.UserTypeId = userType.Id;
|
|
||||||
|
|
||||||
var savedUser = await _userRoleRepository.AddAsync(saveItem);
|
var savedUser = await _identityUserRepository.AddAsync(saveItem);
|
||||||
|
|
||||||
//下面获取Token 需要这部分信息
|
//下面获取Token 需要这部分信息
|
||||||
sysUserInfo = savedUser.Clone();
|
sysUserInfo = savedUser.Clone();
|
||||||
|
|
||||||
sysUserInfo.UserTypeRole = userType;
|
|
||||||
|
|
||||||
await _userRoleRepository.SaveChangesAsync();
|
await _userRoleRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sysUserInfo = (await _userRoleRepository.Where(t => t.DoctorId == doctorId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
|
sysUserInfo = (await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.DoctorId == doctorId)).Include(t => t.UserRoleList).FirstOrDefaultAsync()).IfNullThrowException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -620,14 +618,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var token = _tokenService.GetToken(new UserTokenInfo() { UserRoleId = sysUserInfo.Id });
|
var token = _tokenService.GetToken(new UserTokenInfo() { IdentityUserId = sysUserInfo.Id });
|
||||||
|
|
||||||
if (sysUserInfo.IsFirstAdd)
|
if (sysUserInfo.IsFirstAdd)
|
||||||
{
|
{
|
||||||
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new UserRole() { 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 + "&UserType=" + userType.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
|
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&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"));
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
#region 医生基本信息
|
#region 医生基本信息
|
||||||
CreateMap<Doctor, SelectionReviewerDTO>()
|
CreateMap<Doctor, SelectionReviewerDTO>()
|
||||||
.ForMember(d => d.DoctorUserName, u => u.MapFrom(t => t.User.UserName));
|
.ForMember(d => d.DoctorUserName, u => u.MapFrom(t => t.UserRole.UserName));
|
||||||
CreateMap<Doctor, DoctorDTO>().IncludeMembers(t => t.Hospital).Include<Doctor, SelectionReviewerDTO>()
|
CreateMap<Doctor, DoctorDTO>().IncludeMembers(t => t.Hospital).Include<Doctor, SelectionReviewerDTO>()
|
||||||
.ForMember(d => d.AccountUserName, u => u.MapFrom(s => s.EnrollList.Where(t => t.DoctorUserId != null).Select(c => c.DoctorUser.UserName).FirstOrDefault()))
|
.ForMember(d => d.AccountUserName, u => u.MapFrom(s => s.EnrollList.Where(t => t.DoctorUserId != null).Select(c => c.DoctorUser.UserName).FirstOrDefault()))
|
||||||
.ForMember(d => d.Department, u => u.MapFrom(s => s.Department.Value))
|
.ForMember(d => d.Department, u => u.MapFrom(s => s.Department.Value))
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
||||||
[UnitOfWork]
|
[UnitOfWork]
|
||||||
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||||
public async Task<IResponseOutput> AddOrUpdateTrialExternalUser(TrialExternalUserAddAndSendEmail addOrEditTrialExternalUser)
|
public async Task<IResponseOutput> AddOrUpdateTrialExternalUser(TrialExternalUserAddAndSendEmail addOrEditTrialExternalUser)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -104,6 +104,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
addEntity.IsSystemUser = true;
|
addEntity.IsSystemUser = true;
|
||||||
addEntity.SystemUserId = existSysUser.Id;
|
addEntity.SystemUserId = existSysUser.Id;
|
||||||
|
|
||||||
|
if (!existSysUser.UserRoleList.Any(t => t.UserTypeId == addOrEditTrialExternalUser.UserTypeId))
|
||||||
|
{
|
||||||
|
var addRole = _mapper.Map<UserRole>(existSysUser);
|
||||||
|
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == addOrEditTrialExternalUser.UserTypeId).Select(t => t.UserTypeEnum).First();
|
||||||
|
addRole.UserTypeId = addOrEditTrialExternalUser.UserTypeId;
|
||||||
|
addRole.IsUserRoleDisabled = true;
|
||||||
|
existSysUser.UserRoleList.Add(addRole);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -241,7 +250,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
//New 省掉邀请流程
|
//New 省掉邀请流程
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
||||||
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||||
[UnitOfWork]
|
[UnitOfWork]
|
||||||
public async Task<IResponseOutput> SendExternalUserJoinEmail(TrialExternalUserSendEmail sendEmail)
|
public async Task<IResponseOutput> SendExternalUserJoinEmail(TrialExternalUserSendEmail sendEmail)
|
||||||
{
|
{
|
||||||
|
@ -254,9 +263,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var findTrialUser = await _trialIdentityUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, true);
|
var findTrialUser = await _trialIdentityUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, true);
|
||||||
|
|
||||||
var findUserRoleId = await _identityUserRepository.Where(t => t.Id == userId,true).SelectMany(t => t.UserRoleList).Where(t => t.UserTypeId == userTypeId).Select(t => t.Id).FirstOrDefaultAsync();
|
var findUserRoleId = await _identityUserRepository.Where(t => t.Id == userId, true).SelectMany(t => t.UserRoleList).Where(t => t.UserTypeId == userTypeId).Select(t => t.Id).FirstOrDefaultAsync();
|
||||||
|
|
||||||
if (findTrialUser == null || findUserRoleId==Guid.Empty)
|
if (findTrialUser == null || findUserRoleId == Guid.Empty)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("database dirty data ");
|
return ResponseOutput.NotOk("database dirty data ");
|
||||||
}
|
}
|
||||||
|
@ -264,10 +273,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var findTrialUserRole = await _trialUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserRole.IdentityUserId == userId && t.UserRole.UserTypeId == userTypeId, true);
|
var findTrialUserRole = await _trialUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserRole.IdentityUserId == userId && t.UserRole.UserTypeId == userTypeId, true);
|
||||||
|
|
||||||
if (findTrialUserRole==null)
|
if (findTrialUserRole == null)
|
||||||
{
|
{
|
||||||
|
|
||||||
await _trialUserRoleRepository.AddAsync(new TrialUserRole() { TrialId = trialId, TrialUserId=findTrialUser.Id, UserId = findUserRoleId, JoinTime = DateTime.Now });
|
await _trialUserRoleRepository.AddAsync(new TrialUserRole() { TrialId = trialId, TrialUserId = findTrialUser.Id, UserId = findUserRoleId, JoinTime = DateTime.Now });
|
||||||
|
|
||||||
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == userId, u => new UserRole() { Status = UserStateEnum.Enable });
|
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == userId, u => new UserRole() { Status = UserStateEnum.Enable });
|
||||||
|
|
||||||
|
@ -280,9 +289,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in sendEmail.SendUsers.GroupBy(t=>t.SystemUserId))
|
foreach (var item in sendEmail.SendUsers.GroupBy(t => t.SystemUserId))
|
||||||
{
|
{
|
||||||
await _mailVerificationService.ExternalUserJoinEmail(trialId, item.Key, sendEmail.BaseUrl, sendEmail.RouteUrl);
|
await _mailVerificationService.ExternalUserJoinEmail(trialId, item.Key, sendEmail.BaseUrl, sendEmail.RouteUrl);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -242,7 +242,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
Id = x.Id
|
Id = x.Id
|
||||||
}).ToList(),
|
}).ToList(),
|
||||||
|
|
||||||
ReadingTaskStateList = doctor.User.VisitTaskList.Where(x => x.TaskState == TaskState.Effect && x.TrialId == trialId).Select(x => new DoctorUserTask()
|
ReadingTaskStateList = intoGroup.DoctorUser.VisitTaskList.Where(x => x.TaskState == TaskState.Effect && x.TrialId == trialId).Select(x => new DoctorUserTask()
|
||||||
{
|
{
|
||||||
ReadingTaskState = x.ReadingTaskState,
|
ReadingTaskState = x.ReadingTaskState,
|
||||||
TrialReadingCriterionId = x.TrialReadingCriterionId,
|
TrialReadingCriterionId = x.TrialReadingCriterionId,
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class Doctor : BaseFullAuditEntity
|
||||||
public List<DoctorCriterionFile> CriterionFileList { get; set; }
|
public List<DoctorCriterionFile> CriterionFileList { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public UserRole User { get; set; }
|
public UserRole UserRole { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public bool AcceptingNewTrial { get; set; }
|
public bool AcceptingNewTrial { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue