diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/QingHaiController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/QingHaiController.java index 2e868342e..6c21912cb 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/QingHaiController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/QingHaiController.java @@ -3,7 +3,6 @@ package com.jsowell.api.thirdparty; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.jsowell.common.annotation.Anonymous; -import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; @@ -36,7 +35,7 @@ import java.util.Map; @Anonymous @RestController @RequestMapping("/qinghai/evcs") -public class QingHaiController extends BaseController { +public class QingHaiController extends ThirdPartyBaseController { @Autowired @Qualifier("qingHaiPlatformServiceImpl") diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ThirdPartyBaseController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ThirdPartyBaseController.java index 5bd33910c..c93a603d1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ThirdPartyBaseController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ThirdPartyBaseController.java @@ -28,30 +28,9 @@ import java.util.Map; @RestController public class ThirdPartyBaseController extends BaseController { - // @Autowired - // @Qualifier("zhongDianLianPlatformServiceImpl") - // private ThirdPartyPlatformService platformLogic; - @Autowired private ThirdpartySecretInfoService thirdpartySecretInfoService; - /** - * 获取token接口 - * http://localhost:8080/query_token - */ - // @PostMapping("/query_token") - // public CommonResult queryToken(@RequestBody CommonParamsDTO dto) { - // logger.info("平台请求令牌 params:{}", JSON.toJSONString(dto)); - // try { - // Map map = platformLogic.queryToken(dto); - // logger.info("平台请求令牌 result:{}", JSON.toJSONString(map)); - // return CommonResult.success(0, "请求令牌成功!", map.get("Data"), map.get("Sig")); - // } catch (Exception e) { - // logger.error("平台请求令牌接口 异常", e); - // return CommonResult.failed("获取token发生异常"); - // } - // } - /** * 验证token */ @@ -94,7 +73,6 @@ public class ThirdPartyBaseController extends BaseController { // 校验是否有operatorId, 没有就set verifyOperatorId(dto, t); - return t; } @@ -146,7 +124,7 @@ public class ThirdPartyBaseController extends BaseController { /** * 使用反射获取字段值 */ - private Object getFieldValueByObject(T t, String targetFieldName) throws NoSuchFieldException, IllegalAccessException { + private Object getFieldValueByObject(T t, String targetFieldName) { // 获取该对象的class Class tClass = t.getClass(); // 获取所有的属性数组 @@ -165,16 +143,13 @@ public class ThirdPartyBaseController extends BaseController { * 举例: @JsonProperty("roleIds") * private String roleIds; */ - try { boolean has_JsonProperty = field.isAnnotationPresent(JsonProperty.class); - if (has_JsonProperty) { currentFieldName = field.getAnnotation(JsonProperty.class).value(); } else { currentFieldName = field.getName(); } - // 忽略大小写对比 if (currentFieldName.equalsIgnoreCase(targetFieldName)) { field.setAccessible(true); @@ -183,7 +158,6 @@ public class ThirdPartyBaseController extends BaseController { Method m = tClass.getMethod("get" + currentFieldName); return m.invoke(t); } - } catch (SecurityException e) { // 安全性异常 e.printStackTrace(); @@ -197,7 +171,6 @@ public class ThirdPartyBaseController extends BaseController { throw new RuntimeException(e); } } - return null; } @@ -215,7 +188,6 @@ public class ThirdPartyBaseController extends BaseController { } // 校验签名,使用响应方的密钥 String signSecret = secretInfoVO.getOurSigSecret(); - Map map = Maps.newLinkedHashMap(); String operatorID = dto.getOperatorID(); if (StringUtils.isNotBlank(operatorID)) { @@ -237,7 +209,6 @@ public class ThirdPartyBaseController extends BaseController { if (StringUtils.isNotBlank(seq)) { map.put("Seq", seq); } - // 计算sign String sign = GBSignUtils.sign(map, signSecret); return StringUtils.equals(dto.getSig(), sign); diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/YCBCController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/YCBCController.java index 60166c2f5..829a73720 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/YCBCController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/YCBCController.java @@ -105,6 +105,7 @@ public class YCBCController extends BaseController { String dataString = resultMap.get("Data"); String dataSecret = resultMap.get("DataSecret"); String dataSecretIV = resultMap.get("DataSecretIV"); + // 解密data byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes()); String dataStr = new String(plainText, StandardCharsets.UTF_8); diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ZheJiangController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ZheJiangController.java new file mode 100644 index 000000000..7cf09ed48 --- /dev/null +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ZheJiangController.java @@ -0,0 +1,154 @@ +package com.jsowell.api.thirdparty; + +import com.alibaba.fastjson2.JSON; +import com.jsowell.common.annotation.Anonymous; +import com.jsowell.common.enums.thirdparty.ThirdPartyReturnCodeEnum; +import com.jsowell.common.exception.BusinessException; +import com.jsowell.pile.dto.QueryOperatorInfoDTO; +import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.thirdparty.CommonParamsDTO; +import com.jsowell.thirdparty.lianlian.common.CommonResult; +import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +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.util.Map; + +/** + * 浙江省平台 + */ +@Anonymous +@RestController +@RequestMapping("/zj") +public class ZheJiangController extends ThirdPartyBaseController { + + private final String platformName = "浙江省平台"; + + @Autowired + @Qualifier("zheJiangPlatformServiceImpl") + private ThirdPartyPlatformService platformLogic; + + /** + * getToken + */ + @PostMapping("/v1/query_token") + public CommonResult queryToken(@RequestBody CommonParamsDTO dto) { + // logger.info("{}-请求令牌 params:{}", platformName, JSON.toJSONString(dto)); + try { + Map map = platformLogic.queryToken(dto); + logger.info("{}-请求令牌, params:{}, result:{}", platformName, JSON.toJSONString(dto), JSON.toJSONString(map)); + return CommonResult.success(0, "请求令牌成功!", map.get("Data"), map.get("Sig")); + } catch (Exception e) { + logger.error("{}-获取token接口, 异常, params:{}", platformName, JSON.toJSONString(dto)); + return CommonResult.failed("获取token发生异常"); + } + } + + /** + * 查询充电站信息 + * supervise_query_stations_info + */ + @PostMapping("/v1/supervise_query_stations_info") + public CommonResult query_stations_info(HttpServletRequest request, @RequestBody CommonParamsDTO dto) { + logger.info("{}-查询充电站信息 params:{}", platformName, JSON.toJSONString(dto)); + try { + // 校验令牌 + if (!verifyToken(request.getHeader("Authorization"))) { + // 校验失败 + return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR); + } + + // 校验签名 + if (!verifySignature(dto)) { + // 签名错误 + return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR); + } + + // 解析入参 + QueryStationInfoDTO queryStationInfoDTO = parseParamsDTO(dto, QueryStationInfoDTO.class); + + // 执行逻辑 + Map map = platformLogic.queryStationsInfo(queryStationInfoDTO); + + return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig")); + } catch (Exception e) { + logger.info("{}-查询充电站信息 error:", platformName, e); + } + return CommonResult.failed("查询充电站信息发生异常"); + } + + /** + * 查询运营商信息 + * supervise_query_operator_info + */ + @PostMapping("/v1/supervise_query_operator_info") + public CommonResult queryOperatorInfo(HttpServletRequest request, @RequestBody CommonParamsDTO dto) { + logger.info("{}-查询运营商信息 params:{}", platformName, JSON.toJSONString(dto)); + try { + // 校验令牌 + boolean verifyToken = verifyToken(request.getHeader("Authorization")); + if (!verifyToken) { + // 校验失败 + return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR); + } + + // 校验签名 + if (!verifySignature(dto)) { + // 签名错误 + return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR); + } + + // 解析入参 + QueryOperatorInfoDTO paramDTO = parseParamsDTO(dto, QueryOperatorInfoDTO.class); + + // 执行逻辑 + Map map = platformLogic.queryOperatorInfo(paramDTO); + logger.info("{}-查询运营商信息 result:{}", platformName, JSON.toJSONString(map)); + return CommonResult.success(0, "操作成功!", map.get("Data"), map.get("Sig")); + } catch (BusinessException e) { + return CommonResult.failed(Integer.parseInt(e.getCode()), e.getMessage()); + } catch (Exception e) { + logger.error("{}-查询运营商信息 异常", platformName, e); + return CommonResult.failed("查询运营商信息发生异常"); + } + } + + /** + * 查询充电站状态信息 + * supervise_query_station_status + */ + @PostMapping("/v1/supervise_query_station_status") + public CommonResult queryStationStatus(HttpServletRequest request, @RequestBody CommonParamsDTO dto) { + logger.info("{}-查询充电站状态信息 params:{}", platformName, JSON.toJSONString(dto)); + try { + // 校验令牌 + if (!verifyToken(request.getHeader("Authorization"))) { + // 校验失败 + return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR); + } + + // 校验签名 + if (!verifySignature(dto)) { + // 签名错误 + return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR); + } + + // 解析入参 + QueryStationInfoDTO queryStationInfoDTO = parseParamsDTO(dto, QueryStationInfoDTO.class); + + // 执行逻辑 + Map map = platformLogic.queryStationStatus(queryStationInfoDTO); + + return CommonResult.success(0, "查询充电站状态信息成功!", map.get("Data"), map.get("Sig")); + } catch (Exception e) { + logger.error("{}-查询充电站状态信息 error:", platformName, e); + } + return CommonResult.failed("查询充电站状态信息发生异常"); + } + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/thirdparty/publicinfo/BaseStationInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/thirdparty/publicinfo/BaseStationInfo.java index 16a92ab5c..fca136e8d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/thirdparty/publicinfo/BaseStationInfo.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/thirdparty/publicinfo/BaseStationInfo.java @@ -3,7 +3,10 @@ package com.jsowell.pile.thirdparty.publicinfo; import com.alibaba.fastjson2.annotation.JSONField; import com.jsowell.pile.thirdparty.EquipmentInfo; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import java.math.BigDecimal; import java.util.List; @@ -13,6 +16,9 @@ import java.util.List; * 中电联协议定义 */ @Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder public class BaseStationInfo { /** * 充电站ID Y diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/common/StationInfo.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/common/StationInfo.java index 6de7539d3..d9593a197 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/common/StationInfo.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/common/StationInfo.java @@ -5,9 +5,9 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.jsowell.pile.thirdparty.EquipmentInfo; import com.jsowell.pile.thirdparty.publicinfo.BaseStationInfo; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import java.math.BigDecimal; import java.util.List; @@ -18,7 +18,7 @@ import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor -@Builder +@SuperBuilder public class StationInfo extends BaseStationInfo { /** * 充电站ID Y @@ -123,7 +123,7 @@ public class StationInfo extends BaseStationInfo { * 可停放进行充电的车位总数(默认:0-未知) */ @JSONField(name = "ParkNums") - private int parkNums; + private Integer parkNums = 0; /** * 经度 Y @@ -239,7 +239,7 @@ public class StationInfo extends BaseStationInfo { * 充电设备是否需要提前预约后才能使用。(0-不支持预约;1-支持预约) 不填默认为0 */ @JSONField(name = "SupportOrder") - private int supportOrder; + private Integer supportOrder = 0; /** * 备注 N diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/SupStationInfo.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/SupStationInfo.java index 4be6db9c1..db45eb714 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/SupStationInfo.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/SupStationInfo.java @@ -2,12 +2,18 @@ package com.jsowell.thirdparty.platform.domain; import com.alibaba.fastjson2.annotation.JSONField; import com.jsowell.thirdparty.platform.common.StationInfo; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /** * 内蒙古平台站点信息 */ @Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder public class SupStationInfo extends StationInfo { /** * 充换电站唯一编码 diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java index 2591a2ee6..33caaf1e8 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java @@ -4,7 +4,6 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.google.common.collect.Maps; -import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.JWTUtils; import com.jsowell.common.util.StringUtils; @@ -518,5 +517,4 @@ public interface ThirdPartyPlatformService extends InitializingBean { return StringUtils.equals(dto.getSig(), sign); } - } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java index f3681c1e0..2257cb4e8 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java @@ -108,28 +108,6 @@ public class LianLianPlatformServiceImpl implements ThirdPartyPlatformService { System.out.println("当前类名:" + this.getClass().getSimpleName()); } - // @Override - public Map queryTokenOld(CommonParamsDTO dto) { - String operatorId = dto.getOperatorID(); - // 通过operatorId 查出 operatorSecret - ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId); - if (platformConfig == null) { - return null; - } - String operatorSecret = platformConfig.getOperatorSecret(); - String dataSecret = platformConfig.getDataSecret(); - String dataSecretIv = platformConfig.getDataSecretIv(); - String signSecret = platformConfig.getSignSecret(); - // 使用公共方法生成token - Map resultMap = generateToken(operatorSecret, dataSecret, dataSecretIv, signSecret, operatorId, dto.getData()); - - // 拼装 - - // 加密 - - return resultMap; - } - @Override public Map queryToken(CommonParamsDTO dto) { AccessTokenVO vo = new AccessTokenVO(); diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java index b40f114c5..b91ea0bcd 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java @@ -1092,6 +1092,8 @@ public class NinaXiaPlatformServiceImpl implements ThirdPartyPlatformService { .printerFlag(Integer.valueOf(pileStationInfo.getPrinterFlag())) .barrierFlag(Integer.valueOf(pileStationInfo.getBarrierFlag())) .parkingLockFlag(Integer.valueOf(pileStationInfo.getParkingLockFlag())) + // .parkNums() + // .supportOrder() .build(); String areaCode = pileStationInfo.getAreaCode(); // 330000,330200,330213 // 根据逗号分组 diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ZheJiangPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ZheJiangPlatformServiceImpl.java index b970eb0c7..b65c4a02a 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ZheJiangPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ZheJiangPlatformServiceImpl.java @@ -240,4 +240,29 @@ public class ZheJiangPlatformServiceImpl implements ThirdPartyPlatformService { thirdPartySecretInfoVO.setOurOperatorId(Constants.OPERATORID_JIANG_SU); return thirdPartySecretInfoVO; } + + /** + * 推送充电站信息 + * supervise_notification_station_info + */ + + /** + * 推送充电设备接口状态信息 + * supervise_notification_connector_status + */ + + /** + * 推送充电状态信息 + * supervise_notification_equip_charge_status + */ + + /** + * 推送充电订单信息 + * supervise_notification_charge_order_info + */ + + /** + * 推送充电站实时功率信息 + * supervise_notification_realtime_power_info + */ }