dcs 3 mesiacov pred
rodič
commit
dcf2c81c3a

+ 11 - 1
virgo.core/src/main/java/com/bosshand/virgo/core/model/UserContext.java

@@ -62,6 +62,8 @@ public class UserContext implements BaseModel{
 
 	private String workarkMenu;
 	
+	private boolean workarkAdmin;
+
 	private boolean admin;
 
 	private Map<Long, Set<JSONObject>> projectListIdentity;
@@ -170,6 +172,14 @@ public class UserContext implements BaseModel{
 		this.workarkMenu = workarkMenu;
 	}
 
+	public boolean isWorkarkAdmin() {
+		return workarkAdmin;
+	}
+
+	public void setWorkarkAdmin(boolean workarkAdmin) {
+		this.workarkAdmin = workarkAdmin;
+	}
+
 	public boolean isAdmin() {
 		return admin;
 	}
@@ -342,7 +352,7 @@ public class UserContext implements BaseModel{
 			flowUser.setUserRole(userRole);
 
 			if(workarkCurrentUserRole != null){
-				flowUser.setAdmin(workarkCurrentUserRole.isAdmin());
+				flowUser.setWorkarkAdmin(workarkCurrentUserRole.isAdmin());
 				flowUser.setWorkarkMenu(workarkCurrentUserRole.getWorkarkMenus());
 				flowUser.setWorkarkResource(workarkCurrentUserRole.getWorkarkResources());
 			}

+ 22 - 26
virgo.core/src/main/java/com/bosshand/virgo/core/service/MgrUserService.java

@@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 public class MgrUserService {
@@ -192,28 +193,18 @@ public class MgrUserService {
 	}
 
 	public List<MgrOrganization> getWorkarkOrganizationList(MgrUser user) {
+		if (this.isSupperAdmin(user)) {
+			return mgrOrganizationDao.listAll();
+		}
 		List<Long> organizationIds = new ArrayList<>();
 		List<MgrRole> roles = mgrRoleDao.getListByProject(-1);
 		roles.forEach(ls -> organizationIds.add(ls.getOrganizationId()));
-		if (organizationIds.size() > 0) {
-			List<MgrOrganization> organizationList = mgrOrganizationDao.organizationByIds(organizationIds);
-			if (this.isSupperAdmin(user)) {
-				return organizationList;
-			}
-			List<MgrUserRole> userRoleList = getUserRoles(user);
-			List<Long> ids = new LinkedList<Long>();
-			Map<Long, Boolean> map = new HashMap<>();
-			userRoleList.forEach(r -> {
-				ids.add(r.getOrganizationId());
-				map.put(r.getOrganizationId(), r.isAdmin());
-			});
-			// 取交集
-			List<Long> intersection = organizationIds.stream().filter(ids::contains).collect(Collectors.toList());
-			List<MgrOrganization> mgrOrganizations = mgrOrganizationDao.listByIds(intersection);
-			mgrOrganizations.forEach(l -> l.setB(map.get(l.getId())));
-			return mgrOrganizations;
-		}
-		return new ArrayList<>();
+		List<MgrUserRole> userRoleList = getUserRoles(user);
+		List<Long> ids = new LinkedList<Long>();
+		userRoleList.forEach(r ->ids.add(r.getOrganizationId()));
+		// 取并集
+		List<Long> union = Stream.concat(organizationIds.stream(), ids.stream()).distinct().collect(Collectors.toList());
+		return mgrOrganizationDao.listByIds(union);
 	}
 
 	public List<MgrUserRole> getUserRoles(MgrUser user){
@@ -416,7 +407,7 @@ public class MgrUserService {
 
 		List<MgrOrganization> workarkOrganizationList = getWorkarkOrganizationList(user);
 		MgrOrganization workarkCurrentOrganization = null;
-		if(user.getLastWorkarkOrganizationId() != -1) {
+		if(user.getLastWorkarkOrganizationId() == -1) {
 			if(workarkOrganizationList.size() > 0){
 			    workarkCurrentOrganization = workarkOrganizationList.get(0);
 			}
@@ -428,19 +419,24 @@ public class MgrUserService {
         if(this.isSupperAdmin(user)) {
             workarkCurrentUserRole = getUserRole(user, -1);
         }else {
-            if(workarkCurrentUserRole != null) {
-                workarkCurrentUserRole = getUserRole(user, workarkCurrentOrganization.getId());
-            }
+        	workarkCurrentUserRole = getUserRole(user, workarkCurrentOrganization.getId());
         }
         if(workarkCurrentUserRole!= null && workarkCurrentOrganization!=null && workarkCurrentUserRole.isAdmin()) {
             MgrResource workarkDefaultResource = getWorkarkDefaultResource();
-			if (workarkCurrentOrganization.getFacilitator() == 0) {
+			if(workarkCurrentUserRole.getOrganizationId() == -1) {
 				workarkCurrentUserRole.setWorkarkResources(workarkDefaultResource.getEnterpriseData());
 				workarkCurrentUserRole.setWorkarkMenus(workarkDefaultResource.getEnterpriseComment());
-			}
-			if (workarkCurrentOrganization.getFacilitator() == 1) {
 				workarkCurrentUserRole.setWorkarkResources(workarkDefaultResource.getProviderData());
 				workarkCurrentUserRole.setWorkarkMenus(workarkDefaultResource.getProviderComment());
+			}else {
+				if (workarkCurrentOrganization.getFacilitator() == 0) {
+					workarkCurrentUserRole.setWorkarkResources(workarkDefaultResource.getEnterpriseData());
+					workarkCurrentUserRole.setWorkarkMenus(workarkDefaultResource.getEnterpriseComment());
+				}
+				if (workarkCurrentOrganization.getFacilitator() == 1) {
+					workarkCurrentUserRole.setWorkarkResources(workarkDefaultResource.getProviderData());
+					workarkCurrentUserRole.setWorkarkMenus(workarkDefaultResource.getProviderComment());
+				}
 			}
         }