wangwei hace 7 años
padre
commit
fa6202bc55

+ 6 - 1
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/RolePrivilegeController.java

@@ -114,6 +114,10 @@ public class RolePrivilegeController extends ControllerSupport {
 
 		for (PrivilegeEntity cur : privilegeList) {
 			boolean hasPrivilege = pIdSet.contains(String.valueOf(cur.getId()));
+			// 超级管理员拥有所有权限
+			if (isSuperAdmin()) {
+				hasPrivilege = true;
+			}
 			if ((!full) && (!hasPrivilege)) {
 				continue;
 			}
@@ -198,6 +202,7 @@ public class RolePrivilegeController extends ControllerSupport {
 	public void updateRolePrivilegeRelations(@RequestBody UpdateRolePrivilegeRelationsReq req) {
 		Long rootOrgId = Long.parseLong(req.getRootOrgId());
 		Long roleId = Long.parseLong(req.getRoleId());
+		Long privilegeGroupId = Long.parseLong(req.getPrivilegeGroupId());
 		Set<Long> privilegeIdSet = req.getPrivilegeIdSet();
 
 		User accessUser = getAccessUser();
@@ -206,7 +211,7 @@ public class RolePrivilegeController extends ControllerSupport {
 			throw new StatusException("B-012001", "非法请求");
 		}
 
-		rolePrivilegeService.updateRolePrivilegeRelations(rootOrgId, roleId, privilegeIdSet);
+		rolePrivilegeService.updateRolePrivilegeRelations(rootOrgId, roleId, privilegeGroupId,privilegeIdSet);
 	}
 
 	@ApiOperation(value = "增加权限")

+ 10 - 0
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/bean/UpdateRolePrivilegeRelationsReq.java

@@ -19,6 +19,8 @@ public class UpdateRolePrivilegeRelationsReq implements JsonSerializable {
 
 	private String roleId;
 
+	private String privilegeGroupId;
+
 	private Set<Long> privilegeIdSet;
 
 	public String getRootOrgId() {
@@ -37,6 +39,14 @@ public class UpdateRolePrivilegeRelationsReq implements JsonSerializable {
 		this.roleId = roleId;
 	}
 
+	public String getPrivilegeGroupId() {
+		return privilegeGroupId;
+	}
+
+	public void setPrivilegeGroupId(String privilegeGroupId) {
+		this.privilegeGroupId = privilegeGroupId;
+	}
+
 	public Set<Long> getPrivilegeIdSet() {
 		return privilegeIdSet;
 	}

+ 1 - 1
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/RolePrivilegeRelationRepo.java

@@ -22,7 +22,7 @@ public interface RolePrivilegeRelationRepo
 	List<RolePrivilegeRelationEntity> findAllByRoleIdInAndRootOrgId(List<Long> roleIdList,
 			Long rootOrgId);
 	
-	void deleteByRoleIdAndRootOrgId(Long roleId,Long rootOrgId);
+	void deleteByRoleIdAndRootOrgIdAndPrivilegeId(Long roleId,Long rootOrgId,Long privilegeId);
 	
 	
 

+ 1 - 1
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/RolePrivilegeService.java

@@ -19,6 +19,6 @@ public interface RolePrivilegeService {
 	 * @param roleId
 	 * @param privilegeIdSet
 	 */
-	void updateRolePrivilegeRelations(Long rootOrgId, Long roleId, Set<Long> privilegeIdSet);
+	void updateRolePrivilegeRelations(Long rootOrgId, Long roleId, Long privilegeGroupId,Set<Long> privilegeIdSet);
 
 }

+ 13 - 2
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/RolePrivilegeServiceImpl.java

@@ -13,8 +13,10 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
 import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
+import cn.com.qmth.examcloud.core.basic.dao.PrivilegeGroupRepo;
 import cn.com.qmth.examcloud.core.basic.dao.PrivilegeRepo;
 import cn.com.qmth.examcloud.core.basic.dao.RolePrivilegeRelationRepo;
+import cn.com.qmth.examcloud.core.basic.dao.entity.PrivilegeEntity;
 import cn.com.qmth.examcloud.core.basic.dao.entity.RolePrivilegeRelationEntity;
 import cn.com.qmth.examcloud.core.basic.service.RolePrivilegeService;
 
@@ -38,14 +40,23 @@ public class RolePrivilegeServiceImpl implements RolePrivilegeService {
 	@Autowired
 	RolePrivilegeRelationRepo rolePrivilegeRelationRepo;
 
+	@Autowired
+	PrivilegeGroupRepo privilegeGroupRepo;
+
 	@Autowired
 	RolePrivilegeService rolePrivilegeService;
 
 	@Override
-	public void updateRolePrivilegeRelations(Long rootOrgId, Long roleId,
+	public void updateRolePrivilegeRelations(Long rootOrgId, Long roleId, Long privilegeGroupId,
 			Set<Long> privilegeIdSet) {
 
-		rolePrivilegeRelationRepo.deleteByRoleIdAndRootOrgId(roleId, rootOrgId);
+		List<PrivilegeEntity> privilegeList = privilegeRepo
+				.findAllByGroupIdOrderByWeightDesc(privilegeGroupId);
+
+		for (PrivilegeEntity cur : privilegeList) {
+			rolePrivilegeRelationRepo.deleteByRoleIdAndRootOrgIdAndPrivilegeId(roleId, rootOrgId,
+					cur.getId());
+		}
 
 		if (CollectionUtils.isEmpty(privilegeIdSet)) {
 			return;