正式用户 非正式用户代码修改
parent
75c598c912
commit
caa573551e
|
@ -20,6 +20,8 @@ namespace IRaCIS.Core.Application.Auth
|
|||
|
||||
public int IsAdmin { get; }
|
||||
|
||||
public bool IsTestUser { get; set; }
|
||||
|
||||
public string Phone { get; set; } = String.Empty;
|
||||
|
||||
public static IRaCISClaims Create(UserBasicInfo user)
|
||||
|
@ -31,6 +33,7 @@ namespace IRaCIS.Core.Application.Auth
|
|||
RealName = user.RealName,
|
||||
UserTypeEnum=user.UserTypeEnum,
|
||||
UserTypeId=user.UserTypeId,
|
||||
IsTestUser=user.IsTestUser,
|
||||
Code = user.Code,
|
||||
PermissionStr = user.PermissionStr,
|
||||
|
||||
|
|
|
@ -35,7 +35,9 @@ namespace IRaCIS.Core.Application.Auth
|
|||
new Claim(JwtIRaCISClaimType.UserTypeEnum,user.UserTypeEnum.ToString()),
|
||||
new Claim(JwtIRaCISClaimType.UserTypeEnumInt,((int)user.UserTypeEnum).ToString()),
|
||||
new Claim(JwtIRaCISClaimType.UserTypeShortName,user.UserTypeShortName),
|
||||
new Claim(JwtIRaCISClaimType.PermissionStr,user.PermissionStr)
|
||||
new Claim(JwtIRaCISClaimType.PermissionStr,user.PermissionStr),
|
||||
|
||||
new Claim(JwtIRaCISClaimType.IsTestUser,user.IsTestUser.ToString())
|
||||
};
|
||||
|
||||
////创建令牌
|
||||
|
|
|
@ -3888,6 +3888,11 @@
|
|||
问题标识
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionTrialAddOrEdit.QuestionEnName">
|
||||
<summary>
|
||||
问题英文名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionSystemAddOrEdit">
|
||||
<summary> ReadingTableQuestionSystemAddOrEdit 列表查询参数模型</summary>
|
||||
</member>
|
||||
|
@ -3931,6 +3936,11 @@
|
|||
问题标识
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionSystemAddOrEdit.QuestionEnName">
|
||||
<summary>
|
||||
问题英文名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingCriterionPageQuery.PageName">
|
||||
<summary> PageName</summary>
|
||||
</member>
|
||||
|
@ -4209,6 +4219,16 @@
|
|||
数据来源
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.QuestionEnName">
|
||||
<summary>
|
||||
问题英文名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.GroupEnName">
|
||||
<summary>
|
||||
问题英文分组
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.ValueType">
|
||||
<summary>
|
||||
数值类型
|
||||
|
@ -4349,6 +4369,16 @@
|
|||
序号标记
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.QuestionEnName">
|
||||
<summary>
|
||||
问题英文名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.GroupEnName">
|
||||
<summary>
|
||||
问题英文分组
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.CalculateRelationDto.CustomCalculateMark">
|
||||
<summary>
|
||||
自定义计算标记
|
||||
|
@ -4634,6 +4664,16 @@
|
|||
序号标记
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.QuestionEnName">
|
||||
<summary>
|
||||
问题英文名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.GroupEnName">
|
||||
<summary>
|
||||
问题英文分组
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.Id">
|
||||
<summary>
|
||||
Id
|
||||
|
@ -4804,6 +4844,16 @@
|
|||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.QuestionEnName">
|
||||
<summary>
|
||||
问题英文名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.GroupEnName">
|
||||
<summary>
|
||||
问题英文分组
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetSystemCriterionSelectDto.Id">
|
||||
<summary>
|
||||
返回的对象
|
||||
|
|
|
@ -529,6 +529,14 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
var saveItem = new User() { FirstName = doctor.FirstName, LastName = doctor.LastName, EMail = doctor.EMail };
|
||||
|
||||
var trialType = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefaultAsync();
|
||||
|
||||
if (trialType == TrialType.NoneOfficial)
|
||||
{
|
||||
saveItem.IsTestUser = true;
|
||||
}
|
||||
|
||||
|
||||
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User));
|
||||
|
|
|
@ -39,6 +39,8 @@ namespace IRaCIS.Application.Contracts
|
|||
|
||||
public UserTypeEnum UserTypeEnum { get; set; }
|
||||
|
||||
|
||||
public bool IsTestUser { get; set; }
|
||||
public bool IsAdmin { get; set; } = false;
|
||||
public string UserTypeShortName { get; set; } = string.Empty;
|
||||
public bool PasswordChanged { get; set; }
|
||||
|
@ -145,6 +147,8 @@ namespace IRaCIS.Application.Contracts
|
|||
|
||||
public string DepartmentName { get; set; } = String.Empty;
|
||||
public string PositionName { get; set; } = String.Empty;
|
||||
|
||||
public bool IsTestUser { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -695,7 +695,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
//await SendInviteEmail(new InviteEmailCommand() { TrialId = trialId, RouteUrl = siteSurvyeSubmit.RouteUrl, UserList = needGenerateList });
|
||||
|
||||
|
||||
await GenerateAccountAsync(needGenerateList);
|
||||
await GenerateAccountAsync(needGenerateList,trialId);
|
||||
await SendSiteSurveyUserJoinEmail(new TrialSiteUserSurveyJoinCommand() { TrialId = trialId, TrialSiteSurveyId = trialSiteSurveyId, RouteUrl = siteSurvyeSubmit.RouteUrl, BaseUrl = siteSurvyeSubmit.BaseUrl, UserList = needGenerateList });
|
||||
|
||||
|
||||
|
@ -706,7 +706,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
|
||||
|
||||
private async Task GenerateAccountAsync(List<TrialSiteUserSurveyView> needGenerateList)
|
||||
private async Task GenerateAccountAsync(List<TrialSiteUserSurveyView> needGenerateList,Guid trialId)
|
||||
{
|
||||
foreach (var item in needGenerateList)
|
||||
{
|
||||
|
@ -722,6 +722,13 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
{
|
||||
var saveItem = _mapper.Map<User>(item);
|
||||
|
||||
var trialType = _repository.Where<Trial>(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
|
||||
|
||||
if (trialType == TrialType.NoneOfficial)
|
||||
{
|
||||
saveItem.IsTestUser = true;
|
||||
}
|
||||
|
||||
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User));
|
||||
|
|
|
@ -110,10 +110,17 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
else
|
||||
{
|
||||
var trialType = await _repository.Where<Trial>(t => t.Id == addOrEditTrialExternalUser.TrialId).Select(t => t.TrialType).FirstOrDefaultAsync();
|
||||
|
||||
//生成账户 并插入
|
||||
|
||||
var generateUser = _mapper.Map<User>(addOrEditTrialExternalUser);
|
||||
|
||||
if (trialType == TrialType.NoneOfficial)
|
||||
{
|
||||
generateUser.IsTestUser = true;
|
||||
}
|
||||
|
||||
generateUser.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
|
||||
|
|
|
@ -105,15 +105,21 @@ namespace IRaCIS.Application.Services
|
|||
[HttpPost]
|
||||
public async Task<PageOutput<TrialUserScreeningDTO>> GetTrialUserScreeningList(TrialUserQuery trialUserQuery)
|
||||
{
|
||||
var trialType = _trialRepository.Where(t => t.Id == trialUserQuery.TrialId).Select(t => t.TrialType).FirstOrDefault();
|
||||
|
||||
//之前已经选择的用户 不放在列表中,现在又要改回去 废弃
|
||||
var query = _repository.Where<User>(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(trialUserQuery.UserRealName), t => (t.FullName).Contains(trialUserQuery.UserRealName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(trialUserQuery.UserName), t => t.UserName.Contains(trialUserQuery.UserName))
|
||||
|
||||
//正式或者培训的项目不能允许测试用户
|
||||
.WhereIf( trialType==TrialType.OfficialTrial||trialType==TrialType.Training, t => t.IsTestUser==false)
|
||||
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(trialUserQuery.UserRealName), t => (t.FullName).Contains(trialUserQuery.UserRealName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(trialUserQuery.UserName), t => t.UserName.Contains(trialUserQuery.UserName))
|
||||
//.WhereIf(!string.IsNullOrWhiteSpace(trialUserQuery.OrganizationName), t => t.OrganizationName.Contains(trialUserQuery.OrganizationName))
|
||||
.WhereIf(trialUserQuery.UserTypeEnum != null, t => t.UserTypeEnum == trialUserQuery.UserTypeEnum)
|
||||
.WhereIf(trialUserQuery.UserTypeEnum != null, t => t.UserTypeEnum == trialUserQuery.UserTypeEnum)
|
||||
//.WhereIf(_userInfo.IsAdmin, t => t.UserTypeRole.Type == UserTypeGroup.TrialUser)
|
||||
//.WhereIf(!_userInfo.IsAdmin, t => t.UserTypeRole.Type == UserTypeGroup.TrialUser || t.UserTypeEnum != UserTypeEnum.ProjectManager)
|
||||
.ProjectTo<TrialUserScreeningDTO>(_mapper.ConfigurationProvider, new { trialId = trialUserQuery.TrialId });
|
||||
.ProjectTo<TrialUserScreeningDTO>(_mapper.ConfigurationProvider, new { trialId = trialUserQuery.TrialId });
|
||||
|
||||
return await query.ToPagedListAsync(trialUserQuery.PageIndex,
|
||||
trialUserQuery.PageSize, string.IsNullOrWhiteSpace(trialUserQuery.SortField) ? "UserRealName" : trialUserQuery.SortField, trialUserQuery.Asc);
|
||||
|
|
|
@ -138,6 +138,12 @@ namespace IRaCIS.Application.Services
|
|||
throw new BusinessValidationFailedException("只有PM/APM拥有操作权限!");
|
||||
}
|
||||
|
||||
//测试用户 只能创建非正式项目
|
||||
if(_userInfo.IsTestUser && trialAddModel.TrialType != TrialType.NoneOfficial)
|
||||
{
|
||||
throw new BusinessValidationFailedException("测试用户 只能创建非正式项目");
|
||||
}
|
||||
|
||||
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
|
||||
{
|
||||
if (await _trialRepository.AnyAsync(u => u.TrialCode == trialAddModel.TrialCode))
|
||||
|
|
|
@ -105,6 +105,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
//await _visitTaskRepositoryy.UpdatePartialFromQueryAsync( Guid.Parse("78360000-3E2C-0016-9B53-08DA6A002040"), c => new VisitTask() { UpdateTime = DateTime.Now.AddMinutes(1) });
|
||||
|
||||
var a= _userInfo.IsTestUser;
|
||||
|
||||
var list1 = await _repository.Where<Dictionary>().Select(t => t.TranslateValue(t.Value, t.ValueCN,true)).ToListAsync();
|
||||
var list2 = await _repository.Where<Dictionary>().Select(t => t.TranslateValue(t.Value, t.ValueCN, false)).ToListAsync();
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
using EntityFrameworkCore.Triggered;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IRaCIS.Core.Application.Triggers
|
||||
{
|
||||
|
||||
// 统一处理 外部用户、中心调研、参与医生加入到项目
|
||||
public class AddlTrialUserTrigger : IBeforeSaveTrigger<TrialUser>
|
||||
|
||||
{
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IRepository<User> _userRepository;
|
||||
|
||||
public AddlTrialUserTrigger(IRepository<Trial> trialRepository, IRepository<User> userRepository)
|
||||
{
|
||||
_trialRepository = trialRepository;
|
||||
|
||||
_userRepository = userRepository;
|
||||
|
||||
}
|
||||
public async Task BeforeSave(ITriggerContext<TrialUser> context, CancellationToken cancellationToken)
|
||||
{
|
||||
var trialUser = context.Entity;
|
||||
|
||||
if (context.ChangeType == ChangeType.Added)
|
||||
{
|
||||
//批量添加的时候,使用Find 不会多次查询,优先从跟踪的内存中查找
|
||||
var trialInfo = await _trialRepository.FindAsync(trialUser.TrialId);
|
||||
|
||||
if(trialInfo.TrialType==Domain.Share.TrialType.OfficialTrial || trialInfo.TrialType == Domain.Share.TrialType.Training )
|
||||
{
|
||||
// 必须包在同一个事务,有的时候是数据库还没用户,不能直接查询数据库
|
||||
var user = await _userRepository.FindAsync(trialUser.UserId);
|
||||
|
||||
if (user.IsTestUser)
|
||||
{
|
||||
throw new BusinessValidationFailedException("正式类型 、培训类型的项目 不允许加入测试用户 ");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -25,6 +25,8 @@ namespace IRaCIS.Core.Domain.Share
|
|||
|
||||
bool IsAdmin { get; }
|
||||
|
||||
bool IsTestUser { get; }
|
||||
|
||||
string UserTypeShortName { get; }
|
||||
|
||||
string UserTypeEnumStr { get; }
|
||||
|
|
|
@ -154,6 +154,20 @@ namespace IRaCIS.Core.Domain.Share
|
|||
}
|
||||
}
|
||||
|
||||
public bool IsTestUser
|
||||
{
|
||||
get
|
||||
{
|
||||
var isTestUserClaime = _accessor?.HttpContext?.User?.FindFirst(JwtIRaCISClaimType.IsTestUser);
|
||||
|
||||
if (isTestUserClaime != null && !string.IsNullOrEmpty(isTestUserClaime.Value))
|
||||
{
|
||||
return bool.Parse(isTestUserClaime.Value);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public string UserToken
|
||||
{
|
||||
get
|
||||
|
@ -304,6 +318,8 @@ namespace IRaCIS.Core.Domain.Share
|
|||
public const string UserTypeShortName = "userTypeShortName";
|
||||
public const string IsAdmin = "isAdmin";
|
||||
|
||||
public const string IsTestUser = "isTestUser";
|
||||
|
||||
public const string PermissionStr = "permissionStr";
|
||||
|
||||
|
||||
|
|
|
@ -77,6 +77,9 @@ namespace IRaCIS.Core.Domain.Models
|
|||
//医生生成账号后,会有值
|
||||
public Guid? DoctorId { get; set; }
|
||||
|
||||
|
||||
public bool IsTestUser { get; set; }
|
||||
|
||||
[Projectable] public string FullName => LastName + " / " + FirstName;
|
||||
|
||||
//[Projectable] public string FullName => $"{LastName} / {FirstName}";
|
||||
|
|
Loading…
Reference in New Issue