修改登录逻辑
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
|
||||
if (loginUser.UserId != null && !string.IsNullOrEmpty(loginUser.MFACode) && _verifyConfig.CurrentValue.OpenLoginMFA)
|
||||
if (loginUser.UserId != null && _verifyConfig.CurrentValue.OpenLoginMFA)
|
||||
{
|
||||
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 };
|
||||
|
||||
|
|
|
@ -29,12 +29,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
{
|
||||
private readonly IEasyCachingProvider _provider;
|
||||
private readonly IRepository<SystemAnonymization> _systemAnonymizationRepository;
|
||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IOSSService _oSSService;
|
||||
private readonly IRepository<StudyMonitor> _studyMonitorRepository;
|
||||
private readonly IDistributedLockProvider _distributedLockProvider;
|
||||
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;
|
||||
|
||||
|
@ -44,6 +45,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
_studyMonitorRepository = studyMonitorRepository;
|
||||
_distributedLockProvider = distributedLockProvider;
|
||||
_provider = provider;
|
||||
_visitTaskRepository = visitTaskRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -52,9 +54,39 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
/// 根据当前受试者该标准已阅任务数量(生效失效的任务都算,考虑重阅,最后编号不重复) 第一个就是TimePoint Ran1,后面依次随机挑选出来的阅片序号依次递增
|
||||
/// </summary>
|
||||
/// <param name="subjectId"></param>
|
||||
/// <param name="trialReadingCriterionId"></param>
|
||||
/// <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();
|
||||
}
|
||||
|
||||
|
@ -62,10 +94,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
/// 获取该受试者任务上传列表(展示已上传情况)
|
||||
/// </summary>
|
||||
/// <param name="subjectId"></param>
|
||||
/// <param name="trialReadingCriterionId"></param>
|
||||
/// <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()
|
||||
{
|
||||
VisitTaskId = u.Id,
|
||||
|
@ -76,11 +109,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
|
||||
TrialSiteId = u.Subject.TrialSiteId,
|
||||
|
||||
IsImageFilter=u.TrialReadingCriterion.IsImageFilter,
|
||||
IsImageFilter = u.TrialReadingCriterion.IsImageFilter,
|
||||
|
||||
CriterionModalitys= u.TrialReadingCriterion.CriterionModalitys,
|
||||
CriterionModalitys = u.TrialReadingCriterion.CriterionModalitys,
|
||||
|
||||
SubjectCode = u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code ,
|
||||
SubjectCode = u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code,
|
||||
TaskBlindName = u.TaskBlindName,
|
||||
TaskName = u.TaskName,
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ namespace IRaCIS.Application.Contracts
|
|||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
public Guid? UserId { get; set; }
|
||||
public string MFACode { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class LoginReturnDTO
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace IRaCIS.Application.Services
|
|||
Task<IResponseOutput> VerifyMFACodeAsync(Guid userId, string Code);
|
||||
|
||||
Task<IResponseOutput> SendMFAEmail(Guid userId);
|
||||
Task<UserBasicInfo> GetUserBasicInfo(Guid userId);
|
||||
Task<UserBasicInfo> GetUserBasicInfo(Guid userId,string pwd);
|
||||
Task<IResponseOutput> ModifyPassword(EditPasswordCommand editPwModel);
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue