wangwei 7 tahun lalu
induk
melakukan
18719235d5

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

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

+ 11 - 0
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/entity/RolePrivilegeRelationPK.java

@@ -19,6 +19,17 @@ public class RolePrivilegeRelationPK implements Serializable {
 
 	private Long rootOrgId;
 
+	public RolePrivilegeRelationPK() {
+		super();
+	}
+
+	public RolePrivilegeRelationPK(Long roleId, Long privilegeId, Long rootOrgId) {
+		super();
+		this.roleId = roleId;
+		this.privilegeId = privilegeId;
+		this.rootOrgId = rootOrgId;
+	}
+
 	public Long getRoleId() {
 		return roleId;
 	}

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

@@ -5,12 +5,10 @@ import java.util.Set;
 
 import javax.transaction.Transactional;
 
-import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 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;
@@ -18,6 +16,7 @@ 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.dao.entity.RolePrivilegeRelationPK;
 import cn.com.qmth.examcloud.core.basic.service.RolePrivilegeService;
 
 /**
@@ -53,33 +52,23 @@ public class RolePrivilegeServiceImpl implements RolePrivilegeService {
 		List<PrivilegeEntity> privilegeList = privilegeRepo
 				.findAllByGroupIdOrderByWeightDesc(privilegeGroupId);
 
-		for (PrivilegeEntity cur : privilegeList) {
-			rolePrivilegeRelationRepo.deleteByRoleIdAndRootOrgIdAndPrivilegeId(roleId, rootOrgId,
-					cur.getId());
-		}
-
-		if (CollectionUtils.isEmpty(privilegeIdSet)) {
-			return;
-		}
-
-		Set<String> temp = Sets.newHashSet();
-
 		List<RolePrivilegeRelationEntity> list = Lists.newArrayList();
-		for (Long cur : privilegeIdSet) {
-			if (0 > cur) {
-				continue;
-			}
 
-			if (temp.contains(String.valueOf(cur))) {
-				continue;
+		for (PrivilegeEntity cur : privilegeList) {
+			Long id = cur.getId();
+			if (privilegeIdSet.contains(id)) {
+				RolePrivilegeRelationEntity bean = new RolePrivilegeRelationEntity();
+				bean.setRoleId(roleId);
+				bean.setRootOrgId(rootOrgId);
+				bean.setPrivilegeId(id);
+				list.add(bean);
 			}
-			temp.add(String.valueOf(cur));
-			RolePrivilegeRelationEntity bean = new RolePrivilegeRelationEntity();
-			bean.setRoleId(roleId);
-			bean.setRootOrgId(rootOrgId);
-			bean.setPrivilegeId(cur);
 
-			list.add(bean);
+			RolePrivilegeRelationPK pk = new RolePrivilegeRelationPK(roleId, id, rootOrgId);
+			if (rolePrivilegeRelationRepo.exists(pk)) {
+				rolePrivilegeRelationRepo
+						.delete(new RolePrivilegeRelationPK(roleId, id, rootOrgId));
+			}
 		}
 
 		rolePrivilegeRelationRepo.save(list);