From fc4eb40904a82cfb8a0b53ce17c1e7b4fb892ed3 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 23 Nov 2023 09:53:38 +0800 Subject: [PATCH 1/4] =?UTF-8?q?update=20=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E6=8E=A8=E9=80=81=E7=AB=99=E7=82=B9=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=B7=BB=E5=8A=A0=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java index 7c9e39860..86104af10 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java @@ -138,7 +138,7 @@ public class ZDLServiceImpl implements ZDLService { // 截取运营商组织机构代码(去除最后一位后的最后九位) MerchantInfoVO merchantInfo = pileMerchantInfoService.getMerchantInfoVO(String.valueOf(pileStationInfo.getMerchantId())); String organizationCode = merchantInfo.getOrganizationCode(); - if (organizationCode.length() == 18) { + if (StringUtils.isNotBlank(organizationCode) && organizationCode.length() == 18) { String equipmentOwnerId = StringUtils.substring(organizationCode, organizationCode.length() - 10, organizationCode.length() - 1); info.setEquipmentOwnerId(equipmentOwnerId); } @@ -228,7 +228,7 @@ public class ZDLServiceImpl implements ZDLService { stationInfo.setStationId(String.valueOf(pileStationInfo.getId())); stationInfo.setOperatorId(dto.getOperatorId()); // 组织机构代码 String organizationCode = pileStationInfo.getOrganizationCode(); - if (organizationCode.length() == 18) { + if (StringUtils.isNotBlank(organizationCode) && organizationCode.length() == 18) { String equipmentOwnerId = StringUtils.substring(organizationCode, organizationCode.length() - 10, organizationCode.length() - 1); stationInfo.setEquipmentOwnerId(equipmentOwnerId); }else { From c282a56a99b43c767786f628dc2b250373541e47 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 23 Nov 2023 10:22:33 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E3=80=81=E8=8E=B7=E5=8F=96=E7=94=AC=E5=9F=8E=E6=B3=8A=E8=BD=A6?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E4=BB=A4=E7=89=8C=E5=AD=98=E5=85=A5=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yongchengboche/YCBCController.java | 12 ++-- .../zhongdianlian/ZDLController.java | 6 +- .../common/constant/CacheConstants.java | 5 ++ .../service/impl/LianLianServiceImpl.java | 55 ++++++++++--------- .../service/impl/YCBCServiceImpl.java | 25 ++++++++- 5 files changed, 66 insertions(+), 37 deletions(-) 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; From 2d3459c67bfb4f60d7528c83de70b6a31206284f Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 23 Nov 2023 11:09:50 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=94=AC=E5=9F=8E=E6=B3=8A=E8=BD=A6?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E6=B7=BB=E5=8A=A0=E6=9F=A5=E8=AF=A2=E5=85=85?= =?UTF-8?q?=E7=94=B5=E7=AB=99=E9=99=90=E5=88=B6=E6=9D=A1=E4=BB=B6=20=20?= =?UTF-8?q?=E7=8E=B0=E5=8F=AA=E5=8F=AF=E6=9F=A5=E5=88=B0=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E8=AF=A5=E5=B9=B3=E5=8F=B0=E7=9A=84=E7=AB=99?= =?UTF-8?q?=E7=82=B9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/pile/PileStationInfoMapper.xml | 6 +++++ .../service/impl/LianLianServiceImpl.java | 7 +++--- .../service/impl/YCBCServiceImpl.java | 23 +++++++++++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml index ff743940e..4c9aea98b 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml @@ -472,6 +472,12 @@ and t1.address like concat('%', #{dto.address}, '%') + + and t1.id in + + #{stationId,jdbcType=VARCHAR} + +