From 5b5f275a4b7eb609b813cf99ee2bcc9646f0704a Mon Sep 17 00:00:00 2001 From: ajaxfan <909938737@qq.com> Date: Tue, 16 Feb 2021 09:55:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E8=AE=A4=E8=AF=81=E6=9C=8D=E5=8A=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/entity/AuthorityEntity.java | 5 +- .../filter/TokenAuthenticationFilter.java | 25 +-- .../security-configuration.properties | 2 +- uboot-common/pom.xml | 12 +- .../base/service/IBaseCacheUserService.java | 4 +- .../impl/BaseCacheUserServiceImpl.java | 105 +++------ .../mall/ebtp/common/config/FeignConfig.java | 21 +- .../mall/ebtp/common/config/WebConfig.java | 10 +- .../uniBss/constant/UniBssConstant.java | 47 ++++ .../ebtp/common/uniBss/entity/UniBss.java | 21 ++ .../common/uniBss/entity/UniBssAttached.java | 20 ++ .../ebtp/common/uniBss/entity/UniBssBody.java | 25 +++ .../ebtp/common/uniBss/entity/UniBssHead.java | 29 +++ .../uniBss/service/UniBssServiceImpl.java | 207 ++++++++++++++++++ 14 files changed, 421 insertions(+), 112 deletions(-) create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/constant/UniBssConstant.java create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBss.java create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssAttached.java create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssBody.java create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssHead.java create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/service/UniBssServiceImpl.java diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/AuthorityEntity.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/AuthorityEntity.java index e050168..c664703 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/AuthorityEntity.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/entity/AuthorityEntity.java @@ -7,10 +7,9 @@ import lombok.Data; @Data public class AuthorityEntity { - private String roleId; private String roleName; private String roleCode; - private String roleScope; + private String roleId; private List authorities; - + } diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java index d34dec0..dc262ba 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java @@ -11,6 +11,9 @@ import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -19,7 +22,7 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.filter.OncePerRequestFilter; import com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants; -import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityEntity; +import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityUser; import lombok.extern.slf4j.Slf4j; @@ -32,7 +35,7 @@ import lombok.extern.slf4j.Slf4j; public class TokenAuthenticationFilter extends OncePerRequestFilter { private @Autowired RestTemplate restTemplate; - private @Value("${user.auth.resource.token-info-uri}") String token_uri; + private @Value("${user.auth.resource.userinfo}") String token_uri; /** * @param request @@ -71,20 +74,14 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { * @return */ private Authentication getAuthentication(String token) { - ResponseEntity entity = restTemplate.getForEntity(createRequestUri(token), - SecurityEntity.class); + HttpHeaders headers = new HttpHeaders(); + // 设置安全头 + headers.add(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token)); + + ResponseEntity entity = restTemplate.exchange(token_uri, HttpMethod.GET, + new HttpEntity(headers), SecurityUser.class); return new UsernamePasswordAuthenticationToken(entity.getBody(), token); } - /** - * 生成山分认证中心请求接口地址 - * - * @param token - * @return - */ - private String createRequestUri(String token) { - return new StringBuilder(token_uri).append("?token=").append(token).toString(); - } - } diff --git a/mall-ebtp-cloud-security-starter/src/main/resources/security-configuration.properties b/mall-ebtp-cloud-security-starter/src/main/resources/security-configuration.properties index e9069d9..0c36cbc 100644 --- a/mall-ebtp-cloud-security-starter/src/main/resources/security-configuration.properties +++ b/mall-ebtp-cloud-security-starter/src/main/resources/security-configuration.properties @@ -1,2 +1,2 @@ -user.auth.resource.token-info-uri=http://10.242.31.158:8100/mall-auth/oauth/check_token +user.auth.resource.token-info-uri=http://10.242.31.158:8100/core-service-ebtp-userinfo/v1/userinfo/get user.auth.csrf.disable=true \ No newline at end of file diff --git a/uboot-common/pom.xml b/uboot-common/pom.xml index 196f29f..c109f01 100644 --- a/uboot-common/pom.xml +++ b/uboot-common/pom.xml @@ -49,7 +49,7 @@ com.chinaunicom.ebtp mall-ebtp-cloud-security-starter - + org.springframework.boot @@ -59,12 +59,18 @@ io.micrometer micrometer-registry-prometheus - + org.apache.poi poi-ooxml - + + + com.alibaba + fastjson + 1.2.60 + + diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/IBaseCacheUserService.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/IBaseCacheUserService.java index c6a5552..e720a12 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/IBaseCacheUserService.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/IBaseCacheUserService.java @@ -1,9 +1,9 @@ package com.chinaunicom.mall.ebtp.common.base.service; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; - import java.util.Collection; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; + /** * 缓存用户service * 获取缓存用户信息 diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java index 1cce8e8..ffa0099 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java @@ -1,18 +1,18 @@ package com.chinaunicom.mall.ebtp.common.base.service.impl; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; -import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; -import com.chinaunicom.mall.ebtp.common.util.JsonUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.springframework.beans.BeanUtils; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; + +import lombok.extern.slf4j.Slf4j; + /** * 缓存用户service实现层 获取缓存用户信息 * @@ -23,80 +23,27 @@ import java.util.concurrent.ConcurrentHashMap; @Service @Slf4j public class BaseCacheUserServiceImpl implements IBaseCacheUserService { - // TODO 设置种子ID, 对其雪花ID长度 - private static final long ID_SEED = 1345977833027100000L; - private static final Map USERS = new ConcurrentHashMap<>(); + private static final Map USERS = new ConcurrentHashMap<>(); + @Override + public BaseCacheUser getCacheUser() { + try { + BaseCacheUser buser = new BaseCacheUser(); + BeanUtils.copyProperties(SecurityContextHolder.getContext().getAuthentication().getPrincipal(), buser); - @Override - public BaseCacheUser getCacheUser() { - BaseCacheUser user = null; - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attributes != null) { - HttpServletRequest request = attributes.getRequest(); - String token = request.getHeader("JwtToken"); - if (token != null) { - user = USERS.get(token); - } - } - log.info(" --------------- 当前用户信息:" + JsonUtils.objectToJson(user) + " ------------------------------"); - return user; - } + log.debug("Current user principal: " + buser); - @Override - public Collection getUsers() { - return USERS.values(); - } + return buser; + } catch (Exception e) { + log.error(e.getMessage()); + } + return new BaseCacheUser(); + } - /** - * @param string - * @return - */ - // TODO: 山东框架使用未使用雪花ID存放字符串,暂时使用该方法进行id转换 - private Long getUserId(String rawUid) { - long id = ID_SEED; - byte[] bytes = rawUid.getBytes(); + @Override + public Collection getUsers() { + return USERS.values(); + } - for (byte b : bytes) { - id += b; - } - return id; - } - - static { - BaseCacheUser user = new BaseCacheUser().setUserId("1").setFullName("采购经理").setLoginName("caigou") - .setRoleIds("caigou").setOrganizationId("100").setOrganizationName("中国联通吉林分公司"); - USERS.put(String.valueOf(user.getUserId()), user); - - BaseCacheUser user0 = new BaseCacheUser().setUserId("2").setFullName("代理机构管理员").setLoginName("daili-admin") - .setRoleIds("daili-admin").setOrganizationId("100100").setOrganizationName("中兴代理公司"); - USERS.put(String.valueOf(user0.getUserId()), user0); - - BaseCacheUser user1 = new BaseCacheUser().setUserId("3").setFullName("代理机构子管理员").setLoginName("daili-subadmin") - .setRoleIds("daili-subadmin").setOrganizationId("100100").setOrganizationName("中兴代理公司"); - USERS.put(String.valueOf(user1.getUserId()), user1); - - BaseCacheUser user2 = new BaseCacheUser().setUserId("4").setFullName("项目经理1").setLoginName("daili1") - .setRoleIds("daili").setOrganizationId("100100").setOrganizationName("中兴代理公司"); - USERS.put(String.valueOf(user2.getUserId()), user2); - - BaseCacheUser user3 = new BaseCacheUser().setUserId("5").setFullName("项目经理2").setLoginName("daili2") - .setRoleIds("daili").setOrganizationId("100100").setOrganizationName("中兴代理公司"); - USERS.put(String.valueOf(user3.getUserId()), user3); - - for (int i = 0; i < 5; i++) { - BaseCacheUser user4 = new BaseCacheUser().setUserId(String.valueOf(6 + i)).setFullName("专家" + (i + 1)) - .setLoginName("1300000000" + (i + 1)).setRoleIds("zhuanjia").setOrganizationId("666") - .setOrganizationName("专家公司"); - USERS.put(String.valueOf(user4.getUserId()), user4); - } - - for (int i = 0; i < 5; i++) { - BaseCacheUser user4 = new BaseCacheUser().setUserId(String.valueOf(11 + i)).setFullName("供应商" + (i + 1)) - .setLoginName("gys" + (i + 1)).setRoleIds("gys").setOrganizationId("200" + (i + 1)) - .setOrganizationName("供应商公司" + (i + 1)); - USERS.put(String.valueOf(user4.getUserId()), user4); - } - } } diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java index 8546457..70b0f5e 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java @@ -1,7 +1,10 @@ package com.chinaunicom.mall.ebtp.common.config; -import javax.servlet.http.HttpServletRequest; +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER; +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.TOKEN_PREFIX; +import org.apache.commons.lang3.RegExUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -15,14 +18,22 @@ import feign.RequestTemplate; @Configuration public class FeignConfig implements RequestInterceptor { + /** + * @param template + */ @Override public void apply(RequestTemplate template) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - + if (null != attributes) { - HttpServletRequest request = attributes.getRequest(); - String token = request.getHeader("JwtToken"); - template.header("JwtToken", token); + final String header = attributes.getRequest().getHeader(AUTHORIZATION_HEADER);// 提取request头信息 + + // 检查请求头是否包含 Bearer 前缀 + if (StringUtils.startsWith(header, TOKEN_PREFIX)) { + String authToken = RegExUtils.replaceAll(header, TOKEN_PREFIX, "");// 提取 token 信息 + + template.header(AUTHORIZATION_HEADER, String.format("%s%s", TOKEN_PREFIX, authToken)); + } } } diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/WebConfig.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/WebConfig.java index cbe40c1..f54f7fd 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/WebConfig.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/WebConfig.java @@ -1,8 +1,10 @@ package com.chinaunicom.mall.ebtp.common.config; -import java.util.List; - +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.ByteArrayHttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.ResourceHttpMessageConverter; @@ -11,9 +13,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import java.util.List; /** * @author dino diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/constant/UniBssConstant.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/constant/UniBssConstant.java new file mode 100644 index 0000000..4ac81bb --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/constant/UniBssConstant.java @@ -0,0 +1,47 @@ +package com.chinaunicom.mall.ebtp.common.uniBss.constant; + +import java.util.HashMap; +import java.util.Map; + +public class UniBssConstant { + public static String RESP_CODE_00000 = "00000";// 成功 + public static String RESP_CODE_A00001 = "A00001";//app_id校验失败 + public static String RESP_CODE_A00002 = "A00002";//应用未订购服务、Token解析失败 + public static String RESP_CODE_A00003 = "A00003";//请求IP不在源IP允许范围内 + public static String RESP_CODE_A00004 = "A00004";//所有能力日总调用次数超过阀值 + public static String RESP_CODE_A00005 = "A00005";//此能力日总调用次数超过阀值 + public static String RESP_CODE_A00006 = "A00006";//所有能力并发请求数超过阀值 + public static String RESP_CODE_A00007 = "A00007";//此能力并发请求数超过阀值 + public static String RESP_CODE_A00008 = "A00008";//所有能力时间段内调用次数超过阀值 + public static String RESP_CODE_A88888 = "A88888";//下游返回错误的集合体 + public static String RESP_CODE_A99997 = "A99997";//请求报文校验出错 + public static String RESP_CODE_A99999 = "A99999";//服务没有签到 + public static String RESP_CODE_C10000 = "C10000";//请求url格式校验错误 + public static String RESP_CODE_C10001 = "C10001";//请求服务标识错误 + public static String RESP_CODE_C10002 = "C10002";//请求能力标识错误 + public static String RESP_CODE_N20000 = "N20000";//能力调用超时 + + private static Map RESP_CODE_Map = new HashMap(); + static { + RESP_CODE_Map.put(RESP_CODE_00000 , "成功"); + RESP_CODE_Map.put(RESP_CODE_A00001, "app_id校验失败"); + RESP_CODE_Map.put(RESP_CODE_A00002, "应用未订购服务、Token解析失败"); + RESP_CODE_Map.put(RESP_CODE_A00003, "请求IP不在源IP允许范围内"); + RESP_CODE_Map.put(RESP_CODE_A00004, "所有能力日总调用次数超过阀值"); + RESP_CODE_Map.put(RESP_CODE_A00005, "此能力日总调用次数超过阀值"); + RESP_CODE_Map.put(RESP_CODE_A00006, "所有能力并发请求数超过阀值"); + RESP_CODE_Map.put(RESP_CODE_A00007, "此能力并发请求数超过阀值"); + RESP_CODE_Map.put(RESP_CODE_A00008, "所有能力时间段内调用次数超过阀值"); + RESP_CODE_Map.put(RESP_CODE_A88888, "下游返回错误的集合体"); + RESP_CODE_Map.put(RESP_CODE_A99997, "请求报文校验出错"); + RESP_CODE_Map.put(RESP_CODE_A99999, "服务没有签到"); + RESP_CODE_Map.put(RESP_CODE_C10000, "请求url格式校验错误"); + RESP_CODE_Map.put(RESP_CODE_C10001, "请求服务标识错误"); + RESP_CODE_Map.put(RESP_CODE_C10002, "请求能力标识错误"); + RESP_CODE_Map.put(RESP_CODE_N20000, "能力调用超时"); + } + + public static String getRESP_CODE_Map(String state) { + return RESP_CODE_Map.get(state); + } +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBss.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBss.java new file mode 100644 index 0000000..40d8558 --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBss.java @@ -0,0 +1,21 @@ +package com.chinaunicom.mall.ebtp.common.uniBss.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 实体类 总 + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +public class UniBss{ + @JSONField(name = "UNI_BSS_ATTACHED") + private UniBssAttached uniBssAttached; + @JSONField(name = "UNI_BSS_BODY") + private UniBssBody uniBssBody; + @JSONField(name = "UNI_BSS_HEAD") + private UniBssHead uniBssHead; +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssAttached.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssAttached.java new file mode 100644 index 0000000..5467127 --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssAttached.java @@ -0,0 +1,20 @@ +package com.chinaunicom.mall.ebtp.common.uniBss.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 暂时没用 + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +public class UniBssAttached implements Serializable { + @JSONField(name = "MEDIA_INFO") + private String mediaInf; + +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssBody.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssBody.java new file mode 100644 index 0000000..8cbd19b --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssBody.java @@ -0,0 +1,25 @@ +package com.chinaunicom.mall.ebtp.common.uniBss.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** + * 实体类 业务参数实体类 + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +public class UniBssBody implements Serializable { + @JSONField(name = "SINGLE_ORDER_QRY_REQ") + private Map singleOrderQryReq = new HashMap<>(); + + @JSONField(name = "SINGLE_ORDER_QRY_RSP") + private String singleOrderQryRsp; + +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssHead.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssHead.java new file mode 100644 index 0000000..60b1391 --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/entity/UniBssHead.java @@ -0,0 +1,29 @@ +package com.chinaunicom.mall.ebtp.common.uniBss.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 天擎权限 + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +public class UniBssHead implements Serializable { + @JSONField(name = "APP_ID") + private String appId; + @JSONField(name = "TIMESTAMP") + private String timeStamp; + @JSONField(name = "TRANS_ID") + private String transId; + @JSONField(name = "TOKEN") + private String token; + @JSONField(name = "RESP_DESC") + private String respDesc; + @JSONField(name = "RESP_CODE") + private String respCode; +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/service/UniBssServiceImpl.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/service/UniBssServiceImpl.java new file mode 100644 index 0000000..6276936 --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/uniBss/service/UniBssServiceImpl.java @@ -0,0 +1,207 @@ +package com.chinaunicom.mall.ebtp.common.uniBss.service; + +import cn.hutool.core.exceptions.ExceptionUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.chinaunicom.mall.ebtp.common.uniBss.entity.UniBss; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.security.MessageDigest; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class UniBssServiceImpl { + /** + * 天擎token 32位MD5小写加密 + * @param str 未加密字符串 + * @return + */ + public static String MD5min(String str) { + String result = ""; + try { + MessageDigest md5 = MessageDigest.getInstance("MD5"); + md5.update((str).getBytes("UTF-8")); + byte b[] = md5.digest(); + + int i; + StringBuffer buf = new StringBuffer(""); + + for(int offset=0; offset uniBssRspToMap(String rsp) { + Map map = new HashMap(); + try{ + String qs[] = rsp.split("\n"); + for(String q : qs){ + if(q.indexOf("signMsg=")>=0){ + String qs2 = q.substring("signMsg=".length(),q.length()); + map.put("signMsg", qs2); + }else { + String qs2[] = q.split("="); + map.put(qs2[0], qs2.length > 1 && qs2[1] != null && !"".equals(qs2[1]) ? qs2[1] : ""); + } + } + }catch (Exception e){ + log.info(ExceptionUtil.stacktraceToString(e)); + } + return map; + } + + + public static void main(String arge[]){ +/* String rsp = "signMsg=xxxdfsdfs=="; + Map map = uniBssRspToMap(rsp); + System.out.println(map);*/ +/* SignMsgGenFacadeImpl sing = new SignMsgGenFacadeImpl(); + sing.app_id = "2ICalrrQ0F"; + sing.app_secret = "1mb6n6635cJkDb3pEQPUFXc2nRJ8RPaS"; + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); + SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String TIMESTAMP = format.format(date); + String TRANS_ID = format2.format(date)+(int)((Math.random()*9+1)*100000); + String s = "APP_ID+"+sing.app_id+"+TIMESTAMP"+TIMESTAMP+"TRANS_ID"+TRANS_ID+sing.app_secret; + String token = MD5min(s); + uniBss uniBss = new uniBss(); + uniBss.setUniBssAttached(new uniBssAttached().setMediaInf("")); + + uniBssHead head = new uniBssHead(); + head.setAppId(sing.app_id); + head.setTimeStamp(TIMESTAMP); + head.setTransId(TRANS_ID); + head.setToken(token); + uniBss.setUniBssHead(head); + + uniBssBody body = new uniBssBody(); + try { + //List configList = this.ibizBidPayConfigureService.getlist(new BizBidPayConfigure()); + //Map configMap = Utils.getConfigListToMap(configList); + body.getSingleOrderQryReq().put("merNo", "301104010018985");//商户号 + body.getSingleOrderQryReq().put("orderDate", "20210201"); + body.getSingleOrderQryReq().put("orderNo", "0000000011101202102011547080010");//订单号 + body.getSingleOrderQryReq().put("charSet", "UTF-8"); + body.getSingleOrderQryReq().put("signType", "RSA_SHA256"); + String signMsg = null; + //signMsg = this.getSignMsg(body.getSINGLE_ORDER_QRY_REQ().get("merNo"),body.getSINGLE_ORDER_QRY_REQ().get("signType"),body.getSINGLE_ORDER_QRY_REQ().get("charSet"),body.getSINGLE_ORDER_QRY_REQ()); + body.getSingleOrderQryReq().put("signMsg", signMsg); + uniBss.setUniBssBody(body); + + String json = JSON.toJSONString(uniBss); + System.out.println(json); + }catch (Exception e){ + + }*/ + + //String a ="[{\"APP_ID\":\"1\"}]"; + //List head = JSONArray.parseArray(a,UniBssHead.class); + +/* String s = "{\"UNI_BSS_ATTACHED\":{\"MEDIA_INFO\":\"\"},\"UNI_BSS_BODY\":{\"SINGLE_ORDER_QRY_REQ\":{\"charSet\":\"UTF-8\",\"orderNo\":\"0000000011101202102011547080010\",\"merNo\":\"301104010018985\",\"signType\":\"RSA_SHA256\",\"signMsg\":\"RL3m4USZyNsr9NWh2t5Qa8foJv43PgEfv3FFe%2Bf2E4JX8a52%2Bjr3ygadp%2FYwz%2B0YEOK7YfjqyHpEh%2Fp6QpeXCEbDndKW5xKPv6auRpzYjU6saweAZScXeyEXL%2BnLc1bkaOUHMr27XWEq5LB%2Be%2FeFTJHNILUVUhuEtQVC2fF6xODNggZAEbFJB3y4Ouslcq5tTTOveO%2FBo%2Beh8gxLU5zJoN3zwnvRcu%2Fj7Enmc1jdwT5xUiIGkcU745uIyKtriodDYZS6nfg306H0uEubGADIOFdTnzF99am2hhm1yDzLMcR6incV4oANRlm4GNA79sRhXEC0f%2FQz6Jn%2FkncoDQQu7Q%3D%3D\",\"orderDate\":\"20210201\"}},\"UNI_BSS_HEAD\":{\"APP_ID\":\"2ICalrrQ0F\",\"TIMESTAMP\":\"2021-02-01 19:20:51 155\",\"TRANS_ID\":\"20210201192051155595697\",\"TOKEN\":\"e95a390345d88db8395fe0b94229c9bb\"}}"; + String str = uniBssHttpPost("http://10.124.150.230:8000/api/epay/upay/singleOrderQry/v1",s); + + UniBss uniBss = JSONArray.parseObject(str,UniBss.class); + System.out.println(uniBss.getUniBssHead().getRespDesc()); + String rsp = String.valueOf(uniBss.getUniBssBody().getSingleOrderQryRsp()); + String qs[] = rsp.split("\n"); + Map map = new HashMap(); + for(String q : qs){ + String qs2[] = q.split("="); + map.put(qs2[0], qs2.length>1&&qs2[1]!=null&&!"".equals(qs2[1])?qs2[1]:""); + } + System.out.println(map);*/ + } +}