This commit is contained in:
2024-03-25 11:22:32 +08:00
5 changed files with 114 additions and 41 deletions

View File

@@ -21,6 +21,7 @@ import com.jsowell.pile.domain.PileBasicInfo;
import com.jsowell.pile.domain.ThirdPartyStationRelation;
import com.jsowell.pile.domain.ThirdpartyParkingConfig;
import com.jsowell.pile.dto.PushStationInfoDTO;
import com.jsowell.pile.dto.ThirdPartyCommonStartChargeDTO;
import com.jsowell.pile.dto.huawei.HWQueryStartChargeDTO;
import com.jsowell.pile.dto.lutongyunting.BindCouponDTO;
import com.jsowell.pile.dto.ruanjie.UseCouponDTO;
@@ -501,36 +502,41 @@ public class CommonService {
/**
* 统一请求启动充电,目前给华为平台用
* @param thirdPartyType
* @param stationIds
* @param pileConnectorCode
* @param dto
* @return
*/
public String commonQueryStartCharge(String thirdPartyType, List<String> stationIds, String pileConnectorCode, BigDecimal chargeAmount, String payMode) {
public String commonQueryStartCharge(ThirdPartyCommonStartChargeDTO dto) {
String thirdPartyType = dto.getThirdPartyType();
List<String> stationIds = dto.getStationIds();
String pileConnectorCode = dto.getPileConnectorCode();
BigDecimal chargeAmount = dto.getChargeAmount();
String payMode = dto.getPayMode();
// 判断平台类型
if (StringUtils.equals(ThirdPlatformTypeEnum.HUA_WEI.getCode(), thirdPartyType)) {
// 华为平台
String label = ThirdPlatformTypeEnum.getLabelByCode(thirdPartyType);
// query_station_status 查询站点枪口详情
Map<String, String> map = huaweiServiceV2.queryStationStatus(stationIds);
String status = map.get(pileConnectorCode);
// 判断枪口状态
if (!StringUtils.equals(PileConnectorDataBaseStatusEnum.OCCUPIED_NOT_CHARGED.getValue(), status)) {
log.error(thirdPartyType + "判断枪口状态 error, 枪口状态为:{}", status);
log.error(label + "判断枪口状态 error, 枪口状态为:{}", status);
}
// query_equip_auth 请求设备认证
QueryEquipAuthVO vo = huaweiServiceV2.queryEquipAuth(pileConnectorCode);
Integer succStat = vo.getSuccStat();
if (succStat != Constants.zero) {
log.error(thirdPartyType + "请求设备认证 error, {}", vo.getFailReason());
log.error(label + "请求设备认证 error, {}", vo.getFailReason());
}
// query_start_charge 请求启动充电
HWQueryStartChargeDTO dto = new HWQueryStartChargeDTO();
dto.setConnectorID(pileConnectorCode);
dto.setMoneyLimit(chargeAmount);
dto.setPayMode(payMode);
QueryStartChargeVO startChargeVO = huaweiServiceV2.queryStartCharge(dto);
HWQueryStartChargeDTO chargeDTO = new HWQueryStartChargeDTO();
chargeDTO.setConnectorID(pileConnectorCode);
chargeDTO.setMoneyLimit(chargeAmount);
chargeDTO.setPayMode(payMode);
QueryStartChargeVO startChargeVO = huaweiServiceV2.queryStartCharge(chargeDTO);
if (startChargeVO.getSuccStat() != Constants.zero) {
log.error(thirdPartyType + "请求启动充电 error, {}", startChargeVO.getFailReason());
log.error(label + "请求启动充电 error, {}", startChargeVO.getFailReason());
}
String startChargeSeq = startChargeVO.getStartChargeSeq(); // 充电订单号

View File

@@ -761,7 +761,7 @@ public class HuaweiServiceV2 {
// 将交易记录中的交易标识 05 传入实时数据对象,用于结算订单后解锁 vin 状态
data.setTransactionIdentifier("05");
}
String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId());
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
orderLogic.settleOrderForThirdParty(data, orderBasicInfo);
@@ -817,6 +817,9 @@ public class HuaweiServiceV2 {
if (configInfo == null) {
return null;
}
int succStat = Constants.one; // 操作结果
int failReason = Constants.one; // 失败原因
JSONObject jsonObject = new JSONObject();
String vinCode = dto.getVin();
String pileConnectorCode = dto.getConnectorID();
@@ -827,32 +830,35 @@ public class HuaweiServiceV2 {
MemberPlateNumberRelation basicInfo = memberPlateNumberRelationService.getMemberPlateInfoByVinCode(vinCode);
if (basicInfo == null) {
// 该用户未注册
throw new BusinessException(ReturnCodeEnum.CODE_GENERATE_ORDER_ERROR);
jsonObject.put("SuccStat", succStat);
jsonObject.put("FailReason", failReason);
Map<String, String> resultMap = getResultMap(jsonObject);
return resultMap;
}else {
// 生成订单,并启动充电
GenerateOrderDTO generateOrderDTO = new GenerateOrderDTO();
generateOrderDTO.setMemberPlateNumberRelation(basicInfo);
generateOrderDTO.setPileSn(pileSn);
generateOrderDTO.setConnectorCode(connectorCode);
generateOrderDTO.setStartMode(StartModeEnum.VIN_CODE.getValue());
generateOrderDTO.setMemberId(basicInfo.getMemberId());
generateOrderDTO.setStartSoc(String.valueOf(dto.getSoc()));
Map<String, Object> map = orderBasicInfoService.generateOrderByCard(generateOrderDTO);
if (map != null) {
// 鉴权成功
succStat = Constants.zero;
failReason = Constants.zero;
}
jsonObject.put("SuccStat", succStat);
jsonObject.put("FailReason", failReason);
Map<String, String> resultMap = getResultMap(jsonObject);
return resultMap;
}
// 生成订单,并启动充电
GenerateOrderDTO generateOrderDTO = new GenerateOrderDTO();
generateOrderDTO.setMemberPlateNumberRelation(basicInfo);
generateOrderDTO.setPileSn(pileSn);
generateOrderDTO.setConnectorCode(connectorCode);
generateOrderDTO.setStartMode(StartModeEnum.VIN_CODE.getValue());
generateOrderDTO.setMemberId(basicInfo.getMemberId());
generateOrderDTO.setStartSoc(String.valueOf(dto.getSoc()));
int succStat = Constants.one; // 操作结果
int failReason = Constants.one; // 失败原因
Map<String, Object> map = orderBasicInfoService.generateOrderByCard(generateOrderDTO);
if (map != null) {
// 鉴权成功
succStat = Constants.zero;
failReason = Constants.zero;
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("SuccStat", succStat);
jsonObject.put("FailReason", failReason);
Map<String, String> resultMap = getResultMap(jsonObject);
return resultMap;
}

View File

@@ -385,7 +385,7 @@ public class LianLianServiceImpl implements LianLianService {
String dataSecret = "E6gnWuz0QzBW75CR"; // SPBNJ1Z5EQNmpK08 VTAEKDPVN9CUS7WO huawei: zd4NrLWJ38XCTaqP E6gnWuz0QzBW75CR
String dataSecretIV = "SXejaSUx5yud8UHm"; // peRoTcb2C7zqKeII 83UZFFRRZDYNF5CR huawei: RJJecvNTJ48SGMG7 SXejaSUx5yud8UHm
String signSecret = "sRjCDeokckFGpYpA"; // sRjCDeokckFGpYpA
String dataString = "o1tqVesDkPUXBNdUmE10Z7FWjAf/KFO3Iq4NWNCcFeq0h8wBcdWcZwojkdv2TNFpS0Qftv1HWDTdm+8Pjj0AIw==";
String dataString = "GZlmSIZOVzT+Yvpc2PmvNmwKXhaqSnsNdCUS61pq9BxES7v9FWNrUvqk3OsAUMPvjCwmYeskIglHXw0OFfYGZ1bXxAzHymzsqfehZ10WoNs=";
// 解密data
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes());