Просмотр исходного кода

Merge branch 'feature/新版应用市场数据同步及展现' into 'develop'

Merge of feature/[平台]新版应用市场数据同步及展现 to develop

See merge request o2oa/o2oa!872
o2null 5 лет назад
Родитель
Сommit
cae2bacc3d

+ 5 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Collect.java

@@ -31,6 +31,11 @@ public class Collect extends ConfigObject {
 	private static String Default_appUrl = "https://sample.o2oa.net/app/download.html";
 	private static String Default_server = "collect.o2oa.net";
 	private static Integer Default_port = 20080;
+	public static String ADDRESS_COLLECT_LOGIN = "/o2_collect_assemble/jaxrs/authentication/captcha/key/o2/answer/o2";
+	public static String ADDRESS_COLLECT_ECHO = "/o2_collect_assemble/jaxrs/echo";
+	public static String ADDRESS_COLLECT_VALIDATE = "/o2_collect_assemble/jaxrs/unit/validate";
+	public static String ADDRESS_COLLECT_VALIDATE_CODE = "/o2_collect_assemble/jaxrs/unit/validate/codeanswer";
+	public static String ADDRESS_COLLECT_APPLICATION_LIST = "/o2_collect_assemble/jaxrs/application/list";
 
 	public static Collect defaultInstance() {
 		return new Collect();

+ 2 - 2
o2server/x_base_core_project/src/main/java/com/x/base/core/project/http/FilterTools.java

@@ -11,7 +11,7 @@ public class FilterTools {
 	public static final String Access_Control_Allow_Methods = "Access-Control-Allow-Methods";
 	public static final String Access_Control_Allow_Methods_Value = "GET, POST, OPTIONS, PUT, DELETE, HEAD, TRACE";
 	public static final String Access_Control_Allow_Headers = "Access-Control-Allow-Headers";
-	public static final String Access_Control_Allow_Headers_Value = "x-requested-with, x-request, x-token,Content-Type, Content-Length, x-cipher, x-client, x-debugger, Authorization";
+	public static final String Access_Control_Allow_Headers_Value = "x-requested-with, x-request, x-token, c-token, Content-Type, Content-Length, x-cipher, x-client, x-debugger, Authorization";
 	public static final String Access_Control_Allow_Credentials = "Access-Control-Allow-Credentials";
 	public static final String Access_Control_Expose_Headers = "Access-Control-Expose-Headers";
 
@@ -22,7 +22,7 @@ public class FilterTools {
 			response.addHeader(Access_Control_Allow_Methods, Access_Control_Allow_Methods_Value);
 			response.addHeader(Access_Control_Allow_Headers, Access_Control_Allow_Headers_Value);
 			response.addHeader(Access_Control_Allow_Credentials, "true");
-			response.setHeader(Access_Control_Expose_Headers, HttpToken.X_Token);
+			response.setHeader(Access_Control_Expose_Headers, "x-token, c-token");
 		} catch (Exception e) {
 			throw e;
 		}

+ 9 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/http/HttpToken.java

@@ -138,6 +138,15 @@ public class HttpToken {
 		}
 	}
 
+	public void setResponseToken(HttpServletRequest request, HttpServletResponse response,
+								  String tokenName, String token) throws Exception {
+		if (!StringUtils.isEmpty(token)) {
+			String cookie = tokenName + "=" + token + "; path=/; domain=" + this.domain(request);
+			response.setHeader("Set-Cookie", cookie);
+			response.setHeader(tokenName, token);
+		}
+	}
+
 	public String getToken(HttpServletRequest request) throws Exception {
 		String token = null;
 		token = URLTools.getQueryStringParameter(request.getQueryString(), X_Token);

+ 119 - 0
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/collect/ActionLogin.java

@@ -0,0 +1,119 @@
+package com.x.program.center.jaxrs.collect;
+
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.config.Collect;
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.connection.ActionResponse;
+import com.x.base.core.project.connection.ConnectionAction;
+import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.http.HttpToken;
+import com.x.base.core.project.http.TokenType;
+import org.apache.commons.lang3.BooleanUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+class ActionLogin extends BaseAction {
+
+	public static final String C_Token = "c-token";
+
+	ActionResult<Wo> execute(HttpServletRequest request, HttpServletResponse response, EffectivePerson effectivePerson) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Wo wo = new Wo();
+		if(BooleanUtils.isFalse(Config.collect().getEnable())){
+			throw new ExceptionDisable();
+		}
+		if (!this.connect()) {
+			throw new ExceptionUnableConnect();
+		}
+
+		String url = Config.collect().url(Collect.ADDRESS_COLLECT_LOGIN);
+		Map<String, String> map = new HashMap<>();
+		map.put("credential", Config.collect().getName());
+		map.put("password", Config.collect().getPassword());
+		ActionResponse resp = ConnectionAction.post(url, null, map);
+		LoginWo loginWo = resp.getData(LoginWo.class);
+
+		HttpToken httpToken = new HttpToken();
+		httpToken.setResponseToken(request, response, C_Token, loginWo.getToken());
+
+		wo.setCollectToken(loginWo.getToken());
+		wo.setCollectTokenType(loginWo.getTokenType());
+		wo.setCollectUrl(Config.collect().url());
+		result.setData(wo);
+		return result;
+	}
+
+	public static class Wo extends GsonPropertyObject {
+		@FieldDescribe("collect服务地址")
+		private String collectUrl;
+		@FieldDescribe("collect令牌")
+		private String collectToken;
+		@FieldDescribe("collect令牌类型")
+		private TokenType collectTokenType;
+
+		public String getCollectUrl() {
+			return collectUrl;
+		}
+
+		public void setCollectUrl(String collectUrl) {
+			this.collectUrl = collectUrl;
+		}
+
+		public String getCollectToken() {
+			return collectToken;
+		}
+
+		public void setCollectToken(String collectToken) {
+			this.collectToken = collectToken;
+		}
+
+		public TokenType getCollectTokenType() {
+			return collectTokenType;
+		}
+
+		public void setCollectTokenType(TokenType collectTokenType) {
+			this.collectTokenType = collectTokenType;
+		}
+	}
+
+	public static class LoginWo extends GsonPropertyObject {
+
+		@FieldDescribe("令牌")
+		private String token;
+		@FieldDescribe("名称")
+		private String name;
+		@FieldDescribe("令牌类型")
+		private TokenType tokenType;
+
+		public String getToken() {
+			return token;
+		}
+
+		public void setToken(String token) {
+			this.token = token;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			this.name = name;
+		}
+
+		public TokenType getTokenType() {
+			return tokenType;
+		}
+
+		public void setTokenType(TokenType tokenType) {
+			this.tokenType = tokenType;
+		}
+
+	}
+
+}

+ 3 - 3
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/collect/BaseAction.java

@@ -30,7 +30,7 @@ class BaseAction extends StandardJaxrsAction {
 
 	Boolean connect() {
 		try {
-			String url = Config.collect().url("/o2_collect_assemble/jaxrs/echo");
+			String url = Config.collect().url(Collect.ADDRESS_COLLECT_ECHO);
 			ActionResponse actionResponse = ConnectionAction.get(url, null);
 			if (Objects.equals(Type.success, actionResponse.getType())) {
 				return true;
@@ -44,7 +44,7 @@ class BaseAction extends StandardJaxrsAction {
 	}
 
 	Boolean validate(String name, String password) throws Exception {
-		String url = Config.collect().url("/o2_collect_assemble/jaxrs/unit/validate");
+		String url = Config.collect().url(Collect.ADDRESS_COLLECT_VALIDATE);
 		Map<String, String> map = new HashMap<>();
 		map.put("name", name);
 		map.put("password", password);
@@ -53,7 +53,7 @@ class BaseAction extends StandardJaxrsAction {
 	}
 
 	Boolean validateCodeAnswer(String mobile, String codeAnswer) throws Exception {
-		String url = Config.collect().url("/o2_collect_assemble/jaxrs/unit/validate/codeanswer");
+		String url = Config.collect().url(Collect.ADDRESS_COLLECT_VALIDATE_CODE);
 		Map<String, String> map = new HashMap<>();
 		map.put("mobile", mobile);
 		map.put("codeAnswer", codeAnswer);

+ 19 - 0
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/collect/CollectAction.java

@@ -13,6 +13,7 @@ import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.*;
 import javax.ws.rs.container.AsyncResponse;
 import javax.ws.rs.container.Suspended;
@@ -307,4 +308,22 @@ public class CollectAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@GET
+	@Path("login")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@JaxrsMethodDescribe(value = "登录collect服务", action = ActionLogin.class)
+	public void login(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					  @Context HttpServletResponse response) {
+		ActionResult<ActionLogin.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionLogin().execute(request, response, effectivePerson);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 }