update 对接第三方平台

This commit is contained in:
2024-03-27 15:58:35 +08:00
parent 73c489ee33
commit cd29184866
4 changed files with 12 additions and 922 deletions

View File

@@ -1,533 +0,0 @@
package com.jsowell.thirdparty.platform;
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.util.DateUtils;
import com.jsowell.common.util.JWTUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.PileBasicInfo;
import com.jsowell.pile.domain.PileConnectorInfo;
import com.jsowell.pile.domain.PileStationInfo;
import com.jsowell.pile.domain.ThirdPartyPlatformConfig;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
import com.jsowell.pile.service.*;
import com.jsowell.pile.vo.web.PileModelInfoVO;
import com.jsowell.pile.thirdparty.CommonParamsDTO;
import com.jsowell.thirdparty.lianlian.util.Cryptos;
import com.jsowell.thirdparty.lianlian.util.Encodes;
import com.jsowell.thirdparty.lianlian.util.GBSignUtils;
import com.jsowell.thirdparty.lianlian.vo.AccessTokenVO;
import com.jsowell.thirdparty.lianlian.vo.LianLianResultVO;
import com.jsowell.pile.thirdparty.ZDLConnectorInfo;
import com.jsowell.pile.thirdparty.ZDLEquipmentInfo;
import com.jsowell.thirdparty.zhongdianlian.service.ZDLService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.*;
/**
* 对接第三方平台抽象类
*/
public abstract class AbsInterfaceWithPlatformLogic implements InitializingBean {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
protected PileMerchantInfoService pileMerchantInfoService;
@Autowired
protected PileStationInfoService pileStationInfoService;
@Autowired
protected ThirdPartyPlatformConfigService thirdPartyPlatformConfigService;
@Autowired
protected ThirdPartySettingInfoService thirdPartySettingInfoService;
@Autowired
protected PileBillingTemplateService pileBillingTemplateService;
@Autowired
protected PileBasicInfoService pileBasicInfoService;
@Autowired
protected PileConnectorInfoService pileConnectorInfoService;
@Autowired
protected PileModelInfoService pileModelInfoService;
@Autowired
protected OrderBasicInfoService orderBasicInfoService;
@Autowired
protected ThirdPartyStationRelationService thirdPartyStationRelationService;
@Autowired
protected YKCPushCommandService ykcPushCommandService;
@Autowired
protected PileRemoteService pileRemoteService;
@Autowired
protected ZDLService zdlService;
// =================================================================================== //
// ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 由我方平台实现此接口,对方平台调用的查询接口 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ //
// =================================================================================== //
/**
* 查询运营商信息 query_operator_info
* supervise_query_operator_info
* @param dto 查询运营商信息DTO
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryOperatorInfo(QueryOperatorInfoDTO dto);
/**
* 查询充电站信息 query_stations_info
* 此接口用于查询对接平台的充电站的信息
* @param dto 查询站点信息dto
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryStationsInfo(QueryStationInfoDTO dto);
/**
* 设备接口状态查询 query_station_status
*
* @param dto 查询站点信息dto
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryStationStatus(QueryStationInfoDTO dto);
/**
* 查询统计信息 query_station_stats
*
* @param dto 查询站点信息dto
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryStationStats(QueryStationInfoDTO dto);
/**
* 查询充电电量信息 query_order_info
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryOrderInfo(String orderCode);
/**
* 请求设备认证 query_equip_auth
* 业务信息交换
* @param dto 联联平台请求设备认证
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryEquipAuth(QueryEquipmentDTO dto);
/**
* 请求启动充电 query_start_charge
*
* @param dto 请求启动充电DTO
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryStartCharge(QueryStartChargeDTO dto);
/**
* 查询充电状态 query_equip_charge_status
*
* @param dto 查询充电状态DTO
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryEquipChargeStatus(QueryEquipChargeStatusDTO dto);
/**
* 请求停止充电 query_stop_charge
*
* @param dto 请求启动充电DTO
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryStopCharge(QueryStartChargeDTO dto);
/**
* 充电站内充电桩空闲状态查询 query_free_pile_number
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryFreePileNumber(NXJTQueryStationInfoDTO dto);
/**
* 某车牌号消费记录查询 query_orders_info_by_Plate_number
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryOrdersInfoByPlateNumber(NXJTQueryStationInfoDTO dto);
/**
* 某段时间内消费记录查询 query_orders_info
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryOrdersInfo(NXJTQueryStationInfoDTO dto);
/**
* 查询业务策略信息结果
* 请求计费策略 request_equip_business_policy
* @param dto 请求启动充电DTO
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> queryEquipBusinessPolicy(QueryStartChargeDTO dto);
/**
* 请求计费策略 request_equip_business_policy
* 华为平台
* 合并到上面 查询业务策略信息结果
*/
// public abstract Map<String, String> requestEquipBusinessPolicy(QueryStationInfoDTO dto);
/**
* VIN码充电 insert_start_charge
* 华为平台
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> insertStartCharge(QueryStationInfoDTO dto);
/**
* 下发计费策略响应 notification_deliver_equip_business_policy_result
* 华为平台
* @exception UnsupportedOperationException 未实现异常
*/
public abstract Map<String, String> notificationDeliverEquipBusinessPolicyResult(QueryStationInfoDTO dto);
// =================================================================================== //
// ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 由对方平台实现此接口,我方平台调用的通知接口 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ //
// =================================================================================== //
/**
* 充电站信息变化推送 notification_stationInfo
* 新站需要推送。当站点信息发生变化时,推送新的信息通知到市级平台
* @param stationId 充电站id
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationStationInfo(String stationId);
/**
* 设备状态变化推送 notification_stationStatus
* 推送充电设备接口状态信息 supervise_notification_station_status
* @param pileConnectorCode 充电枪口编号
* @param status 枪口状态
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationStationStatus(String pileConnectorCode, String status);
/**
* 设备充电中状态变化推送 notification_connector_charge_status
* @param pileConnectorCode 充电枪口编号
* @param status 枪口状态
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationConnectorChargeStatus(String orderCode);
/**
* 订单信息推送 notification_orderInfo
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationOrderInfo(String orderCode);
/**
* 站点费率变化推送 notification_stationFee
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationStationFee(String stationId);
/**
* 充电订单推送 notification_charge_order_info
* TODO 海南一张网文档中的接口检查一下是否和订单信息推送notification_orderInfo一致
* TODO 甬城泊车平台文档中的接口检查一下是否和订单信息推送notification_orderInfo一致
* TODO 华为平台文档中的接口检查一下是否和订单信息推送notification_orderInfo一致
* TODO 内蒙古平台文档中的接口检查一下是否和订单信息推送notification_orderInfo一致
* @param orderCode 订单编号
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationChargeOrderInfo(String orderCode);
/**
* 告警信息推送 notification_alarmInfo
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationAlarmInfo();
/**
* 推送启动充电结果 notification_start_charge_result
* @param orderCode 订单编号
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationStartChargeResult(String orderCode);
/**
* 推送充电状态 notification_equip_charge_status
* 推送充电状态信息 supervise_notification_equip_charge_status
* @param orderCode 订单编号
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationEquipChargeStatus(String orderCode) throws UnsupportedOperationException;
/**
* 推送停止充电结果 notification_stop_charge_result
* @param orderCode 订单编号
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationStopChargeResult(String orderCode);
/**
* 华为平台
* 平台充电设备编码同步 notification_operation_system_info
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationOperationSystemInfo(String orderCode);
/**
* 推送充换电站用能统计信息 supervise_notification_operation_stats_info
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationOperationStatsInfo(String stationId);
/**
* 推送充电站历史充电订单信息 supervise_notification_charge_order_info_history
* @exception UnsupportedOperationException 未实现异常
*/
public abstract String notificationChargeOrderInfoHistory(String stationId);
/**
* 推送充电订单对账信息
*/
// public abstract Map<String, String> checkChargeOrders();
// -------------------------------------- 以下是公用方法 --------------------------------------- //
/**
* 从联联平台获取令牌
*
* @param operatorId 运营商id
* @param operatorSecret
* @return
*/
protected String getToken(String urlAddress, String operatorId, String operatorSecret,
String dataSecretIv, String signSecret, String dataSecret) {
String token = "";
try {
// 请求地址
String requestUrl = urlAddress + "query_token";
// 请求data
Map<String, String> data = new HashMap<>();
data.put("OperatorID", operatorId);
data.put("OperatorSecret", operatorSecret);
data.put("DataSecretIV", dataSecretIv);
String dataJson = JSONUtil.toJsonStr(data);
// 加密
byte[] encryptText = Cryptos.aesEncrypt(dataJson.getBytes(StandardCharsets.UTF_8),
dataSecret.getBytes(), dataSecretIv.getBytes());
String strData = Encodes.encodeBase64(encryptText);
Map<String, String> request = new LinkedHashMap<>();
request.put("OperatorID", operatorId);
request.put("Data", strData);
request.put("TimeStamp", DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date()));
request.put("Seq", "0001");
// 生成签名
String sig = GBSignUtils.sign(request, signSecret);
request.put("Sig", sig);
String tokenRequest = JSONUtil.toJsonStr(request);
String response = HttpUtil.post(requestUrl, tokenRequest);
LianLianResultVO result = JSON.parseObject(response, LianLianResultVO.class);
// logger.info("获取令牌 result:{}", result);
if (result.getRet() == 0) {
// 解密data
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64((String) result.getData()),
dataSecret.getBytes(), dataSecretIv.getBytes());
String dataStr = new String(plainText, StandardCharsets.UTF_8);
Map<String, String> resultMap = (Map<String, String>) JSON.parse(dataStr);
token = resultMap.get("AccessToken");
// logger.info("token: {}", token);
}
logger.info("获取令牌 result:{}, token: {}", result, token);
} catch (Exception e) {
return token;
}
return token;
}
/**
* 身份认证
*/
public Map<String, String> generateToken(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();
// 校验签名
Map<String, String> checkResultMap = checkoutSign(dto);
if (checkResultMap == null) {
// 校验失败
return null;
}
String dataString = checkResultMap.get("Data");
// 解密data
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIv.getBytes());
String dataStr = new String(plainText, StandardCharsets.UTF_8);
Map<String, String> resMap = (Map<String, String>) JSON.parse(dataStr);
String secret = resMap.get("OperatorSecret");
// 对比解出来的密钥是否和数据库中保存的一致
if (!StringUtils.equals(operatorSecret, secret)) {
// System.out.println("密钥不一致");
return null;
}
System.out.println("密钥校验通过!! 密钥为: " + operatorSecret);
// 生成token返回 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI0MjUwMTA3NjUiLCJpYXQiOjE2ODUwOTcxMTYsInN1YiI6IjEyMzEyMzEyMzEyM2FhYWEiLCJleHAiOjY4NjkwOTcxMTZ9.NyxOUIZmgsqtfex7oiMRR2LaWePTA56WHVMXIkWWt2w
long ttlMillis = 60 * 60 * 24 * 1000;
String token = JWTUtils.createToken(operatorID, operatorSecret, ttlMillis);
// 组装返回参数
AccessTokenVO vo = new AccessTokenVO();
vo.setAccessToken(token);
vo.setOperatorID(operatorID);
vo.setTokenAvailableTime((int) (ttlMillis / 1000));
vo.setFailReason(0);
vo.setSuccStat(0);
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).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);
return resultMap;
}
public Map<String, String> checkoutSign(CommonParamsDTO dto) {
String operatorID = dto.getOperatorID();
// 通过operatorID 查出 operatorSecret
ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorID);
if (platformConfig == null) {
return null;
}
String operatorSecret = platformConfig.getOperatorSecret();
String signSecret = platformConfig.getSignSecret();
Map<String, String> map = Maps.newLinkedHashMap();
map.put("OperatorID", dto.getOperatorID());
map.put("Data", dto.getData());
map.put("TimeStamp", dto.getTimeStamp());
map.put("Seq", dto.getSeq());
String sign = GBSignUtils.sign(map, signSecret);
// System.out.println(sign);
// 验证签名 得到请求方传过来的签名sig->自己拿到请求体后再按双方约定的协议生成一个sig->对比两个sig是否一致
if (!StringUtils.equals(dto.getSig(), sign)) {
System.out.println("签名校验==失败");
return null;
}
// System.out.println("签名校验通过!!!");
// 解密data
// byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dto.getData()), operatorSecret.getBytes(), operatorSecret.getBytes());
// String dataStr = new String(plainText, "UTF-8");
// Map<String, String> resMap = (Map<String, String>) JSON.parse(dataStr);
// return resMap;
Map<String, String> resultMap = new LinkedHashMap<>();
resultMap.put("Data", dto.getData());
resultMap.put("OperatorSecret", operatorSecret);
resultMap.put("DataSecret", platformConfig.getDataSecret());
resultMap.put("DataSecretIV", platformConfig.getDataSecretIv());
return resultMap;
}
/**
* 获取桩列表信息
*
* @param pileStationInfo
* @return
*/
protected List<ZDLEquipmentInfo> getPileList(PileStationInfo pileStationInfo) {
List<ZDLEquipmentInfo> resultList = new ArrayList<>();
// 通过站点id查询桩基本信息
List<PileBasicInfo> list = pileBasicInfoService.getPileListByStationId(String.valueOf(pileStationInfo.getId()));
// 封装成中电联平台对象
for (PileBasicInfo pileBasicInfo : list) {
ZDLEquipmentInfo equipmentInfo = new ZDLEquipmentInfo();
String pileSn = pileBasicInfo.getSn();
equipmentInfo.setEquipmentId(pileSn);
PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn);
equipmentInfo.setEquipmentType(Integer.parseInt(modelInfo.getSpeedType()));
equipmentInfo.setPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP));
List<ZDLConnectorInfo> connectorList = getConnectorList(pileBasicInfo);
equipmentInfo.setConnectorInfos(connectorList);
resultList.add(equipmentInfo);
}
return resultList;
}
/**
* 获取枪口列表
*
* @param pileBasicInfo
* @return
*/
protected List<ZDLConnectorInfo> getConnectorList(PileBasicInfo pileBasicInfo) {
List<ZDLConnectorInfo> resultList = new ArrayList<>();
List<PileConnectorInfo> list = pileConnectorInfoService.selectPileConnectorInfoList(pileBasicInfo.getSn());
for (PileConnectorInfo pileConnectorInfo : list) {
ZDLConnectorInfo connectorInfo = new ZDLConnectorInfo();
connectorInfo.setConnectorId(pileConnectorInfo.getPileConnectorCode());
String pileSn = pileConnectorInfo.getPileSn();
PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn);
int connectorType = StringUtils.equals("1", modelInfo.getSpeedType()) ? 4 : 3;
connectorInfo.setConnectorType(connectorType);
// 车位号
if (StringUtils.isNotBlank(pileConnectorInfo.getParkNo())) {
connectorInfo.setParkNo(pileConnectorInfo.getParkNo());
}
connectorInfo.setVoltageUpperLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
connectorInfo.setVoltageLowerLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
connectorInfo.setCurrent(Integer.valueOf(modelInfo.getRatedCurrent()));
connectorInfo.setNationalStandard(2);
// if (!StringUtils.equals(modelInfo.getConnectorNum(), "1")) {
// // 如果不是单枪,则枪口功率需要除以枪口数量
// String ratedPowerStr = modelInfo.getRatedPower();
// BigDecimal ratedPower = new BigDecimal(ratedPowerStr);
// connectorInfo.setPower(ratedPower.divide(new BigDecimal(modelInfo.getConnectorNum()), 1, BigDecimal.ROUND_HALF_UP));
// }else {
// }
connectorInfo.setPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP));
resultList.add(connectorInfo);
}
return resultList;
}
}

