提供人员 权限设置支持

This commit is contained in:
zhouhao
2017-06-08 11:36:56 +08:00
parent c35dc35dd6
commit b38ee09029

View File

@@ -30,6 +30,7 @@ import org.hswebframework.web.organizational.authorization.simple.SimplePersonne
import org.hswebframework.web.organizational.authorization.simple.SimplePersonnelAuthorization;
import org.hswebframework.web.service.DefaultDSLQueryService;
import org.hswebframework.web.service.EnableCacheGernericEntityService;
import org.hswebframework.web.service.authorization.AuthorizationSettingTypeSupplier;
import org.hswebframework.web.service.authorization.UserService;
import org.hswebframework.web.service.organizational.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,7 +60,11 @@ import static org.springframework.util.StringUtils.*;
@Service("personService")
@CacheConfig(cacheNames = "person")
public class SimplePersonService extends EnableCacheGernericEntityService<PersonEntity, String>
implements PersonService, PersonnelAuthorizationManager {
implements PersonService, PersonnelAuthorizationManager, AuthorizationSettingTypeSupplier {
private static String SETTING_TYPE_PERSON = "person";
private static String SETTING_TYPE_POSITION = "position";
@Autowired
private PersonDao personDao;
@@ -128,7 +133,7 @@ public class SimplePersonService extends EnableCacheGernericEntityService<Person
entityFactory.copyProperties(personEntity, bindEntity);
Set<String> positionIds = DefaultDSLQueryService.createQuery(personPositionDao)
.where(PersonPositionEntity.personId, id)
.list().stream()
.listNoPaging().stream()
.map(PersonPositionEntity::getPositionId)
.collect(Collectors.toSet());
@@ -167,7 +172,7 @@ public class SimplePersonService extends EnableCacheGernericEntityService<Person
//获取职位实体
List<PositionEntity> positionEntities = DefaultDSLQueryService.createQuery(positionDao)
.where().in(PositionEntity.id, positionIds)
.list();
.listNoPaging();
if (positionEntities.isEmpty()) return;
//获取用户是否存在
UserEntity oldUser = userService.selectByUsername(bindEntity.getPersonUser().getUsername());
@@ -227,7 +232,7 @@ public class SimplePersonService extends EnableCacheGernericEntityService<Person
// 获取用户的职位ID集合(多个职位)
Set<String> positionIds = DefaultDSLQueryService.createQuery(personPositionDao)
.where(PersonPositionEntity.personId, personId)
.list().stream()
.listNoPaging().stream()
.map(PersonPositionEntity::getPositionId)
.collect(Collectors.toSet());
//获取所有职位,并得到根职位(树结构)
@@ -271,7 +276,7 @@ public class SimplePersonService extends EnableCacheGernericEntityService<Person
//获取根节点
List<T> root = DefaultDSLQueryService.createQuery(dao)
.where().in(TreeSupportEntity.id, rootIds)
.list();
.listNoPaging();
//节点不存在?
if (!root.isEmpty()) {
//所有子节点,使用节点的path属性进行快速查询,查询结果包含了根节点
@@ -279,7 +284,7 @@ public class SimplePersonService extends EnableCacheGernericEntityService<Person
.createQuery(dao)
//遍历生成查询条件: like path like ?||'%' or path like ?||'%' ....
.each(root, (query, data) -> query.or().like$(TreeSupportEntity.path, data.getPath()))
.list();
.listNoPaging();
//转为树形结构
List<T> tree = TreeSupportEntity
.list2tree(allNode, childAccepter,
@@ -316,4 +321,25 @@ public class SimplePersonService extends EnableCacheGernericEntityService<Person
assertNotNull(entity);
return getPersonnelAuthorizationByPersonId(entity.getId());
}
@Override
public Set<SettingInfo> get(String userId) {
//支持职位和人员 设置权限
PersonEntity entity = createQuery().where(PersonEntity.userId, userId).single();
if (entity == null) return new HashSet<>();
Set<SettingInfo> settingInfo = new HashSet<>();
//岗位设置
//TODO 2017/06/08 是否将子级岗位的设置也放进来??
DefaultDSLQueryService.createQuery(personPositionDao)
.where(PersonPositionEntity.personId, entity.getId())
.listNoPaging()
.stream()
.map(position -> new SettingInfo(SETTING_TYPE_POSITION, position.getPositionId()))
.forEach(settingInfo::add);
//其他设置支持?
//人员配置
settingInfo.add(new SettingInfo(SETTING_TYPE_PERSON, entity.getId()));
return settingInfo;
}
}