From 392979186d2dbe0cad96e4332fe747c68d032785 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 14 Sep 2023 16:02:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=20=20=E4=B8=AD=E7=94=B5?= =?UTF-8?q?=E8=81=94controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsowell/service/PileService.java | 2 +- .../jsowell/zhongdianlian/ZDLController.java | 97 +++++++++++++++++++ .../zhongdianlian/service/ZDLService.java | 9 ++ .../service/impl/ZDLServiceImpl.java | 12 +++ 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 jsowell-admin/src/main/java/com/jsowell/zhongdianlian/ZDLController.java diff --git a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java index 96a0b4490..6cc2c0f96 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java @@ -246,7 +246,7 @@ public class PileService { return null; } // 枪口状态不为2:占用(未充电) - if (StringUtils.equals("2", pileConnectorDetailVO.getConnectorStatus())) { + if (!StringUtils.equals("2", pileConnectorDetailVO.getConnectorStatus())) { throw new BusinessException(ReturnCodeEnum.CODE_PILE_CONNECTOR_STATUS_ERROR); } String pileSn = pileConnectorDetailVO.getPileSn(); diff --git a/jsowell-admin/src/main/java/com/jsowell/zhongdianlian/ZDLController.java b/jsowell-admin/src/main/java/com/jsowell/zhongdianlian/ZDLController.java new file mode 100644 index 000000000..ca914348d --- /dev/null +++ b/jsowell-admin/src/main/java/com/jsowell/zhongdianlian/ZDLController.java @@ -0,0 +1,97 @@ +package com.jsowell.zhongdianlian; + +import com.alibaba.fastjson2.JSONObject; +import com.jsowell.common.annotation.Anonymous; +import com.jsowell.common.core.controller.BaseController; +import com.jsowell.common.util.JWTUtils; +import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.thirdparty.lianlian.common.CommonResult; +import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; +import com.jsowell.thirdparty.lianlian.service.LianLianService; +import com.jsowell.thirdparty.lianlian.util.Cryptos; +import com.jsowell.thirdparty.lianlian.util.Encodes; +import com.jsowell.thirdparty.zhongdianlian.service.ZDLService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +/** + * TODO + * + * @author Lemon + * @Date 2023/9/14 15:31 + */ +@Anonymous +@RestController +@RequestMapping("/zdl") +public class ZDLController extends BaseController { + @Autowired + private ZDLService zdlService; + + @Autowired + private LianLianService lianLianService; + + /** + * 获取token接口 + * http://localhost:8080/zdl/v1/query_token + */ + @PostMapping("/v1/query_token") + public CommonResult queryToken(@RequestBody CommonParamsDTO dto) { + logger.info("中电联平台请求令牌 params:{}", JSONObject.toJSONString(dto)); + try { + Map map = zdlService.generateToken(dto); + logger.info("中电联平台请求令牌 result:{}", JSONObject.toJSONString(map)); + return CommonResult.success(0, "请求令牌成功!", map.get("Data"), map.get("Sig")); + } catch (UnsupportedEncodingException e) { + logger.error("中电联平台 请求令牌接口 异常"); + return CommonResult.failed("获取token发生异常"); + } + } + + /** + * 中电联平台查询充电站信息 + * http://localhost:8080/zdl/v1/query_stations_info + * @param dto + * @return + */ + @PostMapping("/v1/query_stations_info") + public CommonResult query_stations_info(HttpServletRequest request, @RequestBody CommonParamsDTO dto) { + logger.info("中电联平台查询充电站信息 params:{}", JSONObject.toJSONString(dto)); + try { + // 校验令牌 + 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, StandardCharsets.UTF_8); + // 转换成相应对象 + QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class); + queryStationInfoDTO.setOperatorId(dto.getOperatorID()); + Map map = zdlService.queryStationsInfo(queryStationInfoDTO); + + return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig")); + } catch (Exception e) { + logger.info("中电联平台查询充电站信息 error:", e); + e.printStackTrace(); + } + return CommonResult.failed("查询充电站信息发生异常"); + } +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java index 2d2acad85..942ccef49 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/ZDLService.java @@ -2,8 +2,10 @@ package com.jsowell.thirdparty.zhongdianlian.service; import com.jsowell.pile.dto.PushStationInfoDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; import com.jsowell.thirdparty.zhongdianlian.dto.ZDLGetTokenDTO; +import java.io.UnsupportedEncodingException; import java.util.Map; /** @@ -68,4 +70,11 @@ public interface ZDLService { * @return */ String pushChargeOrderInfo(String orderCode); + + /** + * 生成token + * @param dto + * @return + */ + Map generateToken(CommonParamsDTO dto) throws UnsupportedEncodingException; } 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 f16c3ebaf..8d09018f4 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 @@ -20,6 +20,7 @@ import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.thirdparty.lianlian.domain.ConnectorInfo; import com.jsowell.thirdparty.lianlian.domain.EquipmentInfo; import com.jsowell.thirdparty.lianlian.domain.StationInfo; +import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; import com.jsowell.thirdparty.lianlian.service.LianLianService; import com.jsowell.thirdparty.lianlian.util.Cryptos; import com.jsowell.thirdparty.lianlian.util.Encodes; @@ -34,6 +35,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -271,6 +273,16 @@ public class ZDLServiceImpl implements ZDLService { return lianLianService.pushChargeOrderInfo(orderCode); } + /** + * 生成令牌 + * @param dto + * @return + */ + @Override + public Map generateToken(CommonParamsDTO dto) throws UnsupportedEncodingException { + return lianLianService.generateToken(dto); + } + /** * 获取桩列表信息 *