View File

@@ -1,37 +0,0 @@
package com.jsowell.thirdparty.platform;
import com.google.common.collect.Maps;
import com.jsowell.common.util.StringUtils;
import java.util.Map;
import java.util.Objects;
/**
* 工厂设计模式
* 对接第三方平台逻辑工厂类
*/
public class InterfaceWithPlatformLogicFactory {
private static final Map<String, AbsInterfaceWithPlatformLogic> platformMap = Maps.newHashMap();
/**
* 注册
* @param code 平台code {@link com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum}
* @param handler 处理逻辑类
*/
public static void register(String code, AbsInterfaceWithPlatformLogic handler) {
if (StringUtils.isBlank(code) || Objects.isNull(handler)) {
return;
}
platformMap.put(code, handler);
}
/**
* 获取
* @param code 平台code {@link com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum}
* @return 处理逻辑类
*/
public static AbsInterfaceWithPlatformLogic getPlatformLogic(String code) {
return platformMap.get(code);
}
}

View File

@@ -208,13 +208,9 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
map.put("ItemSize", resultList.size());
map.put("StationInfos", resultList);
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(map).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(map), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
@@ -437,18 +433,13 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
map.put("Total", total);
map.put("StationStatusInfos", collect);
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(map).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(map), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
resultMap.put("Sig", resultSign);
return resultMap;
}
@@ -536,14 +527,9 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
Map<String, Object> map = new LinkedHashMap<>();
map.put("StationStats", stationStatsInfo);
// 拼装结果集
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(map).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(map), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
@@ -558,7 +544,7 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
*/
@Override
public Map<String, String> queryEquipAuth(QueryEquipmentDTO dto) {
Map<String, String> resultMap = Maps.newLinkedHashMap();
EquipmentAuthVO vo = new EquipmentAuthVO();
String equipAuthSeq = dto.getEquipAuthSeq(); // MA1X78KH5202311071202015732
@@ -593,16 +579,13 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
vo.setFailReason(2); // 设备检测失败
vo.setFailReasonMsg("未查到该桩的数据");
}
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(vo), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
resultMap.put("Sig", resultSign);
return resultMap;
}
@@ -651,21 +634,15 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
.failReason(0)
.sumPeriod(policyInfoList.size())
.policyInfos(policyInfoList)
.build();
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(vo), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
resultMap.put("Sig", resultSign);
return resultMap;
}
@@ -778,13 +755,9 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
vo.setStartChargeSeqStat(1);
}
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(vo), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
@@ -861,13 +834,9 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
.build();
}
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(vo), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());
@@ -967,13 +936,9 @@ public class HaiNanPlatformServiceImpl implements ThirdPartyPlatformService {
// 如果是新电途平台,则将 startChargeSeqStat 改为 3-停止中
vo.setStartChargeSeqStat(3);
}
// 加密
Map<String, String> resultMap = Maps.newLinkedHashMap();
// 加密数据
byte[] encryptText = Cryptos.aesEncrypt(JSON.toJSONString(vo).getBytes(),
configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes());
String encryptData = Encodes.encodeBase64(encryptText);
String encryptData = Cryptos.aesEncrypt(JSON.toJSONString(vo), configInfo.getDataSecret(), configInfo.getDataSecretIv());
resultMap.put("Data", encryptData);
// 生成sig
String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret());

