diff --git a/jsowell-admin/src/main/java/com/jsowell/lianlian/LianLianController.java b/jsowell-admin/src/main/java/com/jsowell/lianlian/LianLianController.java index a94faea50..b8a9ea8d0 100644 --- a/jsowell-admin/src/main/java/com/jsowell/lianlian/LianLianController.java +++ b/jsowell-admin/src/main/java/com/jsowell/lianlian/LianLianController.java @@ -418,7 +418,7 @@ public class LianLianController extends BaseController { } catch (Exception e) { logger.error("联联平台查询充电状态 error", e); } - return CommonResult.failed("查询充电状态发生异常"); + return CommonResult.failed("联联平台查询充电状态发生异常"); } /** @@ -427,22 +427,55 @@ public class LianLianController extends BaseController { * @param dto * @return */ - @PostMapping("/query_stop_charge") - public RestApiResponse query_stop_charge(@RequestBody QueryStartChargeDTO dto) { + // @PostMapping("/query_stop_charge") + // public RestApiResponse query_stop_charge(@RequestBody QueryStartChargeDTO dto) { + // logger.info("联联平台请求停止充电 params :{}", JSONObject.toJSONString(dto)); + // RestApiResponse response; + // try { + // QueryStopChargeVO queryStopChargeVO = lianLianService.query_stop_charge(dto); + // response = new RestApiResponse<>(queryStopChargeVO); + // }catch (BusinessException e) { + // logger.error("联联平台请求停止充电 error",e); + // response = new RestApiResponse<>(e.getCode(), e.getMessage()); + // } catch (Exception e) { + // logger.error("联联平台请求停止充电 error", e); + // response = new RestApiResponse<>(e); + // } + // logger.info("联联平台请求停止充电 result :{}", response); + // return response; + // } + + @PostMapping("/v1/query_stop_charge") + public CommonResult query_stop_charge(HttpServletRequest request, @RequestBody CommonParamsDTO dto) { logger.info("联联平台请求停止充电 params :{}", JSONObject.toJSONString(dto)); - RestApiResponse response; try { - QueryStopChargeVO queryStopChargeVO = lianLianService.query_stop_charge(dto); - response = new RestApiResponse<>(queryStopChargeVO); - }catch (BusinessException e) { - logger.error("联联平台请求停止充电 error",e); - response = new RestApiResponse<>(e.getCode(), e.getMessage()); + // 校验令牌 + String token = request.getHeader("Authorization"); + if (!JWTUtils.checkThirdPartyToken(token)) { + // 校验失败 + return CommonResult.failed("令牌校验错误"); + } + // 校验签名 + Map resultMap = lianLianService.checkoutSign(dto); + if (resultMap == null) { + // 签名错误 + return CommonResult.failed("签名校验错误"); + } + String operatorSecret = resultMap.get("OperatorSecret"); + String dataString = resultMap.get("Data"); + // 解密data + byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), operatorSecret.getBytes(), operatorSecret.getBytes()); + String dataStr = new String(plainText, "UTF-8"); + // 转换成相应对象 + QueryStartChargeDTO queryStartChargeDTO = JSONObject.parseObject(dataStr, QueryStartChargeDTO.class); + queryStartChargeDTO.setOperatorID(dto.getOperatorID()); + Map map = lianLianService.query_stop_charge(queryStartChargeDTO); + + return CommonResult.success(0, "请求停止充电成功!", map.get("Data"), map.get("Sig")); } catch (Exception e) { logger.error("联联平台请求停止充电 error", e); - response = new RestApiResponse<>(e); } - logger.info("联联平台请求停止充电 result :{}", response); - return response; + return CommonResult.failed("联联平台请求停止充电发生异常"); } /** diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/LianLianService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/LianLianService.java index 891af1a9e..aed8ea482 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/LianLianService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/LianLianService.java @@ -73,7 +73,7 @@ public interface LianLianService { * @param dto * @return */ - QueryStopChargeVO query_stop_charge(QueryStartChargeDTO dto); + Map query_stop_charge(QueryStartChargeDTO dto); /** * 联联平台获取令牌 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 19deeb4d0..793201788 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 @@ -682,7 +682,7 @@ public class LianLianServiceImpl implements LianLianService { * @param dto * @return */ - public QueryStopChargeVO query_stop_charge(QueryStartChargeDTO dto) { + public Map query_stop_charge(QueryStartChargeDTO dto) { QueryStopChargeVO vo = new QueryStopChargeVO(); String orderCode = dto.getStartChargeSeq(); @@ -690,7 +690,11 @@ public class LianLianServiceImpl implements LianLianService { // 根据订单号查询订单信息 OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); if (orderInfo == null) { - throw new BusinessException("", ""); + return null; + } + DockingPlatformConfig configInfo = dockingPlatformConfigService.getInfoByOperatorId(dto.getOperatorID()); + if (configInfo == null) { + return null; } // 若状态为充电中,则发送停机指令 if (StringUtils.equals(OrderStatusEnum.IN_THE_CHARGING.getValue(), orderInfo.getOrderStatus())) { @@ -703,7 +707,19 @@ public class LianLianServiceImpl implements LianLianService { vo.setStartChargeSeq(orderCode); vo.setStartChargeSeqStat(3); // 3-停止中 } - return vo; + // 加密 + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(vo).getBytes(), + configInfo.getOperatorSecret().getBytes(), configInfo.getDataSecretIv().getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, configInfo.getOperatorSecret()); + resultMap.put("Sig", resultSign); + + return resultMap; } /**