mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-17 00:08:35 +08:00
update 宁夏交投平台Service
This commit is contained in:
@@ -4,16 +4,21 @@ import com.alibaba.fastjson2.JSON;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.jsowell.common.annotation.Anonymous;
|
import com.jsowell.common.annotation.Anonymous;
|
||||||
import com.jsowell.common.core.controller.BaseController;
|
import com.jsowell.common.core.controller.BaseController;
|
||||||
|
import com.jsowell.common.enums.thirdparty.ThirdPartyReturnCodeEnum;
|
||||||
|
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
||||||
import com.jsowell.common.util.JWTUtils;
|
import com.jsowell.common.util.JWTUtils;
|
||||||
|
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||||
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO;
|
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO;
|
||||||
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||||
import com.jsowell.thirdparty.lianlian.common.CommonResult;
|
import com.jsowell.thirdparty.lianlian.common.CommonResult;
|
||||||
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
||||||
import com.jsowell.thirdparty.lianlian.service.LianLianService;
|
import com.jsowell.thirdparty.lianlian.service.LianLianService;
|
||||||
|
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
|
||||||
import com.jsowell.thirdparty.platform.util.Cryptos;
|
import com.jsowell.thirdparty.platform.util.Cryptos;
|
||||||
import com.jsowell.thirdparty.platform.util.Encodes;
|
import com.jsowell.thirdparty.platform.util.Encodes;
|
||||||
import com.jsowell.thirdparty.ningxiajiaotou.service.NXJTService;
|
import com.jsowell.thirdparty.ningxiajiaotou.service.NXJTService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@@ -33,13 +38,15 @@ import java.util.Map;
|
|||||||
@Anonymous
|
@Anonymous
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/nxjt")
|
@RequestMapping("/nxjt")
|
||||||
public class NXJTController extends BaseController {
|
public class NXJTController extends ThirdPartyBaseController {
|
||||||
|
|
||||||
|
private final String platformName = "宁夏交投平台";
|
||||||
|
|
||||||
|
private final String platformType = ThirdPlatformTypeEnum.NING_XIA_JIAO_TOU.getTypeCode();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private NXJTService nxjtService;
|
@Qualifier("ningXiaJiaoTouPlatformServiceImpl")
|
||||||
|
private ThirdPartyPlatformService platformLogic;
|
||||||
@Autowired
|
|
||||||
private LianLianService lianLianService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取token接口
|
* 获取token接口
|
||||||
@@ -47,13 +54,12 @@ public class NXJTController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/v1/query_token")
|
@PostMapping("/v1/query_token")
|
||||||
public CommonResult<?> queryToken(@RequestBody CommonParamsDTO dto) {
|
public CommonResult<?> queryToken(@RequestBody CommonParamsDTO dto) {
|
||||||
logger.info("宁夏交投平台请求令牌 params:{}", JSON.toJSONString(dto));
|
|
||||||
try {
|
try {
|
||||||
Map<String, String> map = nxjtService.generateToken(dto);
|
Map<String, String> map = platformLogic.queryToken(dto);
|
||||||
logger.info("宁夏交投平台请求令牌 result:{}", JSON.toJSONString(map));
|
logger.info("{}-请求令牌, params:{}, result:{}", platformName, JSON.toJSONString(dto), JSON.toJSONString(map));
|
||||||
return CommonResult.success(0, "请求令牌成功!", map.get("Data"), map.get("Sig"));
|
return CommonResult.success(Integer.parseInt(map.get("Ret")), map.get("Msg"), map.get("Data"), map.get("Sig"));
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (Exception e) {
|
||||||
logger.error("获取token接口 异常");
|
logger.error("{}-获取token接口, 异常, params:{}", platformName, JSON.toJSONString(dto), e);
|
||||||
return CommonResult.failed("获取token发生异常");
|
return CommonResult.failed("获取token发生异常");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,36 +72,30 @@ public class NXJTController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/v1/query_stations_info")
|
@PostMapping("/v1/query_stations_info")
|
||||||
public CommonResult<?> queryStationsInfo(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
public CommonResult<?> queryStationsInfo(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
||||||
logger.info("宁夏交投平台查询充电站信息 params:{}", JSON.toJSONString(dto));
|
logger.info("{}-查询充电站信息 params:{}", platformName, JSON.toJSONString(dto));
|
||||||
try {
|
try {
|
||||||
// 校验令牌
|
// 校验令牌
|
||||||
String token = request.getHeader("Authorization");
|
if (!verifyToken(request.getHeader("Authorization"))) {
|
||||||
if (!JWTUtils.checkThirdPartyToken(token)) {
|
|
||||||
// 校验失败
|
// 校验失败
|
||||||
return CommonResult.failed("令牌校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR);
|
||||||
}
|
}
|
||||||
|
dto.setPlatformType(platformType);
|
||||||
|
|
||||||
// 校验签名
|
// 校验签名
|
||||||
Map<String, String> resultMap = lianLianService.checkoutSign(dto);
|
if (!verifySignature(dto)) {
|
||||||
if (resultMap == null) {
|
|
||||||
// 签名错误
|
// 签名错误
|
||||||
return CommonResult.failed("签名校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR);
|
||||||
}
|
}
|
||||||
String operatorSecret = resultMap.get("OperatorSecret");
|
|
||||||
String dataString = resultMap.get("Data");
|
// 解析入参
|
||||||
String dataSecret = resultMap.get("DataSecret");
|
NXJTQueryStationInfoDTO nxjtQueryStationInfoDTO = parseParamsDTO(dto, NXJTQueryStationInfoDTO.class);
|
||||||
String dataSecretIV = resultMap.get("DataSecretIV");
|
|
||||||
// 解密data
|
// 执行逻辑
|
||||||
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes());
|
Map<String, String> map = platformLogic.NXJTQueryStationsInfo(nxjtQueryStationInfoDTO);
|
||||||
String dataStr = new String(plainText, StandardCharsets.UTF_8);
|
|
||||||
// 转换成相应对象
|
return CommonResult.success(Integer.parseInt(map.get("Ret")), map.get("Msg"), map.get("Data"), map.get("Sig"));
|
||||||
NXJTQueryStationInfoDTO nxjtQueryStationInfoDTO = JSONObject.parseObject(dataStr, NXJTQueryStationInfoDTO.class);
|
|
||||||
nxjtQueryStationInfoDTO.setOperatorId(dto.getOperatorID());
|
|
||||||
Map<String, String> map = nxjtService.queryStationsInfo(nxjtQueryStationInfoDTO);
|
|
||||||
// return CommonResult.success(map);
|
|
||||||
return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig"));
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.info("宁夏交投平台查询充电站信息 error:", e);
|
logger.info("{}-查询充电站信息 error:", platformName, e);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
return CommonResult.failed("查询充电站信息发生异常");
|
return CommonResult.failed("查询充电站信息发生异常");
|
||||||
}
|
}
|
||||||
@@ -109,38 +109,32 @@ public class NXJTController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/v1/query_free_pile_number")
|
@PostMapping("/v1/query_free_pile_number")
|
||||||
public CommonResult<?> queryFreePileNumber(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
public CommonResult<?> queryFreePileNumber(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
||||||
logger.info("宁夏交投平台查询充电站中空闲桩数量 params:{}", JSON.toJSONString(dto));
|
logger.info("{}-查询充电站中空闲桩数量 params:{}", platformName, JSON.toJSONString(dto));
|
||||||
try {
|
try {
|
||||||
// 校验令牌
|
// 校验令牌
|
||||||
String token = request.getHeader("Authorization");
|
if (!verifyToken(request.getHeader("Authorization"))) {
|
||||||
if (!JWTUtils.checkThirdPartyToken(token)) {
|
|
||||||
// 校验失败
|
// 校验失败
|
||||||
return CommonResult.failed("令牌校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR);
|
||||||
}
|
}
|
||||||
|
dto.setPlatformType(platformType);
|
||||||
|
|
||||||
// 校验签名
|
// 校验签名
|
||||||
Map<String, String> resultMap = lianLianService.checkoutSign(dto);
|
if (!verifySignature(dto)) {
|
||||||
if (resultMap == null) {
|
|
||||||
// 签名错误
|
// 签名错误
|
||||||
return CommonResult.failed("签名校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR);
|
||||||
}
|
}
|
||||||
String operatorSecret = resultMap.get("OperatorSecret");
|
|
||||||
String dataString = resultMap.get("Data");
|
// 解析入参
|
||||||
String dataSecret = resultMap.get("DataSecret");
|
NXJTQueryStationInfoDTO nxjtQueryStationInfoDTO = parseParamsDTO(dto, NXJTQueryStationInfoDTO.class);
|
||||||
String dataSecretIV = resultMap.get("DataSecretIV");
|
|
||||||
// 解密data
|
// 执行逻辑
|
||||||
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes());
|
Map<String, String> map = platformLogic.queryFreePileNumber(nxjtQueryStationInfoDTO);
|
||||||
String dataStr = new String(plainText, StandardCharsets.UTF_8);
|
|
||||||
// 转换成相应对象
|
return CommonResult.success(Integer.parseInt(map.get("Ret")), map.get("Msg"), map.get("Data"), map.get("Sig"));
|
||||||
NXJTQueryStationInfoDTO nxjtQueryStationInfoDTO = JSONObject.parseObject(dataStr, NXJTQueryStationInfoDTO.class);
|
|
||||||
nxjtQueryStationInfoDTO.setOperatorId(dto.getOperatorID());
|
|
||||||
Map<String, String> map = nxjtService.queryFreePileNumber(nxjtQueryStationInfoDTO);
|
|
||||||
// return CommonResult.success(map);
|
|
||||||
return CommonResult.success(0, "查询充电站中空闲桩数量信息成功!", map.get("Data"), map.get("Sig"));
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.info("宁夏交投平台查询充电站中空闲桩数量 error:", e);
|
logger.info("{}-查询充电站中空闲桩数量 error:", platformName, e);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
return CommonResult.failed("查询充电站中空闲桩数量信息发生异常");
|
return CommonResult.failed("查询充电站中空闲桩数量发生异常");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -151,36 +145,30 @@ public class NXJTController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/v1/query_orders_info_by_Plate_number")
|
@PostMapping("/v1/query_orders_info_by_Plate_number")
|
||||||
public CommonResult<?> queryOrdersInfoByPlateNumber(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
public CommonResult<?> queryOrdersInfoByPlateNumber(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
||||||
logger.info("宁夏交投平台查询某车牌号消费记录 params:{}", JSON.toJSONString(dto));
|
logger.info("{}-查询某车牌号消费记录 params:{}", platformName, JSON.toJSONString(dto));
|
||||||
try {
|
try {
|
||||||
// 校验令牌
|
// 校验令牌
|
||||||
String token = request.getHeader("Authorization");
|
if (!verifyToken(request.getHeader("Authorization"))) {
|
||||||
if (!JWTUtils.checkThirdPartyToken(token)) {
|
|
||||||
// 校验失败
|
// 校验失败
|
||||||
return CommonResult.failed("令牌校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR);
|
||||||
}
|
}
|
||||||
|
dto.setPlatformType(platformType);
|
||||||
|
|
||||||
// 校验签名
|
// 校验签名
|
||||||
Map<String, String> resultMap = lianLianService.checkoutSign(dto);
|
if (!verifySignature(dto)) {
|
||||||
if (resultMap == null) {
|
|
||||||
// 签名错误
|
// 签名错误
|
||||||
return CommonResult.failed("签名校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR);
|
||||||
}
|
}
|
||||||
String operatorSecret = resultMap.get("OperatorSecret");
|
|
||||||
String dataString = resultMap.get("Data");
|
// 解析入参
|
||||||
String dataSecret = resultMap.get("DataSecret");
|
NXJTQueryOrdersInfoDTO nxjtQueryOrdersInfoDTO = parseParamsDTO(dto, NXJTQueryOrdersInfoDTO.class);
|
||||||
String dataSecretIV = resultMap.get("DataSecretIV");
|
|
||||||
// 解密data
|
// 执行逻辑
|
||||||
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes());
|
Map<String, String> map = platformLogic.queryOrdersInfoByPlateNumber(nxjtQueryOrdersInfoDTO);
|
||||||
String dataStr = new String(plainText, StandardCharsets.UTF_8);
|
|
||||||
// 转换成相应对象
|
return CommonResult.success(Integer.parseInt(map.get("Ret")), map.get("Msg"), map.get("Data"), map.get("Sig"));
|
||||||
NXJTQueryOrdersInfoDTO nxjtQueryOrdersInfoDTO = JSONObject.parseObject(dataStr, NXJTQueryOrdersInfoDTO.class);
|
|
||||||
nxjtQueryOrdersInfoDTO.setOperatorId(dto.getOperatorID());
|
|
||||||
Map<String, String> map = nxjtService.queryOrdersInfoByPlateNumber(nxjtQueryOrdersInfoDTO);
|
|
||||||
// return CommonResult.success(map);
|
|
||||||
return CommonResult.success(0, "查询充电站中空闲桩数量信息成功!", map.get("Data"), map.get("Sig"));
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.info("宁夏交投平台查询某车牌号消费记录 error:", e);
|
logger.info("{}-查询某车牌号消费记录 error:", platformName, e);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
return CommonResult.failed("查询某车牌号消费记录发生异常");
|
return CommonResult.failed("查询某车牌号消费记录发生异常");
|
||||||
}
|
}
|
||||||
@@ -194,36 +182,30 @@ public class NXJTController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/v1/query_orders_info")
|
@PostMapping("/v1/query_orders_info")
|
||||||
public CommonResult<?> queryOrdersInfo(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
public CommonResult<?> queryOrdersInfo(HttpServletRequest request, @RequestBody CommonParamsDTO dto) {
|
||||||
logger.info("宁夏交投平台查询某段时间内消费记录 params:{}", JSON.toJSONString(dto));
|
logger.info("{}-查询某段时间内消费记录 params:{}", platformName, JSON.toJSONString(dto));
|
||||||
try {
|
try {
|
||||||
// 校验令牌
|
// 校验令牌
|
||||||
String token = request.getHeader("Authorization");
|
if (!verifyToken(request.getHeader("Authorization"))) {
|
||||||
if (!JWTUtils.checkThirdPartyToken(token)) {
|
|
||||||
// 校验失败
|
// 校验失败
|
||||||
return CommonResult.failed("令牌校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR);
|
||||||
}
|
}
|
||||||
|
dto.setPlatformType(platformType);
|
||||||
|
|
||||||
// 校验签名
|
// 校验签名
|
||||||
Map<String, String> resultMap = lianLianService.checkoutSign(dto);
|
if (!verifySignature(dto)) {
|
||||||
if (resultMap == null) {
|
|
||||||
// 签名错误
|
// 签名错误
|
||||||
return CommonResult.failed("签名校验错误");
|
return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR);
|
||||||
}
|
}
|
||||||
String operatorSecret = resultMap.get("OperatorSecret");
|
|
||||||
String dataString = resultMap.get("Data");
|
// 解析入参
|
||||||
String dataSecret = resultMap.get("DataSecret");
|
NXJTQueryOrdersInfoDTO nxjtQueryOrdersInfoDTO = parseParamsDTO(dto, NXJTQueryOrdersInfoDTO.class);
|
||||||
String dataSecretIV = resultMap.get("DataSecretIV");
|
|
||||||
// 解密data
|
// 执行逻辑
|
||||||
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(dataString), dataSecret.getBytes(), dataSecretIV.getBytes());
|
Map<String, String> map = platformLogic.queryOrdersInfo(nxjtQueryOrdersInfoDTO);
|
||||||
String dataStr = new String(plainText, StandardCharsets.UTF_8);
|
|
||||||
// 转换成相应对象
|
return CommonResult.success(Integer.parseInt(map.get("Ret")), map.get("Msg"), map.get("Data"), map.get("Sig"));
|
||||||
NXJTQueryOrdersInfoDTO nxjtQueryOrdersInfoDTO = JSONObject.parseObject(dataStr, NXJTQueryOrdersInfoDTO.class);
|
|
||||||
nxjtQueryOrdersInfoDTO.setOperatorId(dto.getOperatorID());
|
|
||||||
Map<String, String> map = nxjtService.queryOrdersInfo(nxjtQueryOrdersInfoDTO);
|
|
||||||
// return CommonResult.success(map);
|
|
||||||
return CommonResult.success(0, "查询充电站中空闲桩数量信息成功!", map.get("Data"), map.get("Sig"));
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.info("宁夏交投平台查询某段时间内消费记录 error:", e);
|
logger.info("{}-查询某段时间内消费记录 error:", platformName, e);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
return CommonResult.failed("查询某段时间内消费记录发生异常");
|
return CommonResult.failed("查询某段时间内消费记录发生异常");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.jsowell.common.util.StringUtils;
|
|||||||
import com.jsowell.common.util.bean.BeanUtils;
|
import com.jsowell.common.util.bean.BeanUtils;
|
||||||
import com.jsowell.pile.dto.*;
|
import com.jsowell.pile.dto.*;
|
||||||
import com.jsowell.pile.dto.nanrui.PushAlarmInfoDTO;
|
import com.jsowell.pile.dto.nanrui.PushAlarmInfoDTO;
|
||||||
|
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO;
|
||||||
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||||
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
||||||
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
|
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
|
||||||
@@ -93,6 +94,15 @@ public interface ThirdPartyPlatformService extends InitializingBean {
|
|||||||
throw new UnsupportedOperationException("This method is not yet implemented");
|
throw new UnsupportedOperationException("This method is not yet implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 宁夏交投平台查询充电站信息
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
default Map<String, String> NXJTQueryStationsInfo(NXJTQueryStationInfoDTO dto){
|
||||||
|
throw new UnsupportedOperationException("This method is not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备接口状态查询 query_station_status
|
* 设备接口状态查询 query_station_status
|
||||||
*
|
*
|
||||||
@@ -177,7 +187,7 @@ public interface ThirdPartyPlatformService extends InitializingBean {
|
|||||||
*
|
*
|
||||||
* @throws UnsupportedOperationException 未实现异常
|
* @throws UnsupportedOperationException 未实现异常
|
||||||
*/
|
*/
|
||||||
default Map<String, String> queryOrdersInfoByPlateNumber(NXJTQueryStationInfoDTO dto) {
|
default Map<String, String> queryOrdersInfoByPlateNumber(NXJTQueryOrdersInfoDTO dto) {
|
||||||
throw new UnsupportedOperationException("This method is not yet implemented");
|
throw new UnsupportedOperationException("This method is not yet implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +196,7 @@ public interface ThirdPartyPlatformService extends InitializingBean {
|
|||||||
*
|
*
|
||||||
* @throws UnsupportedOperationException 未实现异常
|
* @throws UnsupportedOperationException 未实现异常
|
||||||
*/
|
*/
|
||||||
default Map<String, String> queryOrdersInfo(NXJTQueryStationInfoDTO dto) {
|
default Map<String, String> queryOrdersInfo(NXJTQueryOrdersInfoDTO dto) {
|
||||||
throw new UnsupportedOperationException("This method is not yet implemented");
|
throw new UnsupportedOperationException("This method is not yet implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,45 @@
|
|||||||
package com.jsowell.thirdparty.platform.service.impl;
|
package com.jsowell.thirdparty.platform.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.jsowell.common.constant.Constants;
|
||||||
|
import com.jsowell.common.core.redis.RedisCache;
|
||||||
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
||||||
|
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||||
|
import com.jsowell.common.exception.BusinessException;
|
||||||
|
import com.jsowell.common.util.DateUtils;
|
||||||
|
import com.jsowell.common.util.JWTUtils;
|
||||||
|
import com.jsowell.common.util.PageUtils;
|
||||||
|
import com.jsowell.common.util.StringUtils;
|
||||||
|
import com.jsowell.pile.domain.ThirdPartyPlatformConfig;
|
||||||
|
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||||
|
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO;
|
||||||
|
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||||
|
import com.jsowell.pile.service.OrderBasicInfoService;
|
||||||
|
import com.jsowell.pile.service.PileConnectorInfoService;
|
||||||
|
import com.jsowell.pile.service.PileStationInfoService;
|
||||||
|
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
||||||
|
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
|
||||||
|
import com.jsowell.pile.vo.base.ConnectorInfoVO;
|
||||||
|
import com.jsowell.pile.vo.ningxiajiaotou.NXJTOrderVO;
|
||||||
|
import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO;
|
||||||
|
import com.jsowell.pile.vo.uniapp.customer.OrderVO;
|
||||||
|
import com.jsowell.thirdparty.lianlian.vo.AccessTokenVO;
|
||||||
import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory;
|
import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory;
|
||||||
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
|
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
|
||||||
|
import com.jsowell.thirdparty.platform.util.Cryptos;
|
||||||
|
import com.jsowell.thirdparty.platform.util.Encodes;
|
||||||
|
import com.jsowell.thirdparty.platform.util.GBSignUtils;
|
||||||
|
import com.jsowell.thirdparty.platform.util.ThirdPartyPlatformUtils;
|
||||||
|
import com.jsowell.thirdparty.service.ThirdpartySecretInfoService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 宁夏交投平台
|
* 宁夏交投平台
|
||||||
*
|
*
|
||||||
@@ -16,10 +51,220 @@ public class NingXiaJiaoTouPlatformServiceImpl implements ThirdPartyPlatformServ
|
|||||||
// 平台类型
|
// 平台类型
|
||||||
private final String thirdPlatformType = ThirdPlatformTypeEnum.NING_XIA_JIAO_TOU.getTypeCode();
|
private final String thirdPlatformType = ThirdPlatformTypeEnum.NING_XIA_JIAO_TOU.getTypeCode();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ThirdpartySecretInfoService thirdpartySecretInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PileStationInfoService pileStationInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PileConnectorInfoService pileConnectorInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderBasicInfoService orderBasicInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisCache redisCache;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
ThirdPartyPlatformFactory.register(thirdPlatformType, this);
|
ThirdPartyPlatformFactory.register(thirdPlatformType, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, String> queryToken(CommonParamsDTO dto) {
|
||||||
|
AccessTokenVO vo = new AccessTokenVO();
|
||||||
|
// 0:成功;1:失败
|
||||||
|
int succStat = 0;
|
||||||
|
// 0:无;1:无此对接平台;2:密钥错误; 3~99:自定义
|
||||||
|
int failReason = 0;
|
||||||
|
|
||||||
|
String operatorId = dto.getOperatorID();
|
||||||
|
// token缓存key值
|
||||||
|
String redisKey = operatorId + "_token:";
|
||||||
|
// 通过operatorId 查出 operatorSecret
|
||||||
|
ThirdPartySecretInfoVO thirdPartySecretInfoVO = getNingXiaJiaoTouSecretInfo();
|
||||||
|
if (thirdPartySecretInfoVO == null) {
|
||||||
|
failReason = 1;
|
||||||
|
succStat = 1;
|
||||||
|
} else {
|
||||||
|
String ourOperatorSecret = thirdPartySecretInfoVO.getOurOperatorSecret();
|
||||||
|
String dataSecret = thirdPartySecretInfoVO.getOurDataSecret();
|
||||||
|
String dataSecretIv = thirdPartySecretInfoVO.getOurDataSecretIv();
|
||||||
|
// 解密data 获取参数中的OperatorSecret
|
||||||
|
String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv);
|
||||||
|
String inputOperatorSecret = null;
|
||||||
|
if (StringUtils.isNotBlank(decrypt)) {
|
||||||
|
inputOperatorSecret = JSON.parseObject(decrypt).getString("OperatorSecret");
|
||||||
|
}
|
||||||
|
// 对比密钥
|
||||||
|
if (!StringUtils.equals(ourOperatorSecret, inputOperatorSecret)) {
|
||||||
|
failReason = 1;
|
||||||
|
succStat = 1;
|
||||||
|
} else {
|
||||||
|
// 先查缓存中是否有已生成的token
|
||||||
|
String token = redisCache.getCacheObject(redisKey);
|
||||||
|
int expiredTime = (int) redisCache.getExpire(redisKey);
|
||||||
|
if (StringUtils.isBlank(token)) {
|
||||||
|
// 生成token
|
||||||
|
token = JWTUtils.createToken(operatorId, ourOperatorSecret, JWTUtils.ttlMillis);
|
||||||
|
expiredTime = (int) (JWTUtils.ttlMillis / 1000);
|
||||||
|
}
|
||||||
|
vo.setAccessToken(token);
|
||||||
|
vo.setTokenAvailableTime(expiredTime);
|
||||||
|
// 设置缓存
|
||||||
|
redisCache.setCacheObject(redisKey, token, expiredTime, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 组装返回参数
|
||||||
|
vo.setOperatorID(operatorId);
|
||||||
|
vo.setFailReason(failReason);
|
||||||
|
vo.setSuccStat(succStat);
|
||||||
|
|
||||||
|
Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMapV2(vo, thirdPartySecretInfoVO.getOurDataSecret()
|
||||||
|
, thirdPartySecretInfoVO.getOurDataSecretIv(), thirdPartySecretInfoVO.getOurSigSecret());
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询站点信息 query_stations_info
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, String> NXJTQueryStationsInfo(NXJTQueryStationInfoDTO dto) {
|
||||||
|
int pageNo = dto.getPageNo() == null ? 1 : dto.getPageNo();
|
||||||
|
int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize();
|
||||||
|
|
||||||
|
ThirdPartySecretInfoVO thirdPartySecretInfoVO = getNingXiaJiaoTouSecretInfo();
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
PageUtils.startPage(pageNo, pageSize);
|
||||||
|
List<NXJTStationInfoVO> stationInfos = pileStationInfoService.NXJTQueryStationsInfo(dto);
|
||||||
|
PageInfo<NXJTStationInfoVO> pageInfo = new PageInfo<>(stationInfos);
|
||||||
|
|
||||||
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
|
map.put("pageNo", pageInfo.getPageNum());
|
||||||
|
map.put("pageCount", pageInfo.getPages());
|
||||||
|
map.put("itemSize", pageInfo.getList().size());
|
||||||
|
map.put("stationInfos", pageInfo.getList());
|
||||||
|
|
||||||
|
// 加密
|
||||||
|
Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMapV2(map, thirdPartySecretInfoVO.getOurDataSecret(),
|
||||||
|
thirdPartySecretInfoVO.getOurDataSecretIv(), thirdPartySecretInfoVO.getTheirSigSecret());
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询充电站中空闲桩数量
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, String> queryFreePileNumber(NXJTQueryStationInfoDTO dto) {
|
||||||
|
ThirdPartySecretInfoVO thirdPartySecretInfoVO = getNingXiaJiaoTouSecretInfo();
|
||||||
|
|
||||||
|
long stationId = Long.parseLong(dto.getStationId());
|
||||||
|
List<ConnectorInfoVO> connectorList = pileConnectorInfoService.getUniAppConnectorList(stationId);
|
||||||
|
// 先根据pileSn分组,获取设备总数
|
||||||
|
List<String> pileSnList = connectorList.stream()
|
||||||
|
.map(ConnectorInfoVO::getPileSn)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 根据枪口编号批量查询枪口状态
|
||||||
|
Map<String, Integer> pileTypeNum = pileConnectorInfoService.getPileTypeNum(stationId);
|
||||||
|
// Integer fastTotal = pileTypeNum.get("fastTotal");// 快充总数
|
||||||
|
Integer fastFree = pileTypeNum.get("fastFree"); // 快充空闲
|
||||||
|
// Integer slowTotal = pileTypeNum.get("slowTotal");// 慢充总数
|
||||||
|
Integer slowFree = pileTypeNum.get("slowFree");// 慢充空闲
|
||||||
|
|
||||||
|
int freePileNumber = fastFree + slowFree; // 总空闲数量 = 快充空闲 + 慢充空闲
|
||||||
|
int pileNumber = pileSnList.size(); // 总设备数 就是桩号集合的长度
|
||||||
|
|
||||||
|
// 拼装参数
|
||||||
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
|
map.put("pileNum", pileNumber);
|
||||||
|
map.put("freePileNum", freePileNumber);
|
||||||
|
|
||||||
|
// 加密
|
||||||
|
Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMapV2(map, thirdPartySecretInfoVO.getOurDataSecret(),
|
||||||
|
thirdPartySecretInfoVO.getOurDataSecretIv(), thirdPartySecretInfoVO.getTheirSigSecret());
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单信息
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, String> queryOrdersInfoByPlateNumber(NXJTQueryOrdersInfoDTO dto) {
|
||||||
|
List<NXJTOrderVO> resultList = new ArrayList<>();
|
||||||
|
int pageNo = dto.getPageNo() == null ? 1 : dto.getPageNo();
|
||||||
|
int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize();
|
||||||
|
|
||||||
|
ThirdPartySecretInfoVO thirdPartySecretInfoVO = getNingXiaJiaoTouSecretInfo();
|
||||||
|
|
||||||
|
// 如果开始时间、结束时间为空,则默认为一个月内
|
||||||
|
if (StringUtils.isBlank(dto.getStartTime()) && StringUtils.isBlank(dto.getEndTime())) {
|
||||||
|
dto.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.addMonths(new Date(), -1)));
|
||||||
|
dto.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()));
|
||||||
|
}
|
||||||
|
// 分页
|
||||||
|
PageUtils.startPage(pageNo, pageSize);
|
||||||
|
// 根据车牌号查询消费情况
|
||||||
|
List<OrderVO> orderVOList = orderBasicInfoService.getOrderInfoByNXJT(dto);
|
||||||
|
PageInfo<OrderVO> pageInfo = new PageInfo<>(orderVOList);
|
||||||
|
List<OrderVO> list = pageInfo.getList();
|
||||||
|
NXJTOrderVO vo;
|
||||||
|
for (OrderVO orderVO : list) {
|
||||||
|
// 拼装成对接平台所需格式
|
||||||
|
vo = new NXJTOrderVO();
|
||||||
|
vo.setLicensePlateNumber(orderVO.getLicensePlateNumber());
|
||||||
|
vo.setOrderAmount(orderVO.getOrderAmount());
|
||||||
|
vo.setChargeTime(orderVO.getStartTime());
|
||||||
|
vo.setStationName(orderVO.getStationName());
|
||||||
|
vo.setLicensePlateNumberColor(1);
|
||||||
|
|
||||||
|
resultList.add(vo);
|
||||||
|
}
|
||||||
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
|
map.put("pageNo", pageInfo.getPageNum());
|
||||||
|
map.put("pageCount", pageInfo.getPages());
|
||||||
|
map.put("itemSize", resultList.size());
|
||||||
|
map.put("orderInfos", resultList);
|
||||||
|
|
||||||
|
// 加密
|
||||||
|
Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMapV2(map, thirdPartySecretInfoVO.getOurDataSecret(),
|
||||||
|
thirdPartySecretInfoVO.getOurDataSecretIv(), thirdPartySecretInfoVO.getTheirSigSecret());
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询指定时间内的订单信息
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, String> queryOrdersInfo(NXJTQueryOrdersInfoDTO dto) {
|
||||||
|
// 由于调用的查询方法、拼装的参数均相同,因此直接调用上面方法
|
||||||
|
// 两个方法仅入参不同
|
||||||
|
return queryOrdersInfoByPlateNumber(dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取宁夏交投平台密钥信息
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private ThirdPartySecretInfoVO getNingXiaJiaoTouSecretInfo() {
|
||||||
|
ThirdPartySecretInfoVO thirdPartySecretInfoVO = thirdpartySecretInfoService.queryByThirdPlatformType(thirdPlatformType);
|
||||||
|
if (thirdPartySecretInfoVO == null) {
|
||||||
|
throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL);
|
||||||
|
}
|
||||||
|
thirdPartySecretInfoVO.setOurOperatorId(Constants.OPERATORID_JIANG_SU);
|
||||||
|
return thirdPartySecretInfoVO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user