修改用户类型角色
parent
5f158137dd
commit
75543f9bcf
|
@ -38,6 +38,8 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
public class UserTypeMenuAddOrEdit: UserTypeRoleAddOrEdit
|
||||
{
|
||||
public UserTypeEnum UserTypeEnum { get; set; }
|
||||
|
||||
public List<Guid> MenuIds { get; set; } = new List<Guid>();
|
||||
|
||||
}
|
||||
|
@ -53,6 +55,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public int Order { get; set; }
|
||||
|
||||
|
||||
|
||||
public List<Guid> UserTypeGroupIdList { get; set; } = new List<Guid>();
|
||||
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
|
@ -15,18 +16,18 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
[ApiExplorerSettings(GroupName = "Management")]
|
||||
public class UserTypeRoleService : BaseService, IUserTypeService
|
||||
{
|
||||
private readonly IRepository<UserType> userTypeServiceRepository;
|
||||
private readonly IRepository<UserType> _userTypeRepository;
|
||||
|
||||
public UserTypeRoleService(IRepository<UserType> userTypeServiceRepository)
|
||||
public UserTypeRoleService(IRepository<UserType> userTypeRepository)
|
||||
{
|
||||
this.userTypeServiceRepository = userTypeServiceRepository;
|
||||
_userTypeRepository = userTypeRepository;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<List<UserTypeRoleView>> GetUserTypeRoleList(UserTypeQuery userTypeQuery)
|
||||
{
|
||||
|
||||
var userTypeRoleQueryable = userTypeServiceRepository
|
||||
var userTypeRoleQueryable = _userTypeRepository
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(userTypeQuery.SearchFilter), t => t.Description.Contains(userTypeQuery.SearchFilter!) || t.UserTypeName.Contains(userTypeQuery.SearchFilter!) || t.UserTypeShortName.Contains(userTypeQuery.SearchFilter!))
|
||||
|
||||
.WhereIf(userTypeQuery.GroupId!=null,t=>t.UserTypeGroupList.Any(t=>t.DictionaryId== userTypeQuery.GroupId))
|
||||
|
@ -40,16 +41,22 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public async Task<IResponseOutput> AddOrUpdateUserTypeRole(UserTypeMenuAddOrEdit addOrEditUserTypeRole)
|
||||
{
|
||||
|
||||
var verifyExp1 = new EntityVerifyExp<UserType>()
|
||||
{
|
||||
VerifyExp = u => u.UserTypeEnum == addOrEditUserTypeRole.UserTypeEnum ,
|
||||
|
||||
VerifyMsg = "已存在该用户类型的角色。"
|
||||
};
|
||||
|
||||
var entity = new UserType();
|
||||
|
||||
if (addOrEditUserTypeRole.Id == null)
|
||||
{
|
||||
entity = _mapper.Map<UserType>(addOrEditUserTypeRole);
|
||||
|
||||
entity.UserTypeEnum = userTypeServiceRepository.Select(t => t.UserTypeEnum).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
await _repository.AddAsync(entity);
|
||||
//entity.UserTypeEnum = userTypeServiceRepository.Select(t => t.UserTypeEnum).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
await _userTypeRepository.InsertFromDTOAsync(addOrEditUserTypeRole,false, verifyExp1);
|
||||
|
||||
}
|
||||
else
|
||||
|
@ -57,14 +64,17 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
if (addOrEditUserTypeRole.MenuIds.Count > 0)
|
||||
{
|
||||
entity = userTypeServiceRepository.Where(t => t.Id == addOrEditUserTypeRole.Id, true).Include(t => t.UserTypeMenuList).Include(t=>t.UserTypeGroupList).FirstOrDefault().IfNullThrowException();
|
||||
entity = _userTypeRepository.Where(t => t.Id == addOrEditUserTypeRole.Id, true).Include(t => t.UserTypeMenuList).Include(t=>t.UserTypeGroupList).FirstOrDefault().IfNullThrowException();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
entity = userTypeServiceRepository.Where(t => t.Id == addOrEditUserTypeRole.Id, true).FirstOrDefault().IfNullThrowException();
|
||||
entity = _userTypeRepository.Where(t => t.Id == addOrEditUserTypeRole.Id, true).FirstOrDefault().IfNullThrowException();
|
||||
}
|
||||
_mapper.Map(addOrEditUserTypeRole, entity);
|
||||
|
||||
|
||||
await _userTypeRepository.EntityVerifyAsync(entity.Id, verifyExp1);
|
||||
}
|
||||
|
||||
var success = await _repository.SaveChangesAsync();
|
||||
|
@ -83,7 +93,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
return ResponseOutput.NotOk(_localizer["UserType_InUse"]);
|
||||
}
|
||||
|
||||
var success = await userTypeServiceRepository.BatchDeleteNoTrackingAsync(t => t.Id == userTypeId);
|
||||
var success = await _userTypeRepository.BatchDeleteNoTrackingAsync(t => t.Id == userTypeId);
|
||||
|
||||
return ResponseOutput.Result(success);
|
||||
}
|
||||
|
@ -139,7 +149,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
|
||||
|
||||
var query = userTypeServiceRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
var query = _userTypeRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
.WhereIf(userTypeSelectEnum != UserTypeSelectEnum.None, t => userTypeEnums.Contains(t.UserTypeEnum))
|
||||
.OrderBy(t => t.Order).ProjectTo<TrialUserType>(_mapper.ConfigurationProvider);
|
||||
|
||||
|
@ -156,7 +166,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
/// <returns></returns>
|
||||
public async Task<List<TrialUserType>> GetTrialUserTypeList()
|
||||
{
|
||||
var query = userTypeServiceRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
var query = _userTypeRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
.Where(t => !t.UserTypeGroupList.Any(t=> t.Group.Code=="3"))
|
||||
.OrderBy(t => t.Order).ProjectTo<TrialUserType>(_mapper.ConfigurationProvider);
|
||||
|
||||
|
|
|
@ -83,6 +83,43 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
}
|
||||
}
|
||||
|
||||
public static async Task EntityVerifyAsync<T>(this IRepository<T> _entityRepository, Guid? entitydId = null,params EntityVerifyExp<T>[] verify) where T : Entity
|
||||
{
|
||||
|
||||
if (entitydId!=null)
|
||||
{
|
||||
foreach (var verifyItem in verify.Where(t => t.verifyType != VerifyEnum.OnlyUpdate && t.IsVerify))
|
||||
{
|
||||
if (await _entityRepository.AnyAsync(verifyItem.VerifyExp).ConfigureAwait(false))
|
||||
{
|
||||
throw new BusinessValidationFailedException(verifyItem.VerifyMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var verifyItem in verify.Where(t => t.verifyType != VerifyEnum.OnlyAdd && t.IsVerify))
|
||||
{
|
||||
if (verifyItem.verifyType == VerifyEnum.OnlyUpdate)
|
||||
{
|
||||
if (await _entityRepository.AnyAsync(verifyItem.VerifyExp).ConfigureAwait(false))
|
||||
{
|
||||
throw new BusinessValidationFailedException(verifyItem.VerifyMsg);
|
||||
}
|
||||
}
|
||||
else if (verifyItem.verifyType == VerifyEnum.Both)
|
||||
{
|
||||
if (await _entityRepository.AnyAsync(verifyItem.VerifyExp.And(t => t.Id != entitydId)).ConfigureAwait(false))
|
||||
{
|
||||
throw new BusinessValidationFailedException(verifyItem.VerifyMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
///注意 模型标注了 ConcurrencyCheck的属性,这样的实体,不适合用部分字段更新,ef生成的更新sql会自动带上ConcurrencyCheck的属性条件
|
||||
/// <summary>EntityState.Detached的实体 修改 部分字段</summary>
|
||||
public static void EntityModifyPartialFiled<T>(this IRaCISDBContext _dbContext,T waitModifyEntity, Expression<Func<T, T>> updateFactory) where T : Entity
|
||||
|
|
Loading…
Reference in New Issue