|
|
@@ -92,13 +92,24 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
LOGGER.error(":url:{}\n params:{}\ntoken:{}\n返回信息:{}", url, params, token, response);
|
|
|
if (4002 == response.getRet()) {
|
|
|
// 如果返回Ret=4002,token错误的情况下,删除redis中的token,如果是预约订单则将此订单设置为延迟启动
|
|
|
- redisTemplate.delete(RedisKeys.EN_PLUS_TOKEN);
|
|
|
+ redisTemplate.delete(RedisKeys.EN_PLUS_TOKEN + platformName);
|
|
|
throw new BusinessException(ResponseEnum.EN_PLUS_TOKEN_EXCEPTION);
|
|
|
}
|
|
|
throw new BusinessException(ResponseEnum.EN_PLUS_API_EXCEPTION);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 解析平台返回数据为JSONObject
|
|
|
+ *
|
|
|
+ * @param response
|
|
|
+ * @param platformName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ JSONObject parsePlatformResponseData(EnResponse response, String platformName) {
|
|
|
+ return JSONObject.parseObject(PlatformAesUtil.getUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 查询平台互联互通token
|
|
|
@@ -109,10 +120,10 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
@Override
|
|
|
public String queryPlatformToken(String platformName) {
|
|
|
LOGGER.info("查询互联互通平台token:{}", platformName);
|
|
|
- var token = redisTemplate.opsForValue().get(RedisKeys.EN_PLUS_TOKEN);
|
|
|
+ var token = redisTemplate.opsForValue().get(RedisKeys.EN_PLUS_TOKEN + platformName);
|
|
|
if (CommUtil.isNotEmptyAndNull(token)) {
|
|
|
- // todo 不同平台不同key
|
|
|
- LOGGER.debug("从缓存中查询到token:{},ttl:{}", token, redisTemplate.getExpire(RedisKeys.EN_PLUS_TOKEN));
|
|
|
+ // 不同平台不同key
|
|
|
+ LOGGER.debug("从缓存中查询到token:{},ttl:{}", token, redisTemplate.getExpire(RedisKeys.EN_PLUS_TOKEN + platformName));
|
|
|
return token;
|
|
|
}
|
|
|
var data = """
|
|
|
@@ -122,17 +133,17 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
}
|
|
|
""".formatted(OperatorId, OperatorSecret);
|
|
|
|
|
|
- var requestParams = buildParams(platformName, data);
|
|
|
+ var requestParams = buildPlatformParams(platformName, data);
|
|
|
|
|
|
var response = enGetToken(EnPlusApi.EN_PLUS_QUERY_TOKEN.getApi(), requestParams);
|
|
|
|
|
|
if (response != null && 0 == response.getRet()) {
|
|
|
// 解密Data获取token
|
|
|
- var platformRespQueryToken = JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()), EnRespQueryToken.class);
|
|
|
+ var jsonObject = parsePlatformResponseData(response, platformName);
|
|
|
+ var platformRespQueryToken = parse(jsonObject.getString("Data"), EnRespQueryToken.class);
|
|
|
LOGGER.debug("{}接口AccessToken:{}", platformName, platformRespQueryToken.toString());
|
|
|
- // 缓存token,有效期7天(我们这里每次请求en+获取token的有效期并不是从7天开始,有效期是在en+的剩余有效时间)
|
|
|
- // todo 不同平台不同key
|
|
|
- redisTemplate.opsForValue().set(RedisKeys.EN_PLUS_TOKEN, platformRespQueryToken.getAccessToken(), platformRespQueryToken.getTokenAvailableTime(), TimeUnit.SECONDS);
|
|
|
+ // 缓存token不同平台不同key,有效期7天(我们这里每次请求en+获取token的有效期并不是从7天开始,有效期是在en+的剩余有效时间)
|
|
|
+ redisTemplate.opsForValue().set(RedisKeys.EN_PLUS_TOKEN + platformName, platformRespQueryToken.getAccessToken(), platformRespQueryToken.getTokenAvailableTime(), TimeUnit.SECONDS);
|
|
|
return platformRespQueryToken.getAccessToken();
|
|
|
} else {
|
|
|
// 记录错误码,返回错误信息
|
|
|
@@ -167,9 +178,9 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public String buildParams(String platformName, String params) {
|
|
|
+ public String buildPlatformParams(String platformName, String params) {
|
|
|
// 使用DataSecret对data加密
|
|
|
- var dataStr = new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).encrypt(params);
|
|
|
+ var dataStr = PlatformAesUtil.getUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).encrypt(params);
|
|
|
// 时间戳
|
|
|
var timeStamp = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN);
|
|
|
// 自增序列
|
|
|
@@ -211,7 +222,7 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
var sign = mac.digestHex(signString).toUpperCase();
|
|
|
if (sign.equals(Sig)) {
|
|
|
// 解密数据
|
|
|
- return new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(Data);
|
|
|
+ return PlatformAesUtil.getUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(Data);
|
|
|
} else {
|
|
|
// 验签失败
|
|
|
EnResponse enResponse = new EnResponse();
|
|
|
@@ -240,9 +251,9 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
"ConnectorID":"%s"
|
|
|
}
|
|
|
""".formatted(equipAuthSeq, connectorId);
|
|
|
- var response = platformPost(platformName,EnPlusApi.EN_PLUS_QUERY_EQUIP_AUTH.getApi(), buildParams(platformName,param));
|
|
|
+ var response = platformPost(platformName, EnPlusApi.EN_PLUS_QUERY_EQUIP_AUTH.getApi(), buildPlatformParams(platformName, param));
|
|
|
|
|
|
- return JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ return parsePlatformResponseData(response, platformName);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -263,8 +274,8 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
"ConnectorID":"%s"
|
|
|
}
|
|
|
""".formatted(equipBizSeq, connectorId);
|
|
|
- var response = platformPost(platformName,EnPlusApi.EN_PLUS_QUERY_EQUIP_BUSINESS_POLICY.getApi(), buildParams(platformName,param));
|
|
|
- return JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ var response = platformPost(platformName, EnPlusApi.EN_PLUS_QUERY_EQUIP_BUSINESS_POLICY.getApi(), buildPlatformParams(platformName, param));
|
|
|
+ return parsePlatformResponseData(response, platformName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -287,8 +298,8 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
"amount":"%d"
|
|
|
}
|
|
|
""".formatted(startChargeSeq, connectorId, qrCode, amount);
|
|
|
- var response = platformPost(platformName,EnPlusApi.EN_PLUS_QUERY_START_CHARGE.getApi(), buildParams(platformName,param));
|
|
|
- return JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ var response = platformPost(platformName, EnPlusApi.EN_PLUS_QUERY_START_CHARGE.getApi(), buildPlatformParams(platformName, param));
|
|
|
+ return parsePlatformResponseData(response, platformName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -305,8 +316,8 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
"StartChargeSeq":"%s"
|
|
|
}
|
|
|
""".formatted(startChargeSeq);
|
|
|
- var response = platformPost(platformName,EnPlusApi.EN_PLUS_QUERY_EQUIP_CHARGE_STATUS.getApi(), buildParams(platformName,param));
|
|
|
- return JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ var response = platformPost(platformName, EnPlusApi.EN_PLUS_QUERY_EQUIP_CHARGE_STATUS.getApi(), buildPlatformParams(platformName, param));
|
|
|
+ return parsePlatformResponseData(response, platformName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -325,8 +336,8 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
"amount":%d
|
|
|
}
|
|
|
""".formatted(startChargeSeq, amount);
|
|
|
- var response = platformPost(platformName,EnPlusApi.EN_PLUS_QUERY_EQUIP_CHARGE_STATUS.getApi(), buildParams(platformName,param));
|
|
|
- return JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ var response = platformPost(platformName, EnPlusApi.EN_PLUS_QUERY_EQUIP_CHARGE_STATUS.getApi(), buildPlatformParams(platformName, param));
|
|
|
+ return parsePlatformResponseData(response, platformName);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -345,8 +356,8 @@ public class EnPlusServiceImpl implements EnPlusService {
|
|
|
"ConnectorID":"%s"
|
|
|
}
|
|
|
""".formatted(startChargeSeq, connectorId);
|
|
|
- var response = platformPost(platformName,EnPlusApi.EN_PLUS_QUERY_STOP_CHARGE.getApi(), buildParams(platformName,param));
|
|
|
- return JSONObject.parseObject(new PlatformAesUtil(PlatformCache.INSTANCE.getPlatformByName(platformName)).decrypt(response.getData()));
|
|
|
+ var response = platformPost(platformName, EnPlusApi.EN_PLUS_QUERY_STOP_CHARGE.getApi(), buildPlatformParams(platformName, param));
|
|
|
+ return parsePlatformResponseData(response, platformName);
|
|
|
}
|
|
|
|
|
|
}
|