修改登录逻辑
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
f324d207dd
commit
c49cf0ed12
|
@ -108,15 +108,16 @@ namespace IRaCIS.Api.Controllers
|
||||||
{
|
{
|
||||||
|
|
||||||
//MFA 邮箱验证 前端传递用户Id 和MFACode
|
//MFA 邮箱验证 前端传递用户Id 和MFACode
|
||||||
if (loginUser.UserId != null && !string.IsNullOrEmpty(loginUser.MFACode) && _verifyConfig.CurrentValue.OpenLoginMFA)
|
if (loginUser.UserId != null && _verifyConfig.CurrentValue.OpenLoginMFA)
|
||||||
{
|
{
|
||||||
Guid userId = (Guid)loginUser.UserId;
|
Guid userId = (Guid)loginUser.UserId;
|
||||||
|
|
||||||
//验证MFA 编码是否有问题
|
//验证MFA 编码是否有问题 ,前端要拆开,自己调用验证的逻辑
|
||||||
|
//await _userService.VerifyMFACodeAsync(userId, loginUser.MFACode);
|
||||||
|
|
||||||
await _userService.VerifyMFACodeAsync(userId, loginUser.MFACode);
|
//var loginUser = await _userRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
||||||
|
|
||||||
var basicInfo = await _userService.GetUserBasicInfo(userId);
|
var basicInfo = await _userService.GetUserBasicInfo(userId, loginUser.Password);
|
||||||
|
|
||||||
var loginReturn = new LoginReturnDTO() { BasicInfo = basicInfo };
|
var loginReturn = new LoginReturnDTO() { BasicInfo = basicInfo };
|
||||||
|
|
||||||
|
|
|
@ -29,12 +29,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
{
|
{
|
||||||
private readonly IEasyCachingProvider _provider;
|
private readonly IEasyCachingProvider _provider;
|
||||||
private readonly IRepository<SystemAnonymization> _systemAnonymizationRepository;
|
private readonly IRepository<SystemAnonymization> _systemAnonymizationRepository;
|
||||||
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
private readonly IOSSService _oSSService;
|
private readonly IOSSService _oSSService;
|
||||||
private readonly IRepository<StudyMonitor> _studyMonitorRepository;
|
private readonly IRepository<StudyMonitor> _studyMonitorRepository;
|
||||||
private readonly IDistributedLockProvider _distributedLockProvider;
|
private readonly IDistributedLockProvider _distributedLockProvider;
|
||||||
public DownloadAndUploadService(IEasyCachingProvider provider, IRepository<SystemAnonymization> systemAnonymizationRepository, IRepository<SubjectVisit> subjectVisitRepository, IOSSService oSSService,
|
public DownloadAndUploadService(IEasyCachingProvider provider, IRepository<SystemAnonymization> systemAnonymizationRepository, IRepository<SubjectVisit> subjectVisitRepository, IOSSService oSSService,
|
||||||
IRepository<StudyMonitor> studyMonitorRepository, IDistributedLockProvider distributedLockProvider)
|
IRepository<StudyMonitor> studyMonitorRepository, IDistributedLockProvider distributedLockProvider, IRepository<VisitTask> visitTaskRepository)
|
||||||
{
|
{
|
||||||
_systemAnonymizationRepository = systemAnonymizationRepository;
|
_systemAnonymizationRepository = systemAnonymizationRepository;
|
||||||
|
|
||||||
|
@ -44,6 +45,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
_studyMonitorRepository = studyMonitorRepository;
|
_studyMonitorRepository = studyMonitorRepository;
|
||||||
_distributedLockProvider = distributedLockProvider;
|
_distributedLockProvider = distributedLockProvider;
|
||||||
_provider = provider;
|
_provider = provider;
|
||||||
|
_visitTaskRepository = visitTaskRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -52,9 +54,39 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
/// 根据当前受试者该标准已阅任务数量(生效失效的任务都算,考虑重阅,最后编号不重复) 第一个就是TimePoint Ran1,后面依次随机挑选出来的阅片序号依次递增
|
/// 根据当前受试者该标准已阅任务数量(生效失效的任务都算,考虑重阅,最后编号不重复) 第一个就是TimePoint Ran1,后面依次随机挑选出来的阅片序号依次递增
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="subjectId"></param>
|
/// <param name="subjectId"></param>
|
||||||
|
/// <param name="trialReadingCriterionId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<IResponseOutput> SubejctRandomReadingTaskNameDeal(Guid subjectId)
|
public async Task<IResponseOutput> SubejctRandomReadingTaskNameDeal(Guid subjectId, Guid trialReadingCriterionId)
|
||||||
{
|
{
|
||||||
|
//subject 随机阅片 才处理任务编号
|
||||||
|
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom))
|
||||||
|
{
|
||||||
|
//找到 非一致性分析,未签名,状态正常的 并且任务名称不是TimePoint的 任务
|
||||||
|
var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false
|
||||||
|
&& t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskBlindName != "Timepoint" && t.ReadingCategory == ReadingCategory.Visit
|
||||||
|
&& (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze), true).ToListAsync();
|
||||||
|
|
||||||
|
if (needDealTaskList.Count>0)
|
||||||
|
{
|
||||||
|
//已完成的访视任务数量(包含重阅的)
|
||||||
|
var haveFinishedTaskCount = await _visitTaskRepository.CountAsync(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false
|
||||||
|
&& t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit);
|
||||||
|
|
||||||
|
//随机赋值编号 比如要处理5个任务,实例化一个包含1-5的数组,每次随机取出一个
|
||||||
|
|
||||||
|
List<int> availableNumbers = Enumerable.Range(haveFinishedTaskCount + 1, needDealTaskList.Count).ToList();
|
||||||
|
Random rng = new Random();
|
||||||
|
foreach (var visitTask in needDealTaskList)
|
||||||
|
{
|
||||||
|
int randomIndex = rng.Next(availableNumbers.Count);
|
||||||
|
|
||||||
|
visitTask.TaskBlindName = $"Timepoint Ran {availableNumbers[randomIndex]}";
|
||||||
|
|
||||||
|
availableNumbers.RemoveAt(randomIndex);
|
||||||
|
}
|
||||||
|
await _visitTaskRepository.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,10 +94,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
/// 获取该受试者任务上传列表(展示已上传情况)
|
/// 获取该受试者任务上传列表(展示已上传情况)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="subjectId"></param>
|
/// <param name="subjectId"></param>
|
||||||
|
/// <param name="trialReadingCriterionId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<IResponseOutput<List<SubjectImageUploadDTO>>> GetSubjectImageUploadList(Guid subjectId)
|
public async Task<IResponseOutput<List<SubjectImageUploadDTO>>> GetSubjectImageUploadList(Guid subjectId,Guid trialReadingCriterionId)
|
||||||
{
|
{
|
||||||
var query = _repository.Where<VisitTask>(t => t.SubjectId == subjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id)
|
var query = _repository.Where<VisitTask>(t => t.SubjectId == subjectId &&t.TrialReadingCriterionId== trialReadingCriterionId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id)
|
||||||
.Select(u => new SubjectImageUploadDTO()
|
.Select(u => new SubjectImageUploadDTO()
|
||||||
{
|
{
|
||||||
VisitTaskId = u.Id,
|
VisitTaskId = u.Id,
|
||||||
|
|
|
@ -23,7 +23,6 @@ namespace IRaCIS.Application.Contracts
|
||||||
public string Password { get; set; } = string.Empty;
|
public string Password { get; set; } = string.Empty;
|
||||||
|
|
||||||
public Guid? UserId { get; set; }
|
public Guid? UserId { get; set; }
|
||||||
public string MFACode { get; set; } = string.Empty;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LoginReturnDTO
|
public class LoginReturnDTO
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace IRaCIS.Application.Services
|
||||||
Task<IResponseOutput> VerifyMFACodeAsync(Guid userId, string Code);
|
Task<IResponseOutput> VerifyMFACodeAsync(Guid userId, string Code);
|
||||||
|
|
||||||
Task<IResponseOutput> SendMFAEmail(Guid userId);
|
Task<IResponseOutput> SendMFAEmail(Guid userId);
|
||||||
Task<UserBasicInfo> GetUserBasicInfo(Guid userId);
|
Task<UserBasicInfo> GetUserBasicInfo(Guid userId,string pwd);
|
||||||
Task<IResponseOutput> ModifyPassword(EditPasswordCommand editPwModel);
|
Task<IResponseOutput> ModifyPassword(EditPasswordCommand editPwModel);
|
||||||
Task<IResponseOutput> ResetPassword(Guid userId);
|
Task<IResponseOutput> ResetPassword(Guid userId);
|
||||||
|
|
||||||
|
|
|
@ -642,9 +642,9 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<UserBasicInfo> GetUserBasicInfo(Guid userId)
|
public async Task<UserBasicInfo> GetUserBasicInfo(Guid userId, string pwd)
|
||||||
{
|
{
|
||||||
var info = await _userRepository.Where(u => u.Id == userId).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
var info = await _userRepository.Where(u => u.Id == userId && u.Password==pwd).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue