diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java
index 6569077c8..65ebb3ae7 100644
--- a/jsowell-admin/src/test/java/SpringBootTestController.java
+++ b/jsowell-admin/src/test/java/SpringBootTestController.java
@@ -252,6 +252,22 @@ public class SpringBootTestController {
@Autowired
private NotificationService notificationService;
+ @Test
+ public void getSnowflakeIdTest() {
+ for (int i = 0; i < 100; i++) {
+ String snowflakeId = SnowflakeIdWorker.getSnowflakeId();
+ System.out.println("第" + i + "个snowflakeId:" + snowflakeId);
+ }
+ }
+
+ @Test
+ public void getOrderCodeTest() {
+ for (int i = 0; i < 10; i++) {
+ String orderCode = IdUtils.getOrderCode();
+ System.out.println("第" + i + 1 + "个orderCode:" + orderCode);
+ }
+ }
+
@Test
public void notificationStationInfoTest() {
String stationId = "19";
diff --git a/jsowell-pile/pom.xml b/jsowell-pile/pom.xml
index 4f11ef583..19a6c047c 100644
--- a/jsowell-pile/pom.xml
+++ b/jsowell-pile/pom.xml
@@ -108,6 +108,16 @@
1.0.0
+
+ com.alipay.sdk
+ alipay-sdk-java
+
+
+
+ com.alipay.sdk
+ alipay-easysdk
+
+
diff --git a/jsowell-pile/src/main/java/com/jsowell/alipay/AliAppletRemoteService.java b/jsowell-pile/src/main/java/com/jsowell/alipay/AliAppletRemoteService.java
index ef169c9c7..4e5cf466f 100644
--- a/jsowell-pile/src/main/java/com/jsowell/alipay/AliAppletRemoteService.java
+++ b/jsowell-pile/src/main/java/com/jsowell/alipay/AliAppletRemoteService.java
@@ -1,29 +1,42 @@
package com.jsowell.alipay;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.StringUtils;
+import com.jsowell.wxpay.service.WxAppletRemoteService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* 支付宝小程序service
*/
@Service
public class AliAppletRemoteService {
- // private static AlipayConfig getAlipayConfig() {
- // String privateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
- // String alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->";
- // AlipayConfig alipayConfig = new AlipayConfig();
- // alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
- // alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
- // alipayConfig.setPrivateKey(privateKey);
- // alipayConfig.setFormat("json");
- // alipayConfig.setAlipayPublicKey(alipayPublicKey);
- // alipayConfig.setCharset("UTF-8");
- // alipayConfig.setSignType("RSA2");
- // return alipayConfig;
- // }
+ private Logger log = LoggerFactory.getLogger(AliAppletRemoteService.class);
+
+ private static AlipayConfig getAlipayConfig() {
+ String privateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
+ String alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->";
+ AlipayConfig alipayConfig = new AlipayConfig();
+ alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+ alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
+ alipayConfig.setPrivateKey(privateKey);
+ alipayConfig.setFormat("json");
+ alipayConfig.setAlipayPublicKey(alipayPublicKey);
+ alipayConfig.setCharset("UTF-8");
+ alipayConfig.setSignType("RSA2");
+ return alipayConfig;
+ }
/**
* 服务端获取 access_token、user_id
@@ -37,4 +50,7 @@ public class AliAppletRemoteService {
return null;
}
+
+
+
}
diff --git a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java
index 0bddd2f41..e2b45596d 100644
--- a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java
+++ b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java
@@ -2,6 +2,7 @@ package com.jsowell.thirdparty.service.impl;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.core.redis.RedisCache;
+import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.DateUtils;
import com.jsowell.pile.mapper.ThirdPartyStationRelationMapper;
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
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 4240d34aa..47b5a4682 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
@@ -8,6 +8,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
+import com.jsowell.common.enums.lianlian.StationPaymentEnum;
import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum;
import com.jsowell.common.enums.thirdparty.ThirdPartyOperatorIdEnum;
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
@@ -19,10 +20,7 @@ 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.OrderBasicInfo;
-import com.jsowell.pile.domain.OrderDetail;
-import com.jsowell.pile.domain.ThirdPartyPlatformConfig;
-import com.jsowell.pile.domain.ThirdPartyStationRelation;
+import com.jsowell.pile.domain.*;
import com.jsowell.pile.dto.PushRealTimeInfoDTO;
import com.jsowell.pile.dto.QueryEquipChargeStatusDTO;
import com.jsowell.pile.dto.QueryOperatorInfoDTO;
@@ -44,6 +42,7 @@ import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo;
import com.jsowell.thirdparty.lianlian.domain.StationStatusInfo;
import com.jsowell.thirdparty.lianlian.vo.AccessTokenVO;
import com.jsowell.thirdparty.lianlian.vo.QueryChargingStatusVO;
+import com.jsowell.thirdparty.platform.common.StationInfo;
import com.jsowell.thirdparty.platform.domain.*;
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory;
@@ -780,4 +779,124 @@ public class NinaXiaPlatformServiceImpl implements ThirdPartyPlatformService {
}
+ /**
+ * 充电站信息变化推送 notification_stationInfo
+ * 新站需要推送。当站点信息发生变化时,推送新的信息通知到市级平台
+ *
+ * @param stationId 充电站id
+ * @throws UnsupportedOperationException 未实现异常
+ */
+ @Override
+ public String notificationStationInfo(String stationId) {
+ // 通过id查询站点相关信息
+ PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(Long.parseLong(stationId));
+
+ // 查询第三方平台配置信息
+ ThirdPartySecretInfoVO thirdPartySecretInfoVO = thirdpartySecretInfoService.queryByThirdPlatformType(thirdPlatformType);
+ if (thirdPartySecretInfoVO == null) {
+ throw new BusinessException("", "无此平台配置信息");
+ }
+ String operatorId = thirdPartySecretInfoVO.getOurOperatorId();
+ String operatorSecret = thirdPartySecretInfoVO.getTheirOperatorSecret();
+ String signSecret = thirdPartySecretInfoVO.getTheirSigSecret();
+ String dataSecret = thirdPartySecretInfoVO.getTheirDataSecret();
+ String dataSecretIv = thirdPartySecretInfoVO.getTheirDataSecretIv();
+ String urlAddress = thirdPartySecretInfoVO.getTheirUrlPrefix();
+
+ // 组装联联平台所需要的数据格式
+ StationInfo info = StationInfo.builder()
+ .stationID(stationId)
+ .operatorID(operatorId)
+ .stationName(pileStationInfo.getStationName())
+ .isAloneApply(Integer.valueOf(pileStationInfo.getAloneApply()))
+ .isPublicParkingLot(Integer.valueOf(pileStationInfo.getPublicParking()))
+ .countryCode(pileStationInfo.getCountryCode())
+ .address(pileStationInfo.getAddress())
+ .serviceTel(pileStationInfo.getStationTel())
+ .stationType(Integer.valueOf(pileStationInfo.getStationType()))
+ .stationStatus(Integer.valueOf(pileStationInfo.getStationStatus()))
+ .parkNums(Integer.valueOf(pileStationInfo.getParkNums()))
+ .stationLng(new BigDecimal(pileStationInfo.getStationLng()))
+ .stationLat(new BigDecimal(pileStationInfo.getStationLat()))
+ .construction(Integer.valueOf(pileStationInfo.getConstruction()))
+ .openAllDay(Integer.valueOf(pileStationInfo.getOpenAllDay()))
+ .minElectricityPrice(new BigDecimal(Constants.ZERO))
+ .electricityFee(Constants.ZERO)
+ .serviceFee(Constants.ZERO)
+ .parkFree(Integer.valueOf(pileStationInfo.getParkFree()))
+ .supportOrder(Integer.valueOf(pileStationInfo.getSupportOrder()))
+ .parkFeeType(0)
+ .toiletFlag(Integer.valueOf(pileStationInfo.getToiletFlag()))
+ .storeFlag(Integer.valueOf(pileStationInfo.getStoreFlag()))
+ .restaurantFlag(Integer.valueOf(pileStationInfo.getRestaurantFlag()))
+ .loungeFlag(Integer.valueOf(pileStationInfo.getLoungeFlag()))
+ .canopyFlag(Integer.valueOf(pileStationInfo.getCanopyFlag()))
+ .printerFlag(Integer.valueOf(pileStationInfo.getPrinterFlag()))
+ .barrierFlag(Integer.valueOf(pileStationInfo.getBarrierFlag()))
+ .parkingLockFlag(Integer.valueOf(pileStationInfo.getParkingLockFlag()))
+ .build();
+ String areaCode = pileStationInfo.getAreaCode(); // 330000,330200,330213
+ // 根据逗号分组
+ String[] split = StringUtils.split(areaCode, ",");
+ // 只取最后一部分 330213
+ String subAreaCode = split[split.length - 1];
+ info.setAreaCode(subAreaCode);
+ // 截取运营商组织机构代码(去除最后一位后的最后九位)
+ String organizationCode = "";
+ if (StringUtils.equals(ThirdPlatformTypeEnum.LIAN_LIAN_PLATFORM.getTypeCode(), thirdPlatformType)) {
+ // 联联平台先使用自己运营商的组织机构代码
+ organizationCode = Constants.OPERATORID_LIANLIAN;
+ info.setEquipmentOwnerID(organizationCode);
+ } else {
+ MerchantInfoVO merchantInfo = pileMerchantInfoService.getMerchantInfoVO(String.valueOf(pileStationInfo.getMerchantId()));
+ organizationCode = merchantInfo.getOrganizationCode();
+ if (StringUtils.isNotBlank(organizationCode) && organizationCode.length() == 18) {
+ String equipmentOwnerId = StringUtils.substring(organizationCode, organizationCode.length() - 10, organizationCode.length() - 1);
+ info.setEquipmentOwnerID(equipmentOwnerId);
+ }
+ }
+ if (StringUtils.equals("36", String.valueOf(pileStationInfo.getMerchantId()))) {
+ // 远大
+ info.setEquipmentOwnerID(Constants.OPERATORID_YUAN_DA);
+ }
+ if (MerchantUtils.isXiXiaoMerchant(String.valueOf(pileStationInfo.getMerchantId()))) {
+ // 如果是希晓运营商,则把equipmentOwnerID换成希晓
+ info.setEquipmentOwnerID(Constants.OPERATORID_XI_XIAO);
+ }
+ String payment = StationPaymentEnum.getPaymentByCode(pileStationInfo.getPayment());
+ info.setPayment(payment);
+ if (StringUtils.isNotBlank(pileStationInfo.getParkingNumber())) {
+ info.setIsPublicParkingLot(1);
+ info.setParkingLotNumber(pileStationInfo.getParkingNumber());
+ }
+ // 户号
+ if (StringUtils.isNotBlank(pileStationInfo.getAccountNumber())) {
+ info.setAccountNumber(pileStationInfo.getAccountNumber());
+ }
+
+ // 容量
+ if (StringUtils.isNotBlank(String.valueOf(pileStationInfo.getCapacity()))) {
+ info.setCapacity(pileStationInfo.getCapacity().setScale(4, BigDecimal.ROUND_HALF_UP));
+ }
+ List pileList = pileBasicInfoService.getPileListForLianLian(stationId);
+ if (CollectionUtils.isNotEmpty(pileList)) {
+ info.setEquipmentInfos(pileList); // 充电设备信息列表
+ }
+
+ // 调用联联平台接口
+ String url = urlAddress + "supervise_notification_station_info";
+
+ String jsonStr = JSON.toJSONString(info);
+ JSONObject data = new JSONObject();
+ data.put("StationInfo", jsonStr);
+
+ String jsonString = JSON.toJSONString(data);
+
+ // 获取令牌
+ String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret);
+ String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret
+ , dataSecretIv, operatorId, signSecret);
+
+ return result;
+ }
}
diff --git a/pom.xml b/pom.xml
index 2f9327ade..dd2d19444 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,6 +38,9 @@
1.2.5
1.2.5
1.2.10
+ 4.39.79.ALL
+ 2.2.3
+ 3.1.87
@@ -235,11 +238,28 @@
${mqttv3.version}
+
com.tencentcloudapi
tencentcloud-sdk-java
- 3.1.87
+ ${tencent.sdk.version}
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ ${alipai.sdk.version}
+
+
+
+
+ com.alipay.sdk
+ alipay-easysdk
+ ${alipai.easysdk.version}
+
+
+
com.github.qcloudsms
qcloudsms