dcs 1 月之前
父节点
当前提交
a1b19efa9f

+ 36 - 0
virgo.core/src/main/java/com/bosshand/virgo/core/controller/UserContextController.java

@@ -106,6 +106,13 @@ public class UserContextController {
 		return Response.ok(userContext.getOrganizationList());
 	}
 
+	@ApiOperation(value="获取Workark组织列表", notes="获取Workark组织列表")
+	@RequestMapping(value = "/userContext/workark/organization", method = RequestMethod.GET)
+	public Response listWorkarkOrganization() {
+		UserContext userContext = ContextUtils.getUserContext();
+		return Response.ok(userContext.getWorkarkOrganizationList());
+	}
+
 	@ApiOperation(value="获取用户在组织下项目Id", notes="获取用户在组织下项目Id")
 	@RequestMapping(value = "/userContext/project", method = RequestMethod.GET)
 	public Response listProject() {
@@ -130,6 +137,35 @@ public class UserContextController {
 		return Response.ok(identityList);
 	}
 
+	@ApiOperation(value="切换Workark组织", notes="切换Workark组织")
+	@RequestMapping(value = "/userContext/workark/organization", method = RequestMethod.POST)
+	public Response saveLastWorkarkOrganization(@RequestBody MgrOrganization organization) {
+		Subject subject = SecurityUtils.getSubject();
+		if(!subject.isAuthenticated()) {
+			return Response.fail(Constant.CODE_AUTH_FAILED, Constant.RET_AUTH_FAILED);
+		}
+		if(organization == null) {
+			return Response.fail(Constant.CODE_BAD_REQUEST, Constant.RET_BAD_REQUEST);
+		}
+		MgrUser user = ContextUtils.getCurrentUser();
+		if(user.getWorkarkOrganizationList() == null) {
+			return Response.fail(Constant.CODE_BAD_REQUEST, Constant.RET_BAD_REQUEST);
+		}
+		boolean found = false;
+		for(MgrOrganization o : user.getWorkarkOrganizationList()) {
+			if(o.getId() == organization.getId()) {
+				found = true;
+				break;
+			}
+		}
+		if(found == false) {
+			return Response.fail(Constant.CODE_BAD_REQUEST, Constant.RET_ORG_FAILED);
+		}
+		mgrUserService.switchWorkarkOrganization(user, organization);
+		mgrUserService.loadContext(subject);
+		return Response.ok(ContextUtils.getUserContext());
+	}
+
 	@ApiOperation(value="切换组织", notes="切换组织")
 	@RequestMapping(value = "/userContext/organization", method = RequestMethod.POST)
 	public Response saveLastOrganization(@RequestBody MgrOrganization organization) {

+ 44 - 8
virgo.core/src/main/java/com/bosshand/virgo/core/model/UserContext.java

@@ -34,6 +34,8 @@ public class UserContext implements BaseModel{
 
 	private List<MgrOrganization> organizationList;
 
+	private List<MgrOrganization> workarkOrganizationList;
+
 	private long organizationId;
 	
 	private long projectId;
@@ -45,9 +47,13 @@ public class UserContext implements BaseModel{
 	private String roleName;
 	
 	private MgrOrganization organization;
-	
+
+	private MgrOrganization workarkOrganization;
+
 	private MgrUserRole userRole;
-	
+
+	private MgrUserRole workarkUserRole;
+
 	private String resource;
 	
 	private String menu;
@@ -124,6 +130,14 @@ public class UserContext implements BaseModel{
 		this.organization = organization;
 	}
 
+	public MgrOrganization getWorkarkOrganization() {
+		return workarkOrganization;
+	}
+
+	public void setWorkarkOrganization(MgrOrganization workarkOrganization) {
+		this.workarkOrganization = workarkOrganization;
+	}
+
 	public String getResource() {
 		return resource;
 	}
@@ -171,7 +185,15 @@ public class UserContext implements BaseModel{
 	public void setOrganizationList(List<MgrOrganization> organizationList) {
 		this.organizationList = organizationList;
 	}
-	
+
+	public List<MgrOrganization> getWorkarkOrganizationList() {
+		return workarkOrganizationList;
+	}
+
+	public void setWorkarkOrganizationList(List<MgrOrganization> workarkOrganizationList) {
+		this.workarkOrganizationList = workarkOrganizationList;
+	}
+
 	public MgrUserRole getUserRole() {
 		return userRole;
 	}
@@ -179,7 +201,15 @@ public class UserContext implements BaseModel{
 	public void setUserRole(MgrUserRole userRole) {
 		this.userRole = userRole;
 	}
-	
+
+	public MgrUserRole getWorkarkUserRole() {
+		return workarkUserRole;
+	}
+
+	public void setWorkarkUserRole(MgrUserRole workarkUserRole) {
+		this.workarkUserRole = workarkUserRole;
+	}
+
 	public String getSex() {
 		return sex;
 	}
@@ -279,7 +309,7 @@ public class UserContext implements BaseModel{
 		return null;
 	}
 
-	public static UserContext getUserContext(MgrUser user, List<MgrOrganization> organizationList, MgrOrganization currentOrganization, MgrUserRole userRole, Map<Long, Set<JSONObject>> projectListIdentity) {
+	public static UserContext getUserContext(MgrUser user, List<MgrOrganization> workarkOrganizationList,  List<MgrOrganization> organizationList, MgrOrganization workarkCurrentOrganization, MgrOrganization currentOrganization, MgrUserRole workarkCurrentUserRole, MgrUserRole userRole, Map<Long, Set<JSONObject>> projectListIdentity) {
 		if (user != null) {
 			UserContext flowUser = new UserContext();
 			flowUser.setUserId(user.getId());
@@ -296,7 +326,9 @@ public class UserContext implements BaseModel{
 			flowUser.setProjectId(user.getLastProjectId());
 			flowUser.setIdentityId(user.getLastIdentityId());
 			flowUser.setOrganization(currentOrganization);
+			flowUser.setWorkarkOrganization(workarkCurrentOrganization);
 			flowUser.setOrganizationList(organizationList);
+			flowUser.setWorkarkOrganizationList(workarkOrganizationList);
 			if (currentOrganization != null) {
 				flowUser.setOrganizationId(currentOrganization.getId());
 			} else {
@@ -306,12 +338,16 @@ public class UserContext implements BaseModel{
 				flowUser.setAdmin(userRole.isAdmin());
 				flowUser.setMenu(userRole.getMenus());
 				flowUser.setResource(userRole.getResources());
-
-				flowUser.setWorkarkMenu(userRole.getWorkarkMenus());
-				flowUser.setWorkarkResource(userRole.getWorkarkResources());
 			}
 			flowUser.setUserRole(userRole);
 
+			if(workarkCurrentUserRole != null){
+				flowUser.setAdmin(workarkCurrentUserRole.isAdmin());
+				flowUser.setWorkarkMenu(workarkCurrentUserRole.getWorkarkMenus());
+				flowUser.setWorkarkResource(workarkCurrentUserRole.getWorkarkResources());
+			}
+			flowUser.setWorkarkUserRole(workarkCurrentUserRole);
+
 			flowUser.setProjectListIdentity(projectListIdentity);
 			return flowUser;
 		}