View File

@@ -1,320 +1,15 @@
package com.jsowell.thirdparty.platform.neimenggu.service;
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
import com.jsowell.thirdparty.platform.AbsInterfaceWithPlatformLogic;
import com.jsowell.thirdparty.platform.InterfaceWithPlatformLogicFactory;
import com.jsowell.thirdparty.platform.ThirdPartyPlatformService;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* 内蒙古监测平台逻辑
*/
@Service
public class NeiMengGuPlatformServiceImpl extends AbsInterfaceWithPlatformLogic {
public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService {
// 平台类型
private final String platformType = ThirdPlatformTypeEnum.NEI_MENG_GU_PLATFORM.getTypeCode();
@Override
public void afterPropertiesSet() throws Exception {
InterfaceWithPlatformLogicFactory.register(platformType, this);
}
/**
* 查询运营商信息
*
* @param dto 查询运营商信息DTO
*/
@Override
public Map<String, String> queryOperatorInfo(QueryOperatorInfoDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 6.2 查询充电站信息
*
* @param dto
*/
@Override
public Map<String, String> queryStationsInfo(QueryStationInfoDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 6.3 设备状态变化推送
*
* @param pileConnectorCode
* @param status
*/
@Override
public String notificationStationStatus(String pileConnectorCode, String status) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 设备充电中状态变化推送 notification_connector_charge_status
*
* @param orderCode 订单号
*/
@Override
public String notificationConnectorChargeStatus(String orderCode) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 订单信息推送 notification_orderInfo
*
* @param orderCode
*/
@Override
public String notificationOrderInfo(String orderCode) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 站点费率变化推送 notification_stationFee
*
* @param stationId
*/
@Override
public String notificationStationFee(String stationId) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 6.4 充电订单推送
*
* @param orderCode
*/
@Override
public String notificationChargeOrderInfo(String orderCode) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 告警信息推送 notification_alarmInfo
*/
@Override
public String notificationAlarmInfo() {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 6.5 设备接口状态查询
*
* @param dto
*/
@Override
public Map<String, String> queryStationStatus(QueryStationInfoDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 查询统计信息 query_station_stats
*
* @param dto
*/
@Override
public Map<String, String> queryStationStats(QueryStationInfoDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 查询充电电量信息 query_order_info
*
* @param orderCode
*/
@Override
public Map<String, String> queryOrderInfo(String orderCode) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 请求设备认证
* 业务信息交换
*
* @param dto
*/
@Override
public Map<String, String> queryEquipAuth(QueryEquipmentDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 查询业务策略信息结果
*
* @param dto
*/
@Override
public Map<String, String> queryEquipBusinessPolicy(QueryStartChargeDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* VIN码充电 insert_start_charge
* 华为平台
*
* @param dto
*/
@Override
public Map<String, String> insertStartCharge(QueryStationInfoDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 下发计费策略响应 notification_deliver_equip_business_policy_result
* 华为平台
*
* @param dto
*/
@Override
public Map<String, String> notificationDeliverEquipBusinessPolicyResult(QueryStationInfoDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 充电站信息变化推送 notification_stationInfo
* 新站需要推送。当站点信息发生变化时,推送新的信息通知到市级平台
*
* @param stationId 充电站id
*/
@Override
public String notificationStationInfo(String stationId) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 请求启动充电
*
* @param dto
*/
@Override
public Map<String, String> queryStartCharge(QueryStartChargeDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 推送启动充电结果
*
* @param orderCode
*/
@Override
public String notificationStartChargeResult(String orderCode) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 推送充电状态 notification_equip_charge_status
* 推送充电状态信息 supervise_notification_equip_charge_status
*
* @param orderCode 订单编号
*/
@Override
public String notificationEquipChargeStatus(String orderCode) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 查询充电状态
*
* @param dto
*/
@Override
public Map<String, String> queryEquipChargeStatus(QueryEquipChargeStatusDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 请求停止充电
*
* @param dto
*/
@Override
public Map<String, String> queryStopCharge(QueryStartChargeDTO dto) {
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 充电站内充电桩空闲状态查询 query_free_pile_number
*
* @param dto
*/
@Override
public Map<String, String> queryFreePileNumber(NXJTQueryStationInfoDTO dto) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 某车牌号消费记录查询 query_orders_info_by_Plate_number
*
* @param dto
*/
@Override
public Map<String, String> queryOrdersInfoByPlateNumber(NXJTQueryStationInfoDTO dto) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 某段时间内消费记录查询 query_orders_info
*
* @param dto
*/
@Override
public Map<String, String> queryOrdersInfo(NXJTQueryStationInfoDTO dto) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 推送停止充电结果
*
* @param orderCode
*/
@Override
public String notificationStopChargeResult(String orderCode) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 华为平台
* 平台充电设备编码同步 notification_operation_system_info
*
* @param orderCode
*/
@Override
public String notificationOperationSystemInfo(String orderCode) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 推送充换电站用能统计信息 supervise_notification_operation_stats_info
*
* @param stationId
*/
@Override
public String notificationOperationStatsInfo(String stationId) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
/**
* 推送充电站历史充电订单信息 supervise_notification_charge_order_info_history
*
* @param stationId
*/
@Override
public String notificationChargeOrderInfoHistory(String stationId) {
//方法未实现,抛出异常
throw new UnsupportedOperationException("This method is not yet implemented");
}
}