WANG hace 6 años
padre
commit
4e98d39d5f

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

@@ -32,6 +32,7 @@ import cn.com.qmth.examcloud.core.basic.api.controller.bean.PrivilegeDomain;
 import cn.com.qmth.examcloud.core.basic.api.controller.bean.PrivilegeGroupDomain;
 import cn.com.qmth.examcloud.core.basic.api.controller.bean.RoleDomain;
 import cn.com.qmth.examcloud.core.basic.api.controller.bean.UpdateRolePrivilegeRelationsDomain;
+import cn.com.qmth.examcloud.core.basic.api.controller.bean.UpdateRootOrgPrivilegeRelationsDomain;
 import cn.com.qmth.examcloud.core.basic.base.constants.BasicConsts;
 import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
 import cn.com.qmth.examcloud.core.basic.dao.PrivilegeGroupRepo;
@@ -250,6 +251,22 @@ public class RolePrivilegeController extends ControllerSupport {
 				privilegeIdSet);
 	}
 
+	@ApiOperation(value = "更新顶级机构权限关联")
+	@PostMapping("updateRootOrgPrivilegeRelations")
+	public void updateRootOrgPrivilegeRelations(
+			@RequestBody UpdateRootOrgPrivilegeRelationsDomain req) {
+		Long rootOrgId = Long.parseLong(req.getRootOrgId());
+		Long privilegeGroupId = req.getPrivilegeGroupId();
+		Set<Long> privilegeIdSet = req.getPrivilegeIdSet();
+
+		if (!isSuperAdmin()) {
+			throw new StatusException("012601", "非法请求");
+		}
+
+		rolePrivilegeService.updateRootOrgPrivilegeRelations(rootOrgId, privilegeGroupId,
+				privilegeIdSet);
+	}
+
 	@ApiOperation(value = "增加权限")
 	@PostMapping("addPrivilege")
 	public PrivilegeEntity addPrivilege(@RequestBody PrivilegeEntity privilege) {

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

@@ -0,0 +1,41 @@
+package cn.com.qmth.examcloud.core.basic.api.controller.bean;
+
+import java.util.Set;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+
+public class UpdateRootOrgPrivilegeRelationsDomain implements JsonSerializable {
+
+	private static final long serialVersionUID = -8907927108545093675L;
+
+	private String rootOrgId;
+
+	private Long privilegeGroupId;
+
+	private Set<Long> privilegeIdSet;
+
+	public String getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(String rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getPrivilegeGroupId() {
+		return privilegeGroupId;
+	}
+
+	public void setPrivilegeGroupId(Long privilegeGroupId) {
+		this.privilegeGroupId = privilegeGroupId;
+	}
+
+	public Set<Long> getPrivilegeIdSet() {
+		return privilegeIdSet;
+	}
+
+	public void setPrivilegeIdSet(Set<Long> privilegeIdSet) {
+		this.privilegeIdSet = privilegeIdSet;
+	}
+
+}

+ 18 - 0
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/RootOrgPrivilegeRelationRepo.java

@@ -0,0 +1,18 @@
+package cn.com.qmth.examcloud.core.basic.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.query.QueryByExampleExecutor;
+
+import cn.com.qmth.examcloud.core.basic.dao.entity.RootOrgPrivilegeRelationEntity;
+import cn.com.qmth.examcloud.core.basic.dao.entity.RootOrgPrivilegeRelationPK;
+
+public interface RootOrgPrivilegeRelationRepo
+		extends
+			JpaRepository<RootOrgPrivilegeRelationEntity, RootOrgPrivilegeRelationPK>,
+			QueryByExampleExecutor<RootOrgPrivilegeRelationEntity>,
+			JpaSpecificationExecutor<RootOrgPrivilegeRelationEntity> {
+
+	void deleteByRootOrgIdAndGroupId(Long rootOrgId, Long groupId);
+
+}

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

@@ -25,6 +25,17 @@ public interface RolePrivilegeService {
 	void updateRolePrivilegeRelations(Long rootOrgId, Long roleId, Long privilegeGroupId,
 			Set<Long> privilegeIdSet);
 
+	/**
+	 * 方法注释
+	 *
+	 * @author WANGWEI
+	 * @param rootOrgId
+	 * @param roleId
+	 * @param privilegeIdSet
+	 */
+	void updateRootOrgPrivilegeRelations(Long rootOrgId, Long privilegeGroupId,
+			Set<Long> privilegeIdSet);
+
 	/**
 	 * 保存角色
 	 *

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

@@ -14,11 +14,14 @@ 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.RoleRepo;
+import cn.com.qmth.examcloud.core.basic.dao.RootOrgPrivilegeRelationRepo;
 import cn.com.qmth.examcloud.core.basic.dao.UserRoleRelationRepo;
 import cn.com.qmth.examcloud.core.basic.dao.entity.PrivilegeEntity;
+import cn.com.qmth.examcloud.core.basic.dao.entity.PrivilegeGroupEntity;
 import cn.com.qmth.examcloud.core.basic.dao.entity.RoleEntity;
 import cn.com.qmth.examcloud.core.basic.dao.entity.RolePrivilegeRelationEntity;
 import cn.com.qmth.examcloud.core.basic.dao.entity.RolePrivilegeRelationPK;
+import cn.com.qmth.examcloud.core.basic.dao.entity.RootOrgPrivilegeRelationEntity;
 import cn.com.qmth.examcloud.core.basic.service.RolePrivilegeService;
 import cn.com.qmth.examcloud.core.basic.service.bean.RoleInfo;
 import cn.com.qmth.examcloud.core.basic.service.cache.PrrivilegeRolesCache;
@@ -46,6 +49,9 @@ public class RolePrivilegeServiceImpl implements RolePrivilegeService {
 	@Autowired
 	RolePrivilegeRelationRepo rolePrivilegeRelationRepo;
 
+	@Autowired
+	RootOrgPrivilegeRelationRepo rootOrgPrivilegeRelationRepo;
+
 	@Autowired
 	PrivilegeGroupRepo privilegeGroupRepo;
 
@@ -67,6 +73,9 @@ public class RolePrivilegeServiceImpl implements RolePrivilegeService {
 			}
 		}
 
+		GlobalHelper.getPresentEntity(privilegeGroupRepo, privilegeGroupId,
+				PrivilegeGroupEntity.class);
+
 		for (Long cur : privilegeIdSet) {
 			PrivilegeEntity privilegeEntity = GlobalHelper.getPresentEntity(privilegeRepo, cur,
 					PrivilegeEntity.class);
@@ -87,15 +96,13 @@ public class RolePrivilegeServiceImpl implements RolePrivilegeService {
 			}
 		}
 
-		rolePrivilegeRelationRepo.deleteByRoleIdAndRootOrgId(roleId, rootOrgId);
-
 		for (Long cur : privilegeIdSet) {
 			RolePrivilegeRelationEntity bean = new RolePrivilegeRelationEntity();
 			bean.setRoleId(roleId);
 			bean.setRootOrgId(rootOrgId);
 			bean.setPrivilegeId(cur);
 
-			rolePrivilegeRelationRepo.save(bean);
+			rolePrivilegeRelationRepo.saveAndFlush(bean);
 		}
 
 		for (Long cur : privilegeIdSet) {
@@ -106,6 +113,32 @@ public class RolePrivilegeServiceImpl implements RolePrivilegeService {
 
 	}
 
+	@Override
+	public void updateRootOrgPrivilegeRelations(Long rootOrgId, Long privilegeGroupId,
+			Set<Long> privilegeIdSet) {
+
+		GlobalHelper.getPresentEntity(privilegeGroupRepo, privilegeGroupId,
+				PrivilegeGroupEntity.class);
+
+		rootOrgPrivilegeRelationRepo.deleteByRootOrgIdAndGroupId(rootOrgId, privilegeGroupId);
+
+		for (Long cur : privilegeIdSet) {
+			PrivilegeEntity privilegeEntity = GlobalHelper.getPresentEntity(privilegeRepo, cur,
+					PrivilegeEntity.class);
+			if (!privilegeEntity.getGroupId().equals(privilegeGroupId)) {
+				throw new StatusException("620158", "权限和权限组不匹配");
+			}
+
+			RootOrgPrivilegeRelationEntity bean = new RootOrgPrivilegeRelationEntity();
+			bean.setRootOrgId(rootOrgId);
+			bean.setPrivilegeId(cur);
+			bean.setGroupId(privilegeGroupId);
+
+			rootOrgPrivilegeRelationRepo.saveAndFlush(bean);
+		}
+
+	}
+
 	@Override
 	public RoleEntity saveRole(RoleInfo info) {
 		String code = info.getCode();