diff --git a/jsowell-admin/src/main/java/com/jsowell/thirdparty/yongchengboche/YCBCController.java b/jsowell-admin/src/main/java/com/jsowell/thirdparty/yongchengboche/YCBCController.java index 281cec26e..a26341a3a 100644 --- a/jsowell-admin/src/main/java/com/jsowell/thirdparty/yongchengboche/YCBCController.java +++ b/jsowell-admin/src/main/java/com/jsowell/thirdparty/yongchengboche/YCBCController.java @@ -92,7 +92,7 @@ public class YCBCController extends BaseController { QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class); queryStationInfoDTO.setOperatorId(dto.getOperatorID()); Map map = ycbcService.queryStationsInfo(queryStationInfoDTO); - + logger.info("甬城泊车平台查询充电站信息 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.info("甬城泊车平台查询充电站信息 error:", e); @@ -135,7 +135,7 @@ public class YCBCController extends BaseController { QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class); queryStationInfoDTO.setOperatorId(dto.getOperatorID()); Map map = ycbcService.queryStationStatus(queryStationInfoDTO); - + logger.info("甬城泊车平台查询充电站状态信息 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "查询充电站状态信息成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.info("甬城泊车平台查询充电站状态信息 error:", e); @@ -230,7 +230,7 @@ public class YCBCController extends BaseController { QueryEquipmentDTO queryEquipmentDTO = JSONObject.parseObject(dataStr, QueryEquipmentDTO.class); queryEquipmentDTO.setOperatorID(dto.getOperatorID()); Map map = ycbcService.queryEquipAuth(queryEquipmentDTO); - + logger.info("甬城泊车平台请求设备认证 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "请求设备认证成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.info("甬城泊车平台请求设备认证 error:", e); @@ -272,7 +272,7 @@ public class YCBCController extends BaseController { QueryStartChargeDTO queryStartChargeDTO = JSONObject.parseObject(dataStr, QueryStartChargeDTO.class); queryStartChargeDTO.setOperatorId(dto.getOperatorID()); Map map = ycbcService.queryStartCharge(queryStartChargeDTO); - + logger.info("甬城泊车平台请求启动充电 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "请求启动充电成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.error("甬城泊车平台请求启动充电 error", e); @@ -313,7 +313,7 @@ public class YCBCController extends BaseController { QueryEquipChargeStatusDTO queryEquipChargeStatusDTO = JSONObject.parseObject(dataStr, QueryEquipChargeStatusDTO.class); queryEquipChargeStatusDTO.setOperatorID(dto.getOperatorID()); Map map = ycbcService.queryEquipChargeStatus(queryEquipChargeStatusDTO); - + logger.info("甬城泊车平台查询充电状态 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "查询充电状态成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.error("甬城泊车平台查询充电状态 error", e); @@ -378,7 +378,7 @@ public class YCBCController extends BaseController { QueryStartChargeDTO queryStartChargeDTO = JSONObject.parseObject(dataStr, QueryStartChargeDTO.class); queryStartChargeDTO.setOperatorId(dto.getOperatorID()); Map map = ycbcService.queryStopCharge(queryStartChargeDTO); - + logger.info("甬城泊车平台请求停止充电 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "请求停止充电成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.error("甬城泊车平台请求停止充电 error", e); diff --git a/jsowell-admin/src/main/java/com/jsowell/thirdparty/zhongdianlian/ZDLController.java b/jsowell-admin/src/main/java/com/jsowell/thirdparty/zhongdianlian/ZDLController.java index badee7ec1..1a57e46e5 100644 --- a/jsowell-admin/src/main/java/com/jsowell/thirdparty/zhongdianlian/ZDLController.java +++ b/jsowell-admin/src/main/java/com/jsowell/thirdparty/zhongdianlian/ZDLController.java @@ -94,7 +94,7 @@ public class ZDLController extends BaseController { queryStationInfoDTO.setOperatorId(dto.getOperatorID()); queryStationInfoDTO.setAddress("宁波"); Map map = zdlService.queryStationsInfo(queryStationInfoDTO); - + logger.info("中电联平台查询充电站信息 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.info("中电联平台查询充电站信息 error:", e); @@ -137,7 +137,7 @@ public class ZDLController extends BaseController { QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class); queryStationInfoDTO.setOperatorId(dto.getOperatorID()); Map map = zdlService.queryStationStats(queryStationInfoDTO); - + logger.info("中电联平台查询统计信息 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "查询统计信息成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.info("中电联平台查询统计信息 error:", e); @@ -184,7 +184,7 @@ public class ZDLController extends BaseController { QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class); queryStationInfoDTO.setOperatorId(dto.getOperatorID()); Map map = zdlService.queryStationStatus(queryStationInfoDTO); - + logger.info("中电联平台设备接口状态查询 result:{}", JSONObject.toJSONString(map)); return CommonResult.success(0, "设备接口状态查询成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.info("中电联平台设备接口状态查询 error:", e); diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java index 008fbda90..11cb26f32 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java @@ -183,6 +183,11 @@ public class CacheConstants { */ public static final String LTYT_TOKEN_BY_APPID = "ltyt_token_by_appid:"; + /** + * 甬城泊车系统Token + */ + public static final String YCBC_TOKEN_BY_OPERATORID = "yong_cheng_bo_che_token_by_operatorId:"; + /** * 桩硬件故障 */ diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java index 045c096cb..f1342d824 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java @@ -243,37 +243,38 @@ public class LianLianServiceImpl implements LianLianService { } public static void main(String[] args) throws UnsupportedEncodingException { - String dataSecret = "P29C6N1K0B1CIRLP"; // SPBNJ1Z5EQNmpK08 VTAEKDPVN9CUS7WO - String dataSecretIV = "9UL7GUR8AGEHQNDI"; // peRoTcb2C7zqKeII 83UZFFRRZDYNF5CR - String signSecret = "BSOUJ73MM7KETDIT"; // sRjCDeokckFGpYpA - // String dataString = "LrjN9OmwM1HLzq7ljVy4u+w9fjZ3Csfat1/t9JBRx7U2i/7k8pDbFMEj1hGy1hLYG3I4urpCIunP01xUUI2VC1PyTKxjLlJBhiSsnEGE1Nb78v8Zx8ESeh52oJ5se1h8vGTQIWG679Q1xO1yPINkMN4+wZXq3VsaJNaQ8PfzLn1j0kN0LP7h9SNpddwXQfxaZgAM64qxpzX15yZpAtNDAfv/R9+uTh4M32bipQSPOl0P7PUqNIDxRfKMe8u50tGzTUVjF/XgJB5TZkW0oU6lYLrTuFDeHS2NS4lR5BWRfiUY3Kf6sGC5PbZtaqrkK5zQw1slwNPHWDt3kMlVqrpawAdeBzoOtOn3csjr/wRMe4UNoAI/sVZWW+ha5HbfcHh3MUwQjzdmeTg1uBK76sOLvA=="; + String dataSecret = "SPBNJ1Z5EQNmpK08"; // SPBNJ1Z5EQNmpK08 VTAEKDPVN9CUS7WO + String dataSecretIV = "peRoTcb2C7zqKeII"; // peRoTcb2C7zqKeII 83UZFFRRZDYNF5CR + String signSecret = "sRjCDeokckFGpYpA"; // sRjCDeokckFGpYpA + String dataString = "jLVyZbrFkAVN1LuTZqjxBwvvUo2Du8fT5im8x0Uqvq/9qEswU7wqeKRbjPoc+Jzcq84fDT4kgozILsCfCxeEK0CqVwAyc7PcrRz6tWsOzr2BMNcewqM73Bk/rB\n" + + "lT369oOVpUznA+I7TFtm4eQDEQ0p671unzvm/zUUn5YhGSPBJiyitwKI0XWu62tUwReupxx7KmsC1zsYFXsPGESAAo7WUJdLhK+71SNnX2/7HLg3U="; - // // 解密data - // byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes()); - // String dataStr = new String(plainText, StandardCharsets.UTF_8); - // Map resMap = (Map) JSON.parse(dataStr); - // // String secret = resMap.get("OperatorSecret"); - // System.out.println(resMap); + // 解密data + byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes()); + String dataStr = new String(plainText, StandardCharsets.UTF_8); + Map resMap = (Map) JSON.parse(dataStr); + // String secret = resMap.get("OperatorSecret"); + System.out.println(resMap); // 加密data - JSONObject json = new JSONObject(); - json.put("OperatorID", "MA771QENX"); - json.put("OperatorSecret", "YVK5DZS4CCGJJVBT"); - - Map resultMap = Maps.newLinkedHashMap(); - // 加密数据 - byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(json).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); - - System.out.println(resultSign); - System.out.println(resultMap); + // JSONObject json = new JSONObject(); + // json.put("OperatorID", "MA771QENX"); + // json.put("OperatorSecret", "YVK5DZS4CCGJJVBT"); + // + // Map resultMap = Maps.newLinkedHashMap(); + // // 加密数据 + // byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(json).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); + // + // System.out.println(resultSign); + // System.out.println(resultMap); } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/yongchengboche/service/impl/YCBCServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/yongchengboche/service/impl/YCBCServiceImpl.java index d507cd2e7..d7cbd1c90 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/yongchengboche/service/impl/YCBCServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/yongchengboche/service/impl/YCBCServiceImpl.java @@ -3,7 +3,10 @@ package com.jsowell.thirdparty.yongchengboche.service.impl; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; +import com.jsowell.common.constant.CacheConstants; +import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.dto.*; import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; import com.jsowell.thirdparty.lianlian.service.LianLianService; @@ -24,6 +27,7 @@ import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * 甬城泊车 Service @@ -40,6 +44,9 @@ public class YCBCServiceImpl implements YCBCService { @Autowired private LianLianService lianLianService; + @Autowired + private RedisCache redisCache; + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -57,7 +64,15 @@ public class YCBCServiceImpl implements YCBCService { String urlAddress = dto.getUrlAddress(); String signSecret = dto.getSignSecret(); - String token = ""; + String redisKey = CacheConstants.YCBC_TOKEN_BY_OPERATORID + operatorId; + // 先查缓存 + String token = redisCache.getCacheObject(redisKey); + if (StringUtils.isNotBlank(token)) { + logger.info("获取甬城泊车平台令牌,缓存中有值为:{}", token); + return token; + }else { + token = ""; + } try { // 请求地址 String requestUrl = urlAddress + "query_token"; @@ -97,8 +112,16 @@ public class YCBCServiceImpl implements YCBCService { dataSecret.getBytes(), dataSecretIv.getBytes()); String dataStr = new String(plainText, "UTF-8"); Map resultMap = (Map) JSON.parse(dataStr); + int succStat = Integer.parseInt(resultMap.get("SuccStat")); + if (succStat != 0) { + logger.error("获取甬城泊车平台令牌 error:{}", result.getMsg()); + return token; + } token = resultMap.get("AccessToken"); logger.info("甬城泊车 token: {}", token); + // 存入缓存 + int tokenAvailableTime = Integer.parseInt(resultMap.get("TokenAvailableTime")); + redisCache.setCacheObject(redisKey, token, tokenAvailableTime, TimeUnit.SECONDS); } } catch (Exception e) { return token;