diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/lianlian/LianLianController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/lianlian/LianLianController.java index 04084951c..ee1c14a75 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/lianlian/LianLianController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/lianlian/LianLianController.java @@ -65,7 +65,7 @@ public class LianLianController extends BaseController { /** * 联联平台查询充电站信息 - * http://localhost:8080/LianLian/query_stations_info + * http://localhost:8080/LianLian/v1/query_stations_info * @param dto * @return */ @@ -116,7 +116,7 @@ public class LianLianController extends BaseController { /** * 联联平台查询充电站状态信息 - * http://localhost:8080/LianLian/query_station_status + * http://localhost:8080/LianLian/v1/query_station_status * @param dto * @return */ @@ -167,7 +167,7 @@ public class LianLianController extends BaseController { /** * 查询统计信息 - * http://localhost:8080/LianLian/query_station_stats + * http://localhost:8080/LianLian/v1/query_station_stats * * @param dto * @return diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/ThirdPartyPlatformService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/ThirdPartyPlatformService.java index f30199d52..1d9462db6 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/ThirdPartyPlatformService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/ThirdPartyPlatformService.java @@ -28,72 +28,6 @@ public interface ThirdPartyPlatformService { throw new UnsupportedOperationException("This method is not yet implemented"); } - /** - * 给第三方平台生成token - */ - default Map generateToken(String operatorSecret, String dataSecret, String dataSecretIv, - String signSecret, String operatorId, String data) { - // 解密data - byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(data), dataSecret.getBytes(), dataSecretIv.getBytes()); - String dataStr = new String(plainText, StandardCharsets.UTF_8); - Map resMap = (Map) JSON.parse(dataStr); - String secret = resMap.get("OperatorSecret"); - - // 对比解出来的密钥是否和数据库中保存的一致 - if (!StringUtils.equals(operatorSecret, secret)) { - // System.out.println("密钥不一致"); - return null; - } - // System.out.println("密钥校验通过!! 密钥为: " + operatorSecret); - - long ttlMillis = 60 * 60 * 24 * 1000; - String token = JWTUtils.createToken(operatorId, operatorSecret, ttlMillis); - // System.out.println("生成的token:" + token); - - // 组装返回参数 - AccessTokenVO vo = new AccessTokenVO(); - vo.setAccessToken(token); - vo.setOperatorID(operatorId); - vo.setTokenAvailableTime((int) (ttlMillis / 1000)); - vo.setFailReason(0); - vo.setSuccStat(0); - - Map resultMap = Maps.newLinkedHashMap(); - // 加密数据 - byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(), - dataSecret.getBytes(), dataSecretIv.getBytes()); - String encryptData = Encodes.encodeBase64(encryptText); - - resultMap.put("Data", encryptData); - // 生成sig - String resultSign = GBSignUtils.sign(resultMap, signSecret); - resultMap.put("Sig", resultSign); - - return resultMap; - } - - /** - * 校验签名 - * @param operatorID 组织机构代码 - * @param data 参数内容 - * @param timeStamp 时间戳 - * @param seq 自增序列 - * @param sig 数字签名 - * @param signSecret 签名密钥 - * @return 校验结果 - */ - default boolean verifySignature(String operatorID, String data, String timeStamp, String seq, String sig, String signSecret) { - Map map = Maps.newLinkedHashMap(); - map.put("OperatorID", operatorID); - map.put("Data", data); - map.put("TimeStamp", timeStamp); - map.put("Seq", seq); - String sign = GBSignUtils.sign(map, signSecret); - - // 验证签名 得到请求方传过来的签名sig->自己拿到请求体后,再按双方约定的协议生成一个sig->对比两个sig是否一致 - return StringUtils.equals(sig, sign); - } - // =================================================================================== // // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 由我方平台实现此接口,对方平台调用的查询接口 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ // @@ -446,4 +380,76 @@ public interface ThirdPartyPlatformService { return token; } + // =================================================================================== // + // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 不同平台都可以使用的公共方法 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ // + // =================================================================================== // + + /** + * 给第三方平台生成token + */ + default Map generateToken(String operatorSecret, String dataSecret, String dataSecretIv, + String signSecret, String operatorId, String data) { + // 解密data + byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(data), dataSecret.getBytes(), dataSecretIv.getBytes()); + String dataStr = new String(plainText, StandardCharsets.UTF_8); + Map resMap = (Map) JSON.parse(dataStr); + String secret = resMap.get("OperatorSecret"); + + // 对比解出来的密钥是否和数据库中保存的一致 + if (!StringUtils.equals(operatorSecret, secret)) { + // System.out.println("密钥不一致"); + return null; + } + // System.out.println("密钥校验通过!! 密钥为: " + operatorSecret); + + long ttlMillis = 60 * 60 * 24 * 1000; + String token = JWTUtils.createToken(operatorId, operatorSecret, ttlMillis); + // System.out.println("生成的token:" + token); + + // 组装返回参数 + AccessTokenVO vo = new AccessTokenVO(); + vo.setAccessToken(token); + vo.setOperatorID(operatorId); + vo.setTokenAvailableTime((int) (ttlMillis / 1000)); + vo.setFailReason(0); + vo.setSuccStat(0); + + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(), + dataSecret.getBytes(), dataSecretIv.getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, signSecret); + resultMap.put("Sig", resultSign); + + return resultMap; + } + + /** + * 校验签名 + * @param operatorID 组织机构代码 + * @param data 参数内容 + * @param timeStamp 时间戳 + * @param seq 自增序列 + * @param sig 数字签名 + * @param signSecret 签名密钥 + * @return 校验结果 + */ + default boolean verifySignature(String operatorID, String data, String timeStamp, String seq, String sig, String signSecret) { + Map map = Maps.newLinkedHashMap(); + map.put("OperatorID", operatorID); + map.put("Data", data); + map.put("TimeStamp", timeStamp); + map.put("Seq", seq); + String sign = GBSignUtils.sign(map, signSecret); + + // 验证签名 得到请求方传过来的签名sig->自己拿到请求体后,再按双方约定的协议生成一个sig->对比两个sig是否一致 + return StringUtils.equals(sig, sign); + } + + + }