|
|
|
@@ -17,6 +17,7 @@ using Org.BouncyCastle.Utilities.Encoders;
|
|
|
|
|
using Panda.DynamicWebApi.Attributes;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using ZiggyCreatures.Caching.Fusion;
|
|
|
|
|
|
|
|
|
|
using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO;
|
|
|
|
|
|
|
|
|
|
namespace IRaCIS.Core.Application.Service
|
|
|
|
@@ -32,6 +33,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
IRepository<Trial> _trialRepository,
|
|
|
|
|
IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig,
|
|
|
|
|
IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig,
|
|
|
|
|
IRepository<IdentityUser> _identityUserRepository,
|
|
|
|
|
|
|
|
|
|
ISearcher _searcher, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IUserService
|
|
|
|
|
{
|
|
|
|
@@ -40,7 +42,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
private async Task VerifyUserNameAsync(Guid? identityUserId, string userName)
|
|
|
|
|
{
|
|
|
|
|
if (await _userRepository.WhereIf(identityUserId != null, t => t.IdentityUserId != identityUserId).AnyAsync(t => t.UserName == userName))
|
|
|
|
|
if (await _identityUserRepository.WhereIf(identityUserId != null, t => t.Id != identityUserId).AnyAsync(t => t.UserName == userName))
|
|
|
|
|
{
|
|
|
|
|
//---用户名已经存在。
|
|
|
|
|
throw new BusinessValidationFailedException(_localizer["User_UsernameExist"]);
|
|
|
|
@@ -49,7 +51,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
private async Task VerifyUserPhoneAsync(Guid? identityUserId, string phone)
|
|
|
|
|
{
|
|
|
|
|
if (await _userRepository.WhereIf(identityUserId != null, t => t.IdentityUserId != identityUserId).AnyAsync(t => (t.Phone == phone)))
|
|
|
|
|
if (await _identityUserRepository.WhereIf(identityUserId != null, t => t.Id != identityUserId).AnyAsync(t => (t.Phone == phone)))
|
|
|
|
|
{
|
|
|
|
|
//---该用户类型中已存在具有相同的电话的用户。
|
|
|
|
|
throw new BusinessValidationFailedException(_localizer["User_PhoneDup"]);
|
|
|
|
@@ -59,7 +61,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
private async Task VerifyUserEmailAsync(Guid? identityUserId, string email)
|
|
|
|
|
{
|
|
|
|
|
if (await _userRepository.WhereIf(identityUserId != null, t => t.IdentityUserId != identityUserId).AnyAsync(t => t.EMail == email))
|
|
|
|
|
if (await _identityUserRepository.WhereIf(identityUserId != null, t => t.Id != identityUserId).AnyAsync(t => t.EMail == email))
|
|
|
|
|
{
|
|
|
|
|
//---该用户类型中已存在具有相同邮箱的用户。
|
|
|
|
|
throw new BusinessValidationFailedException(_localizer["User_EmailDup"]);
|
|
|
|
@@ -79,7 +81,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dbUser = (await _userRepository.Where(t => t.IdentityUserId == identityUserId).FirstOrDefaultAsync()).IfNullThrowException();
|
|
|
|
|
var dbUser = (await _identityUserRepository.Where(t => t.Id == identityUserId).FirstOrDefaultAsync()).IfNullThrowException();
|
|
|
|
|
|
|
|
|
|
if (oldPwd != null && dbUser.Password != oldPwd)
|
|
|
|
|
{
|
|
|
|
@@ -104,7 +106,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
if (oldPwd == null)
|
|
|
|
|
{
|
|
|
|
|
oldPwd = await _userRepository.Where(x => x.IdentityUserId == identityUserId).Select(x => x.Password).FirstOrDefaultAsync();
|
|
|
|
|
oldPwd = await _identityUserRepository.Where(x => x.Id == identityUserId).Select(x => x.Password).FirstOrDefaultAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (oldPwd.IsNotNullOrEmpty())
|
|
|
|
@@ -118,7 +120,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(x => x.IdentityUserId == identityUserId, x => new User()
|
|
|
|
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == identityUserId, x => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
LastChangePassWordTime = DateTime.Now,
|
|
|
|
|
});
|
|
|
|
@@ -192,7 +194,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
await VerifyUserEmailAsync(_userInfo.IdentityUserId, newEmail);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new User()
|
|
|
|
|
await _identityUserRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
EMail = newEmail
|
|
|
|
|
});
|
|
|
|
@@ -215,7 +217,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
await VerifyUserPhoneAsync(_userInfo.IdentityUserId, newPhone);
|
|
|
|
|
|
|
|
|
|
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new User()
|
|
|
|
|
await _identityUserRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
Phone = newPhone
|
|
|
|
|
});
|
|
|
|
@@ -232,7 +234,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
await VerifyUserNameAsync(_userInfo.IdentityUserId, newUserName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new User()
|
|
|
|
|
await _identityUserRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
UserName = newUserName
|
|
|
|
|
});
|
|
|
|
@@ -253,7 +255,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
await VerifyUserNameAsync(_userInfo.IdentityUserId, newUserName);
|
|
|
|
|
|
|
|
|
|
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new User()
|
|
|
|
|
await _identityUserRepository.UpdatePartialFromQueryAsync(_userInfo.IdentityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
UserName = newUserName,
|
|
|
|
|
|
|
|
|
@@ -286,13 +288,13 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
await _mailVerificationService.AdminResetPwdSendEmailAsync(identityUserId, pwd);
|
|
|
|
|
|
|
|
|
|
await _userRepository.UpdatePartialFromQueryAsync(t => t.IdentityUserId == identityUserId, u => new User()
|
|
|
|
|
await _identityUserRepository.UpdatePartialFromQueryAsync(t => t.Id == identityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
Password = MD5Helper.Md5(pwd),
|
|
|
|
|
IsFirstAdd = true
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var userName = _userRepository.Where(t => t.IdentityUserId == identityUserId).Select(t => t.UserName).FirstOrDefault();
|
|
|
|
|
var userName = _identityUserRepository.Where(t => t.Id == identityUserId).Select(t => t.UserName).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
await _fusionCache.RemoveAsync(CacheKeys.UserLoginError(userName));
|
|
|
|
|
|
|
|
|
@@ -323,7 +325,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
////查找改邮箱或者手机的用户
|
|
|
|
|
var exist = await _userRepository.AnyAsync(t => t.EMail == email);
|
|
|
|
|
var exist = await _identityUserRepository.AnyAsync(t => t.EMail == email);
|
|
|
|
|
|
|
|
|
|
if (!exist)
|
|
|
|
|
{
|
|
|
|
@@ -380,7 +382,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var list = await _userRepository.Where(t => t.EMail == email && t.Status == UserStateEnum.Enable).Select(t => new UserAccountDto() { UserId = t.Id, UserName = t.UserName, UserRealName = t.FullName, UserType = t.UserTypeRole.UserTypeShortName }).ToListAsync();
|
|
|
|
|
var list = await _identityUserRepository.Where(t => t.EMail == email && t.Status == UserStateEnum.Enable).Select(t => new UserAccountDto() { UserId = t.Id, UserName = t.UserName, UserRealName = t.FullName }).ToListAsync();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -402,7 +404,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
await VerifyUserPwdAsync(identityUserId, newPwd);
|
|
|
|
|
|
|
|
|
|
var success = await _userRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == identityUserId, u => new User()
|
|
|
|
|
var success = await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == identityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
Password = newPwd,
|
|
|
|
|
IsFirstAdd = false
|
|
|
|
@@ -431,14 +433,14 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
await VerifyUserNameAsync(_userInfo.Id, editPwModel.NewUserName);
|
|
|
|
|
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == _userInfo.IdentityUserId, u => new User()
|
|
|
|
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.IdentityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
UserName = editPwModel.NewUserName,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var success = await _userRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == _userInfo.IdentityUserId, u => new User()
|
|
|
|
|
var success = await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.IdentityUserId, u => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
Password = editPwModel.NewPassWord,
|
|
|
|
|
IsFirstAdd = false
|
|
|
|
@@ -462,45 +464,63 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery)
|
|
|
|
|
{
|
|
|
|
|
var userQueryable = _userRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.RealName), t => t.FullName.Contains(inQuery.RealName))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.OrganizationName.Contains(inQuery.OrganizationName))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.EMail), t => t.EMail.Contains(inQuery.EMail))
|
|
|
|
|
.WhereIf(inQuery.BeginCreateTime != null, t => t.CreateTime >= inQuery.BeginCreateTime)
|
|
|
|
|
.WhereIf(inQuery.EndCreateTime != null, t => t.CreateTime <= inQuery.EndCreateTime)
|
|
|
|
|
.WhereIf(inQuery.BeginLastLoginTime != null, t => t.LastLoginTime >= inQuery.BeginLastLoginTime)
|
|
|
|
|
.WhereIf(inQuery.EndLastLoginTime != null, t => t.LastLoginTime <= inQuery.EndLastLoginTime)
|
|
|
|
|
.WhereIf(inQuery.UserType != null, t => t.UserTypeId == inQuery.UserType)
|
|
|
|
|
.WhereIf(inQuery.UserState != null, t => t.Status == inQuery.UserState)
|
|
|
|
|
.WhereIf(inQuery.IsTestUser != null, t => t.IsTestUser == inQuery.IsTestUser)
|
|
|
|
|
.WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
|
|
|
|
.GroupBy(t => t.IdentityUserId).Select(g => new UserListDTO()
|
|
|
|
|
{
|
|
|
|
|
IdentityUserId = g.Key,
|
|
|
|
|
UserRoleList = g.Select(c => new UserAddUserType()
|
|
|
|
|
{
|
|
|
|
|
UserTypeEnum = c.UserTypeEnum,
|
|
|
|
|
UserTypeId = c.UserTypeId,
|
|
|
|
|
}).ToList(),
|
|
|
|
|
|
|
|
|
|
UserCode = g.FirstOrDefault().UserCode,
|
|
|
|
|
DepartmentName = g.FirstOrDefault().DepartmentName,
|
|
|
|
|
CreateTime = g.FirstOrDefault().CreateTime,
|
|
|
|
|
EMail = g.FirstOrDefault().EMail,
|
|
|
|
|
FirstName = g.FirstOrDefault().FirstName,
|
|
|
|
|
IsTestUser = g.FirstOrDefault().IsTestUser,
|
|
|
|
|
IsZhiZhun = g.FirstOrDefault().IsZhiZhun,
|
|
|
|
|
LastName = g.FirstOrDefault().LastName,
|
|
|
|
|
OrganizationName = g.FirstOrDefault().OrganizationName,
|
|
|
|
|
FullName = g.FirstOrDefault().FullName,
|
|
|
|
|
Phone = g.FirstOrDefault().Phone,
|
|
|
|
|
PositionName = g.FirstOrDefault().PositionName,
|
|
|
|
|
Sex = g.FirstOrDefault().Sex,
|
|
|
|
|
Status = g.FirstOrDefault().Status,
|
|
|
|
|
UserName = g.FirstOrDefault().UserName,
|
|
|
|
|
});
|
|
|
|
|
var userQueryable = _identityUserRepository.Where(x => x.UserRoleList.Any(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.RealName), t => t.FullName.Contains(inQuery.RealName))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.OrganizationName.Contains(inQuery.OrganizationName))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.EMail), t => t.EMail.Contains(inQuery.EMail))
|
|
|
|
|
.WhereIf(inQuery.BeginCreateTime != null, t => t.CreateTime >= inQuery.BeginCreateTime)
|
|
|
|
|
.WhereIf(inQuery.EndCreateTime != null, t => t.CreateTime <= inQuery.EndCreateTime)
|
|
|
|
|
.WhereIf(inQuery.BeginLastLoginTime != null, t => t.LastLoginTime >= inQuery.BeginLastLoginTime)
|
|
|
|
|
.WhereIf(inQuery.EndLastLoginTime != null, t => t.LastLoginTime <= inQuery.EndLastLoginTime)
|
|
|
|
|
.WhereIf(inQuery.UserType != null, t => t.UserRoleList.Any(t => t.UserTypeId == inQuery.UserType))
|
|
|
|
|
.WhereIf(inQuery.UserState != null, t => t.Status == inQuery.UserState)
|
|
|
|
|
.WhereIf(inQuery.IsTestUser != null, t => t.IsTestUser == inQuery.IsTestUser)
|
|
|
|
|
.WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
|
|
|
|
.ProjectTo<UserListDTO>(_mapper.ConfigurationProvider);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//var userQueryable = _identityUserRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
|
|
|
|
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
|
|
|
|
|
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.RealName), t => t.FullName.Contains(inQuery.RealName))
|
|
|
|
|
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone))
|
|
|
|
|
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.OrganizationName.Contains(inQuery.OrganizationName))
|
|
|
|
|
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.EMail), t => t.EMail.Contains(inQuery.EMail))
|
|
|
|
|
// .WhereIf(inQuery.BeginCreateTime != null, t => t.CreateTime >= inQuery.BeginCreateTime)
|
|
|
|
|
// .WhereIf(inQuery.EndCreateTime != null, t => t.CreateTime <= inQuery.EndCreateTime)
|
|
|
|
|
// .WhereIf(inQuery.BeginLastLoginTime != null, t => t.LastLoginTime >= inQuery.BeginLastLoginTime)
|
|
|
|
|
// .WhereIf(inQuery.EndLastLoginTime != null, t => t.LastLoginTime <= inQuery.EndLastLoginTime)
|
|
|
|
|
// .WhereIf(inQuery.UserType != null, t => t.UserTypeId == inQuery.UserType)
|
|
|
|
|
// .WhereIf(inQuery.UserState != null, t => t.Status == inQuery.UserState)
|
|
|
|
|
// .WhereIf(inQuery.IsTestUser != null, t => t.IsTestUser == inQuery.IsTestUser)
|
|
|
|
|
// .WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
|
|
|
|
// .GroupBy(t => t.IdentityUserId).Select(g => new UserListDTO()
|
|
|
|
|
// {
|
|
|
|
|
// IdentityUserId = g.Key,
|
|
|
|
|
// UserRoleList = g.Select(c => new UserAddUserType()
|
|
|
|
|
// {
|
|
|
|
|
// UserTypeEnum = c.UserTypeEnum,
|
|
|
|
|
// UserTypeId = c.UserTypeId,
|
|
|
|
|
// }).ToList(),
|
|
|
|
|
|
|
|
|
|
// UserCode = g.FirstOrDefault().UserCode,
|
|
|
|
|
// DepartmentName = g.FirstOrDefault().DepartmentName,
|
|
|
|
|
// CreateTime = g.FirstOrDefault().CreateTime,
|
|
|
|
|
// EMail = g.FirstOrDefault().EMail,
|
|
|
|
|
// FirstName = g.FirstOrDefault().FirstName,
|
|
|
|
|
// IsTestUser = g.FirstOrDefault().IsTestUser,
|
|
|
|
|
// IsZhiZhun = g.FirstOrDefault().IsZhiZhun,
|
|
|
|
|
// LastName = g.FirstOrDefault().LastName,
|
|
|
|
|
// OrganizationName = g.FirstOrDefault().OrganizationName,
|
|
|
|
|
// FullName = g.FirstOrDefault().FullName,
|
|
|
|
|
// Phone = g.FirstOrDefault().Phone,
|
|
|
|
|
// PositionName = g.FirstOrDefault().PositionName,
|
|
|
|
|
// Sex = g.FirstOrDefault().Sex,
|
|
|
|
|
// Status = g.FirstOrDefault().Status,
|
|
|
|
|
// UserName = g.FirstOrDefault().UserName,
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
return await userQueryable.ToPagedListAsync(inQuery);
|
|
|
|
|
|
|
|
|
@@ -513,7 +533,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
public async Task<UserDetailDTO> GetUser()
|
|
|
|
|
{
|
|
|
|
|
var userQuery = _userRepository.Where(t => t.IdentityUserId == _userInfo.IdentityUserId).ProjectTo<UserDetailDTO>(_mapper.ConfigurationProvider);
|
|
|
|
|
var userQuery = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).ProjectTo<UserDetailDTO>(_mapper.ConfigurationProvider);
|
|
|
|
|
|
|
|
|
|
var userRole = await userQuery.FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
@@ -561,18 +581,17 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
//await VerifyUserPhoneAsync(null, userAddModel.UserTypeId, userAddModel.Phone);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var saveItem = _mapper.Map<User>(userAddModel);
|
|
|
|
|
var saveItem = _mapper.Map<IdentityUser>(userAddModel);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//设置用户标识
|
|
|
|
|
saveItem.IdentityUserId = NewId.NextSequentialGuid();
|
|
|
|
|
|
|
|
|
|
var @lock = _distributedLockProvider.CreateLock($"UserAccount");
|
|
|
|
|
|
|
|
|
|
using (await @lock.AcquireAsync())
|
|
|
|
|
{
|
|
|
|
|
saveItem.Code = await _userRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1;
|
|
|
|
|
saveItem.Code = await _identityUserRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1;
|
|
|
|
|
|
|
|
|
|
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User));
|
|
|
|
|
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(IdentityUser));
|
|
|
|
|
|
|
|
|
|
if (saveItem.IsZhiZhun)
|
|
|
|
|
{
|
|
|
|
@@ -584,29 +603,29 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
saveItem.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
|
|
|
|
|
|
|
|
|
var addRoleList = new List<User>();
|
|
|
|
|
|
|
|
|
|
foreach (var role in userAddModel.UserRoleList)
|
|
|
|
|
{
|
|
|
|
|
var addRole = _mapper.Map<User>(userAddModel);
|
|
|
|
|
|
|
|
|
|
addRole.UserTypeEnum = role.UserTypeEnum;
|
|
|
|
|
addRole.UserTypeId = role.UserTypeId;
|
|
|
|
|
|
|
|
|
|
addRoleList.Add(addRole);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
saveItem.UserRoleList = addRoleList;
|
|
|
|
|
|
|
|
|
|
await _identityUserRepository.AddAsync(saveItem);
|
|
|
|
|
|
|
|
|
|
var success = await _identityUserRepository.SaveChangesAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//处理多个角色
|
|
|
|
|
|
|
|
|
|
foreach (var item in userAddModel.UserRoleList)
|
|
|
|
|
{
|
|
|
|
|
var cloneUser = saveItem.Clone();
|
|
|
|
|
|
|
|
|
|
cloneUser.UserTypeId = item.UserTypeId;
|
|
|
|
|
cloneUser.UserTypeEnum = item.UserTypeEnum;
|
|
|
|
|
cloneUser.IsUserRoleDisabled = item.IsUserRoleDisabled;
|
|
|
|
|
|
|
|
|
|
await _userRepository.AddAsync(cloneUser);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var success = await _userRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
await _mailVerificationService.AddUserSendEmailAsync(saveItem.IdentityUserId, userAddModel.BaseUrl, userAddModel.RouteUrl);
|
|
|
|
|
|
|
|
|
|
await _mailVerificationService.AddUserSendEmailAsync(saveItem.Id, userAddModel.BaseUrl, userAddModel.RouteUrl);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(new UserAddedReturnDTO { Id = saveItem.IdentityUserId, UserCode = saveItem.UserCode });
|
|
|
|
|
return ResponseOutput.Ok(new UserAddedReturnDTO { Id = saveItem.Id, UserCode = saveItem.UserCode });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -619,60 +638,57 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await VerifyUserNameAsync(model.IdentityUserId, model.UserName);
|
|
|
|
|
|
|
|
|
|
await VerifyUserEmailAsync(model.IdentityUserId, model.EMail);
|
|
|
|
|
await VerifyUserNameAsync(model.Id, model.UserName);
|
|
|
|
|
|
|
|
|
|
await VerifyUserEmailAsync(model.Id, model.EMail);
|
|
|
|
|
|
|
|
|
|
//await VerifyUserPhoneAsync(model.Id, model.UserTypeId, model.Phone);
|
|
|
|
|
|
|
|
|
|
var userRoleList = await _userRepository.Where(t => t.IdentityUserId == model.IdentityUserId, true).ToListAsync();
|
|
|
|
|
var user = await _identityUserRepository.Where(t => t.Id == model.Id, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
if (userRoleList.Any(t => t.Status != model.Status))
|
|
|
|
|
if (user == null) return Null404NotFound(user);
|
|
|
|
|
|
|
|
|
|
var existDBRoleList = user.UserRoleList;
|
|
|
|
|
|
|
|
|
|
if (user.Status != model.Status)
|
|
|
|
|
{
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = model.Id, OptType = model.Status == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (model.IsZhiZhun)
|
|
|
|
|
|
|
|
|
|
_mapper.Map(model, user);
|
|
|
|
|
|
|
|
|
|
if (user.IsZhiZhun)
|
|
|
|
|
{
|
|
|
|
|
model.OrganizationName = _userInfo.IsEn_Us ? _systemEmailConfig.OrganizationName : _systemEmailConfig.OrganizationNameCN;
|
|
|
|
|
user.OrganizationName = _userInfo.IsEn_Us ? _systemEmailConfig.OrganizationName : _systemEmailConfig.OrganizationNameCN;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = model.Id, OptType = UserOptType.UpdateUser });
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = model.Id, OptType = UserOptType.UpdateUser });
|
|
|
|
|
|
|
|
|
|
foreach (var role in userRoleList)
|
|
|
|
|
//处理角色的添加、禁用
|
|
|
|
|
|
|
|
|
|
foreach (var role in model.UserRoleList)
|
|
|
|
|
{
|
|
|
|
|
role.UserName = model.UserName;
|
|
|
|
|
role.FirstName = model.FirstName;
|
|
|
|
|
role.LastName = model.LastName;
|
|
|
|
|
role.Phone = model.Phone;
|
|
|
|
|
role.EMail = model.EMail;
|
|
|
|
|
role.DepartmentName = model.DepartmentName;
|
|
|
|
|
role.OrganizationName = model.OrganizationName;
|
|
|
|
|
role.Sex = model.Sex;
|
|
|
|
|
role.Status = model.Status;
|
|
|
|
|
role.UserCode = model.UserCode;
|
|
|
|
|
role.PositionName = model.PositionName;
|
|
|
|
|
role.IsTestUser = model.IsTestUser;
|
|
|
|
|
role.IsZhiZhun = model.IsZhiZhun;
|
|
|
|
|
var find = existDBRoleList.FirstOrDefault(t => t.UserTypeEnum == role.UserTypeEnum && t.UserTypeId == role.UserTypeId);
|
|
|
|
|
|
|
|
|
|
role.IsUserRoleDisabled = model.UserRoleList.FirstOrDefault(t => t.UserTypeId == role.UserTypeId)?.IsUserRoleDisabled ?? false;
|
|
|
|
|
if (find != null)
|
|
|
|
|
{
|
|
|
|
|
find.IsUserRoleDisabled = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var addRole = _mapper.Map<User>(model);
|
|
|
|
|
|
|
|
|
|
addRole.UserTypeEnum = role.UserTypeEnum;
|
|
|
|
|
addRole.UserTypeId = role.UserTypeId;
|
|
|
|
|
|
|
|
|
|
existDBRoleList.Add(addRole);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var needAddRoleList = model.UserRoleList.Where(t => !userRoleList.Any(c => c.UserTypeId == t.UserTypeId)).ToList();
|
|
|
|
|
|
|
|
|
|
foreach (var addRole in needAddRoleList)
|
|
|
|
|
{
|
|
|
|
|
var cloneUser = userRoleList.FirstOrDefault().Clone();
|
|
|
|
|
|
|
|
|
|
cloneUser.UserTypeId = addRole.UserTypeId;
|
|
|
|
|
cloneUser.UserTypeEnum = addRole.UserTypeEnum;
|
|
|
|
|
cloneUser.IsUserRoleDisabled = addRole.IsUserRoleDisabled;
|
|
|
|
|
|
|
|
|
|
await _userRepository.AddAsync(cloneUser);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
user.UserRoleList = existDBRoleList;
|
|
|
|
|
|
|
|
|
|
var success = await _userRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
@@ -682,30 +698,30 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 禁用或者启用账户
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
|
/// <param name="state"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
///// <summary>
|
|
|
|
|
///// 禁用或者启用账户
|
|
|
|
|
///// </summary>
|
|
|
|
|
///// <param name="userId"></param>
|
|
|
|
|
///// <param name="state"></param>
|
|
|
|
|
///// <returns></returns>
|
|
|
|
|
|
|
|
|
|
[HttpPost("{userId:guid}/{state:int}")]
|
|
|
|
|
public async Task<IResponseOutput> UpdateUserState(Guid userId, UserStateEnum state)
|
|
|
|
|
{
|
|
|
|
|
//[HttpPost("{userId:guid}/{state:int}")]
|
|
|
|
|
//public async Task<IResponseOutput> UpdateUserState(Guid userId, UserStateEnum state)
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = state == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true);
|
|
|
|
|
// await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = state == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true);
|
|
|
|
|
|
|
|
|
|
var success = await _userRepository.BatchUpdateNoTrackingAsync(u => u.IdentityUserId == userId, t => new User
|
|
|
|
|
{
|
|
|
|
|
Status = state
|
|
|
|
|
});
|
|
|
|
|
return ResponseOutput.Result(success);
|
|
|
|
|
}
|
|
|
|
|
// var success = await _identityUserRepository.BatchUpdateNoTrackingAsync(u => u.IdentityUserId == userId, t => new User
|
|
|
|
|
// {
|
|
|
|
|
// Status = state
|
|
|
|
|
// });
|
|
|
|
|
// return ResponseOutput.Result(success);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<UserBasicInfo> GetUserBasicInfo(Guid userId, string pwd)
|
|
|
|
|
{
|
|
|
|
|
var info = await _userRepository.Where(u => u.Id == userId && u.Password == pwd).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
|
|
|
|
var info = await _identityUserRepository.Where(u => u.Id == userId && u.Password == pwd).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
|
|
|
|
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
@@ -719,7 +735,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
[AllowAnonymous]
|
|
|
|
|
public async Task<IResponseOutput> SendMFAEmail(Guid userId, UserMFAType mfaType)
|
|
|
|
|
{
|
|
|
|
|
var userInfo = await _userRepository.Where(u => u.Id == userId).Select(t => new { t.FullName, t.EMail }).FirstOrDefaultAsync();
|
|
|
|
|
var userInfo = await _identityUserRepository.Where(u => u.Id == userId).Select(t => new { t.FullName, t.EMail }).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
int verificationCode = new Random().Next(100000, 1000000);
|
|
|
|
|
|
|
|
|
@@ -813,7 +829,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
var userLoginReturnModel = new LoginReturnDTO();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var loginUser = await _userRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
var loginUser = await _identityUserRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
if (loginUser == null)
|
|
|
|
|
{
|
|
|
|
@@ -822,7 +838,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
failCount++;
|
|
|
|
|
await _fusionCache.SetAsync(cacheKey, failCount, TimeSpan.FromMinutes(lockoutMinutes));
|
|
|
|
|
|
|
|
|
|
var errorPwdUserId = await _userRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync();
|
|
|
|
|
var errorPwdUserId = await _identityUserRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = errorPwdUserId, OptUserId = errorPwdUserId, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountOrPasswordError }, true);
|
|
|
|
|
|
|
|
|
@@ -865,7 +881,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
if (loginUser.LastChangePassWordTime == null)
|
|
|
|
|
{
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new User()
|
|
|
|
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
LastChangePassWordTime = DateTime.Now
|
|
|
|
|
|
|
|
|
@@ -873,7 +889,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new User()
|
|
|
|
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
LastLoginIP = iPRegion,
|
|
|
|
|
LastLoginTime = DateTime.Now
|
|
|
|
@@ -973,7 +989,12 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
var userLoginReturnModel = new IRCLoginReturnDTO();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var loginUser = await _userRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
var loginUser = await _identityUserRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
if (loginUser == null)
|
|
|
|
|
{
|
|
|
|
|
loginUser = await _identityUserRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (loginUser == null)
|
|
|
|
|
{
|
|
|
|
@@ -982,7 +1003,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
failCount++;
|
|
|
|
|
await _fusionCache.SetAsync(cacheKey, failCount, TimeSpan.FromMinutes(lockoutMinutes));
|
|
|
|
|
|
|
|
|
|
var errorPwdUserId = await _userRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync();
|
|
|
|
|
var errorPwdUserId = await _identityUserRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = errorPwdUserId, OptUserId = errorPwdUserId, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountOrPasswordError }, true);
|
|
|
|
|
|
|
|
|
@@ -1025,7 +1046,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
if (loginUser.LastChangePassWordTime == null)
|
|
|
|
|
{
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(x => x.IdentityUserId == loginUser.IdentityUserId, x => new User()
|
|
|
|
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.IdentityUserId, x => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
LastChangePassWordTime = DateTime.Now
|
|
|
|
|
|
|
|
|
@@ -1033,7 +1054,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(x => x.IdentityUserId == loginUser.IdentityUserId, x => new User()
|
|
|
|
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.IdentityUserId, x => new IdentityUser()
|
|
|
|
|
{
|
|
|
|
|
LastLoginIP = iPRegion,
|
|
|
|
|
LastLoginTime = DateTime.Now
|
|
|
|
@@ -1124,36 +1145,43 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var selectUserInfo = _userRepository.Where(t => t.IdentityUserId == identityUserId && t.Id == userRoleId).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
//多账号没维护
|
|
|
|
|
if (await _userRepository.Where(t => t.IdentityUserId == identityUserId).AnyAsync(t => t.IsMutiAccountInfoConfirm == false))
|
|
|
|
|
{
|
|
|
|
|
//将信息维护为一致
|
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == identityUserId, u => new User()
|
|
|
|
|
{
|
|
|
|
|
Code = selectUserInfo.Code,
|
|
|
|
|
UserName = selectUserInfo.UserName,
|
|
|
|
|
FirstName = selectUserInfo.FirstName,
|
|
|
|
|
LastName = selectUserInfo.LastName,
|
|
|
|
|
Phone = selectUserInfo.Phone,
|
|
|
|
|
EMail = selectUserInfo.EMail,
|
|
|
|
|
DepartmentName = selectUserInfo.DepartmentName,
|
|
|
|
|
OrganizationName = selectUserInfo.OrganizationName,
|
|
|
|
|
IsFirstAdd = selectUserInfo.IsFirstAdd,
|
|
|
|
|
Sex = selectUserInfo.Sex,
|
|
|
|
|
Status = selectUserInfo.Status,
|
|
|
|
|
UserCode = selectUserInfo.UserCode,
|
|
|
|
|
Password = selectUserInfo.Password,
|
|
|
|
|
PasswordChanged = selectUserInfo.PasswordChanged,
|
|
|
|
|
LastChangePassWordTime = selectUserInfo.LastChangePassWordTime,
|
|
|
|
|
PositionName = selectUserInfo.PositionName,
|
|
|
|
|
IsTestUser = selectUserInfo.IsTestUser,
|
|
|
|
|
IsZhiZhun = selectUserInfo.IsZhiZhun,
|
|
|
|
|
AutoCutNextTask = selectUserInfo.AutoCutNextTask,
|
|
|
|
|
//DoctorId=selectUserInfo.DoctorId,
|
|
|
|
|
LastLoginIP = selectUserInfo.LastLoginIP,
|
|
|
|
|
LastLoginTime = selectUserInfo.LastLoginTime,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
//if (!_identityUserRepository.Any(t => t.Id == identityUserId))
|
|
|
|
|
//{
|
|
|
|
|
// var identityUser = _mapper.Map<IdentityUser>(selectUserInfo);
|
|
|
|
|
|
|
|
|
|
// await _identityUserRepository.AddAsync(identityUser, true);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
////多账号没维护
|
|
|
|
|
//if (await _userRepository.Where(t => t.IdentityUserId == identityUserId).AnyAsync(t => t.IsMutiAccountInfoConfirm == false))
|
|
|
|
|
//{
|
|
|
|
|
// //将信息维护为一致
|
|
|
|
|
// await _userRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == identityUserId, u => new User()
|
|
|
|
|
// {
|
|
|
|
|
// Code = selectUserInfo.Code,
|
|
|
|
|
// UserName = selectUserInfo.UserName,
|
|
|
|
|
// FirstName = selectUserInfo.FirstName,
|
|
|
|
|
// LastName = selectUserInfo.LastName,
|
|
|
|
|
// Phone = selectUserInfo.Phone,
|
|
|
|
|
// EMail = selectUserInfo.EMail,
|
|
|
|
|
// DepartmentName = selectUserInfo.DepartmentName,
|
|
|
|
|
// OrganizationName = selectUserInfo.OrganizationName,
|
|
|
|
|
// IsFirstAdd = selectUserInfo.IsFirstAdd,
|
|
|
|
|
// Sex = selectUserInfo.Sex,
|
|
|
|
|
// Status = selectUserInfo.Status,
|
|
|
|
|
// UserCode = selectUserInfo.UserCode,
|
|
|
|
|
// Password = selectUserInfo.Password,
|
|
|
|
|
// PasswordChanged = selectUserInfo.PasswordChanged,
|
|
|
|
|
// LastChangePassWordTime = selectUserInfo.LastChangePassWordTime,
|
|
|
|
|
// PositionName = selectUserInfo.PositionName,
|
|
|
|
|
// IsTestUser = selectUserInfo.IsTestUser,
|
|
|
|
|
// IsZhiZhun = selectUserInfo.IsZhiZhun,
|
|
|
|
|
// AutoCutNextTask = selectUserInfo.AutoCutNextTask,
|
|
|
|
|
// //DoctorId=selectUserInfo.DoctorId,
|
|
|
|
|
// LastLoginIP = selectUserInfo.LastLoginIP,
|
|
|
|
|
// LastLoginTime = selectUserInfo.LastLoginTime,
|
|
|
|
|
// });
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
return jwt;
|
|
|
|
|
//return new LoginSelectRoleReturn() { AccountList = accountList, JwtStr = jwt };
|
|
|
|
|