From 5596bf1bbf77742e63d098ebc6240189237b3e78 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 19 Jan 2021 14:01:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E4=B8=8E?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E5=B9=B3=E5=8F=B0=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/commons/thirdplat/DemoApp.java | 1 + .../apiservice/jcet/JcetApiService.java | 58 ++++++++++++------- .../thirdplat/constants/JcetApiUrls.java | 8 --- .../thirdplat/constants/JcetConstants.java | 14 +++++ .../tools/utils/HttpClientManager.java | 48 +++++++++++++++ 5 files changed, 99 insertions(+), 30 deletions(-) delete mode 100644 epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetApiUrls.java create mode 100644 epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetConstants.java diff --git a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/DemoApp.java b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/DemoApp.java index 92d525b186..43b27e385b 100644 --- a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/DemoApp.java +++ b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/DemoApp.java @@ -2,6 +2,7 @@ package com.epmet.commons.thirdplat; import com.alibaba.fastjson.JSON; import com.epmet.commons.thirdplat.dto.form.jcet.SsoTicketFormDTO; +import com.epmet.commons.thirdplat.dto.form.jcet.SsoTokenFormDTO; import com.epmet.commons.thirdplat.encrypt.SignUtils; import java.io.UnsupportedEncodingException; diff --git a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/apiservice/jcet/JcetApiService.java b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/apiservice/jcet/JcetApiService.java index ca2e1ac1a8..7100d71b3b 100644 --- a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/apiservice/jcet/JcetApiService.java +++ b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/apiservice/jcet/JcetApiService.java @@ -2,8 +2,9 @@ package com.epmet.commons.thirdplat.apiservice.jcet; import com.alibaba.fastjson.JSON; import com.epmet.commons.thirdplat.apiservice.AbstractApiService; -import com.epmet.commons.thirdplat.constants.JcetApiUrls; +import com.epmet.commons.thirdplat.constants.JcetConstants; import com.epmet.commons.thirdplat.dto.form.jcet.SsoTicketFormDTO; +import com.epmet.commons.thirdplat.dto.form.jcet.SsoTokenFormDTO; import com.epmet.commons.thirdplat.dto.result.jcet.UserInfoResultDTO; import com.epmet.commons.thirdplat.encrypt.SignUtils; import com.epmet.commons.thirdplat.properties.JcetThirdplatProps; @@ -26,35 +27,47 @@ public class JcetApiService extends AbstractApiService { jcetThirdplatProps = props.getJcet(); } - public UserInfoResultDTO login(String ticket) { - - try { - UserInfoResultDTO userInfoByTicket = getUserInfoByTicket(ticket); - // todo - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - - return null; - } - + /** + * @return + * @Description 通过第三方平台ticket获取用户信息 + * @author wxz + * @date 2021.01.19 10:26 + */ public UserInfoResultDTO getUserInfoByTicket(String ticket) throws UnsupportedEncodingException { SsoTicketFormDTO ssoTicket = new SsoTicketFormDTO(); ssoTicket.setSsoTicket(ticket); - Result result = HttpClientManager.getInstance().sendPostByJSONAndHeader( - jcetThirdplatProps.getDomain().concat(JcetApiUrls.GET_USER_BY_TICKET), - JSON.toJSONString(ssoTicket), getHeaders(ssoTicket)); + + String domain = jcetThirdplatProps.getDomain(); + Result result = HttpClientManager.getInstance().sendPost( + domain.concat(JcetConstants.URL_GET_USER_BY_TICKET), + domain.startsWith("https://"), + JSON.toJSONString(ssoTicket), + getHeaders(ssoTicket)); UserInfoResultDTO resultDTO = parseResult(result, UserInfoResultDTO.class); return resultDTO; } - private UserInfoResultDTO getUserInfoByToken(String ticket) throws UnsupportedEncodingException { - SsoTicketFormDTO ssoTicket = new SsoTicketFormDTO(); - ssoTicket.setSsoTicket(ticket); - Result result = HttpClientManager.getInstance().sendPostByJSONAndHeader( - jcetThirdplatProps.getDomain().concat(JcetApiUrls.GET_USER_BY_TICKET), - JSON.toJSONString(ssoTicket), getHeaders(ssoTicket)); + /** + * @return + * @Description 通过token获取用户信息 + * @author wxz + * @date 2021.01.19 10:28 + */ + public UserInfoResultDTO getUserInfoByToken(String token) throws UnsupportedEncodingException { + SsoTokenFormDTO ssoToken = new SsoTokenFormDTO(); + ssoToken.setSsoToken(token); + + HashMap paramMap = new HashMap<>(); + paramMap.put(JcetConstants.PLAT_TOKEN_NAME, token); + + String domain = jcetThirdplatProps.getDomain(); + + Result result = HttpClientManager.getInstance().sendGet( + domain.concat(JcetConstants.URL_GET_USER_BY_TOKEN), + domain.startsWith("https://"), + paramMap, + getHeaders(ssoToken)); UserInfoResultDTO resultDTO = parseResult(result, UserInfoResultDTO.class); return resultDTO; @@ -62,6 +75,7 @@ public class JcetApiService extends AbstractApiService { /** * 获取请求所需要的头信息 + * * @param contentObject * @return * @throws UnsupportedEncodingException diff --git a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetApiUrls.java b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetApiUrls.java deleted file mode 100644 index ee0438c5cd..0000000000 --- a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetApiUrls.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.epmet.commons.thirdplat.constants; - -public interface JcetApiUrls { - - // 根据ticket查询用户 - String GET_USER_BY_TICKET = "/openapi-cgw/openapi-login/sso/getUserInfoByTicket"; - -} diff --git a/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetConstants.java b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetConstants.java new file mode 100644 index 0000000000..34d4995bd7 --- /dev/null +++ b/epmet-commons/epmet-commons-thirdplat/src/main/java/com/epmet/commons/thirdplat/constants/JcetConstants.java @@ -0,0 +1,14 @@ +package com.epmet.commons.thirdplat.constants; + +public interface JcetConstants { + + String URL_GET_USER_BY_TICKET = "/openapi-cgw/openapi-login/sso/getUserInfoByTicket"; + String URL_GET_USER_BY_TOKEN = "/openapi-cgw/openapi-login/sso/getUserInfoByToken"; + + String PLAT_TICKET_NAME = "ssoTicket"; + String PLAT_TOKEN_NAME = "ssoToken"; + + String PLAT_HEADER_OPEN_TIMESTAMP = "openTimestamp"; + String PLAT_HEADER_OPEN_APP_ID = "openAppId"; + String PLAT_HEADER_OPEN_SIGN = "openSign"; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java index ff83e56210..0c83bfdede 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java @@ -188,6 +188,29 @@ public class HttpClientManager { } + public Result sendPost(String url, boolean isHttps, String jsonStrParam,Map headerMap) { + + try { + HttpPost httppost = new HttpPost(url); + httppost.setConfig(requestConfig); + httppost.addHeader(HEADER_CONTENT_TYPE, HEADER_APPLICATION_JSON); + if (null != headerMap){ + headerMap.forEach((k,v) -> { + httppost.addHeader(k,v); + }); + } + if (StringUtils.isNotEmpty(jsonStrParam)) { + StringEntity se = new StringEntity(jsonStrParam, UTF8); + httppost.setEntity(se); + } + return execute(httppost, isHttps); + } catch (Exception e) { + log.error("send exception", e); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + + } + /** * 上传临时素材 * @author zhaoqifeng @@ -325,6 +348,31 @@ public class HttpClientManager { } } + public Result sendGet(String url, boolean isHttps, Map params, Map headerMap) { + + try { + URIBuilder builder = new URIBuilder(url); + if (!CollectionUtils.isEmpty(params)) { + Set set = params.keySet(); + for (String key : set) { + builder.setParameter(key, params.get(key) == null ? "" : String.valueOf(params.get(key))); + } + } + + HttpGet httpGet = new HttpGet(builder.build()); + httpGet.setConfig(requestConfig); + if (null != headerMap){ + headerMap.forEach((k,v) -> { + httpGet.addHeader(k,v); + }); + } + return execute(httpGet, isHttps); + } catch (Exception e) { + log.error("sendGet exception", e); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + } + private Result execute(HttpRequestBase httpMethod, boolean isHttps) { CloseableHttpResponse response = null; try {