|
@@ -1,149 +0,0 @@
|
|
|
-package cn.com.qmth.examcloud.core.basic.service.impl;
|
|
|
-
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
-
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.Assert;
|
|
|
-
|
|
|
-import cn.com.qmth.examcloud.core.basic.dao.RolePermissionRelationRepo;
|
|
|
-import cn.com.qmth.examcloud.core.basic.dao.entity.Permission;
|
|
|
-import cn.com.qmth.examcloud.core.basic.dao.entity.RolePermissionRelation;
|
|
|
-import cn.com.qmth.examcloud.core.basic.dao.enums.PermissionType;
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- *
|
|
|
- * @author chenken
|
|
|
- * @date 2017年6月15日下午3:15:53
|
|
|
- * @company QMTH
|
|
|
- * @description
|
|
|
- */
|
|
|
-//@Service("rolePermissionRelationService")
|
|
|
-@Deprecated
|
|
|
-public class RolePermissionRelationServiceImpl implements RolePermissionRelationService{
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private RolePermissionRelationRepo rolePermissionRelationRepo;
|
|
|
- @Autowired
|
|
|
- private PermissionService permissionService;
|
|
|
-
|
|
|
- @Override
|
|
|
- public Map<String,List<Permission>> findPermissionByRole(RolePermissionRelation rolePermissionRelation) {
|
|
|
- Map<String,List<Permission>> returnMap = new HashMap<String, List<Permission>>();
|
|
|
- String menuType = PermissionType.MENU.name();
|
|
|
- returnMap.put(menuType,findMenuPermissionByRole(rolePermissionRelation));
|
|
|
- String pageType = PermissionType.PAGE.name();
|
|
|
- returnMap.put(pageType,findPagePermissionByRole(rolePermissionRelation));
|
|
|
- return returnMap;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询菜单权限
|
|
|
- * @param rolePermissionRelation
|
|
|
- * @return
|
|
|
- */
|
|
|
- private List<Permission> findMenuPermissionByRole(RolePermissionRelation rolePermissionRelation){
|
|
|
- List<String> roleCodes = rolePermissionRelation.getRoleCodes();
|
|
|
- List<RolePermissionRelation> relations = new ArrayList<RolePermissionRelation>();
|
|
|
- for(String roleCode:roleCodes){
|
|
|
- String systemName = rolePermissionRelation.getSystemName();
|
|
|
- String permissionType = PermissionType.MENU.name();
|
|
|
- relations.addAll(rolePermissionRelationRepo.findByRoleCodeAndSystemNameAndPermissionType(roleCode, systemName,permissionType));
|
|
|
- }
|
|
|
- Set<Integer> permissionIds = new HashSet<Integer>();
|
|
|
- for(RolePermissionRelation relation:relations){
|
|
|
- permissionIds.add(relation.getPermissionId());
|
|
|
- }
|
|
|
- List<Integer> ids = new ArrayList<Integer>(permissionIds);
|
|
|
- List<Permission> permissions = permissionService.findPermissionByIds(ids);
|
|
|
- //组装树形关系结构
|
|
|
- Map<Integer,Permission> permissionMap = new HashMap<Integer, Permission>();
|
|
|
- for(Permission permission:permissions){
|
|
|
- permissionMap.put(permission.getId(), permission);
|
|
|
- }
|
|
|
- for(Permission p:permissions){
|
|
|
- Permission permission = permissionMap.get(p.getParentId());
|
|
|
- if(permission!=null){
|
|
|
- if(permission.getSubPermissions()==null){
|
|
|
- permission.setSubPermissions(new ArrayList<Permission>());
|
|
|
- }
|
|
|
- permission.getSubPermissions().add(p);
|
|
|
- }
|
|
|
- }
|
|
|
- // 返回一级节点
|
|
|
- List<Permission> permissionNodes = new ArrayList<Permission>();
|
|
|
- for(Permission permission:permissions){
|
|
|
- if(permission.getParentId()==null){
|
|
|
- permissionNodes.add(permission);
|
|
|
- }
|
|
|
- }
|
|
|
- return permissionNodes;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询菜单权限
|
|
|
- * @param rolePermissionRelation
|
|
|
- * @return
|
|
|
- */
|
|
|
- private List<Permission> findPagePermissionByRole(RolePermissionRelation rolePermissionRelation){
|
|
|
- List<String> roleCodes = rolePermissionRelation.getRoleCodes();
|
|
|
- List<RolePermissionRelation> relations = new ArrayList<RolePermissionRelation>();
|
|
|
- for(String roleCode:roleCodes){
|
|
|
- String systemName = rolePermissionRelation.getSystemName();
|
|
|
- String permissionType = PermissionType.PAGE.name();
|
|
|
- relations.addAll(rolePermissionRelationRepo.findByRoleCodeAndSystemNameAndPermissionType(roleCode, systemName,permissionType));
|
|
|
- }
|
|
|
- Set<Integer> permissionIds = new HashSet<Integer>();
|
|
|
- for(RolePermissionRelation relation:relations){
|
|
|
- permissionIds.add(relation.getPermissionId());
|
|
|
- }
|
|
|
- List<Integer> ids = new ArrayList<Integer>(permissionIds);
|
|
|
- List<Permission> permissions = permissionService.findPermissionByIds(ids);
|
|
|
- return permissions;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public void saveRolePermission(RolePermissionRelation rolePermissionRelation) {
|
|
|
- String roleCode = rolePermissionRelation.getRoleCode();
|
|
|
- String systemName = rolePermissionRelation.getSystemName();
|
|
|
- String permissionType = rolePermissionRelation.getPermissionType();
|
|
|
- deleteRolePermission(roleCode, systemName,permissionType);
|
|
|
- List<RolePermissionRelation> relationList = new ArrayList<RolePermissionRelation>();
|
|
|
- for(Integer permissionId:rolePermissionRelation.getPermissionIds()){
|
|
|
- RolePermissionRelation relation = new RolePermissionRelation();
|
|
|
- relation.setRoleCode(roleCode);
|
|
|
- relation.setSystemName(systemName);
|
|
|
- relation.setPermissionType(permissionType);
|
|
|
- relation.setPermissionId(permissionId);
|
|
|
- relationList.add(relation);
|
|
|
- }
|
|
|
- rolePermissionRelationRepo.save(relationList);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void deleteRolePermission(String roleCode, String systemName,String permissionType) {
|
|
|
- rolePermissionRelationRepo.deleteByRoleCodeAndSystemNameAndPermissionType(roleCode, systemName,permissionType);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<RolePermissionRelation> findPermission(String systemName,String roleCode,String permissionType) {
|
|
|
- Assert.hasLength(systemName, "systemName 不能为空");
|
|
|
- Assert.hasLength(roleCode, "roleCode 不能为空");
|
|
|
- return rolePermissionRelationRepo.findByRoleCodeAndSystemNameAndPermissionType(roleCode, systemName, permissionType);
|
|
|
- }
|
|
|
-
|
|
|
- //by weiwenhai 根据权限id查询权限角色
|
|
|
- @Override
|
|
|
- public List<RolePermissionRelation> findRolePermissionRelationByPermissonId(Integer id) {
|
|
|
- return rolePermissionRelationRepo.findByPermissionId(id);
|
|
|
- }
|
|
|
-
|
|
|
-}
|