mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-10 04:50:11 +08:00
Merge branch 'dev' of http://192.168.2.2:8099/jsowell/jsowell-charger-web into dev
This commit is contained in:
@@ -4,12 +4,15 @@ 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.exception.BusinessException;
|
||||
import com.jsowell.common.response.RestApiResponse;
|
||||
import com.jsowell.common.util.JWTUtils;
|
||||
import com.jsowell.pile.dto.ThirdPartyCommonStartChargeDTO;
|
||||
import com.jsowell.pile.dto.huawei.*;
|
||||
import com.jsowell.pile.vo.huawei.QueryChargeStatusVO;
|
||||
import com.jsowell.pile.vo.huawei.QueryEquipAuthVO;
|
||||
import com.jsowell.pile.vo.huawei.QueryStartChargeVO;
|
||||
import com.jsowell.thirdparty.common.CommonService;
|
||||
import com.jsowell.thirdparty.huawei.HuaweiServiceV2;
|
||||
import com.jsowell.thirdparty.lianlian.common.CommonResult;
|
||||
import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo;
|
||||
@@ -40,6 +43,9 @@ public class HuaWeiControllerV2 extends BaseController {
|
||||
@Autowired
|
||||
private HuaweiServiceV2 huaweiServiceV2;
|
||||
|
||||
@Autowired
|
||||
private CommonService commonService;
|
||||
|
||||
/**
|
||||
* 获取token接口
|
||||
* http://localhost:8080/huawei/v1/query_token
|
||||
@@ -184,12 +190,12 @@ public class HuaWeiControllerV2 extends BaseController {
|
||||
Map<String, String> resultMap = null;
|
||||
try {
|
||||
resultMap = huaweiServiceV2.vinStartCharge(vinStartChargeDTO);
|
||||
logger.info("华为vin启动充电 result:{}", resultMap);
|
||||
}catch (Exception e) {
|
||||
} catch (Exception e) {
|
||||
logger.error("华为vin启动充电 error", e);
|
||||
}
|
||||
logger.info("华为vin启动充电 resultMap:{}", resultMap);
|
||||
if (resultMap != null) {
|
||||
return CommonResult.success(0, "vin启动充电成功!", resultMap.get("Data"), resultMap.get("Sig"));
|
||||
return CommonResult.success(0, "vin启动充电结果", resultMap.get("Data"), resultMap.get("Sig"));
|
||||
}else {
|
||||
return CommonResult.failed("vin启动充电 error");
|
||||
}
|
||||
@@ -342,6 +348,21 @@ public class HuaWeiControllerV2 extends BaseController {
|
||||
|
||||
|
||||
|
||||
@PostMapping("/commonStartCharge")
|
||||
public RestApiResponse<?> commonStartCharge(@RequestBody ThirdPartyCommonStartChargeDTO dto) {
|
||||
RestApiResponse<?> response = null;
|
||||
try {
|
||||
String result = commonService.commonQueryStartCharge(dto);
|
||||
response = new RestApiResponse<>(result);
|
||||
} catch (Exception e) {
|
||||
logger.error("统一启动充电接口 error", e);
|
||||
}
|
||||
logger.info("统一启动充电接口 params:{}, result:{}", JSON.toJSONString(dto), response);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.jsowell.pile.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 通用第三方站点启动充电dto
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2024/3/25 8:37:19
|
||||
*/
|
||||
@Data
|
||||
public class ThirdPartyCommonStartChargeDTO {
|
||||
/**
|
||||
* 第三方平台类型
|
||||
*/
|
||||
private String thirdPartyType;
|
||||
|
||||
/**
|
||||
* 站点id列表
|
||||
*/
|
||||
private List<String> stationIds;
|
||||
|
||||
/**
|
||||
* 枪口号
|
||||
*/
|
||||
private String pileConnectorCode;
|
||||
|
||||
/**
|
||||
* 充电金额
|
||||
*/
|
||||
private BigDecimal chargeAmount;
|
||||
|
||||
/**
|
||||
* 支付方式
|
||||
*/
|
||||
private String payMode;
|
||||
}
|
||||
@@ -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(); // 充电订单号
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user