|
@@ -1,23 +1,26 @@
|
|
|
package com.kym.service.platform.impl;
|
|
package com.kym.service.platform.impl;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.extra.mail.MailUtil;
|
|
import cn.hutool.extra.mail.MailUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
+import com.kym.common.utils.CommUtil;
|
|
|
import com.kym.common.utils.PlatformConvertUtil;
|
|
import com.kym.common.utils.PlatformConvertUtil;
|
|
|
import com.kym.entity.admin.ConnectorInfo;
|
|
import com.kym.entity.admin.ConnectorInfo;
|
|
|
import com.kym.entity.admin.EquipmentInfo;
|
|
import com.kym.entity.admin.EquipmentInfo;
|
|
|
import com.kym.entity.admin.MonitorLog;
|
|
import com.kym.entity.admin.MonitorLog;
|
|
|
import com.kym.entity.common.RedisKeys;
|
|
import com.kym.entity.common.RedisKeys;
|
|
|
-import com.kym.entity.platform.PlatformConnectorStatusInfo;
|
|
|
|
|
import com.kym.entity.miniapp.Account;
|
|
import com.kym.entity.miniapp.Account;
|
|
|
import com.kym.entity.miniapp.ChargeOrder;
|
|
import com.kym.entity.miniapp.ChargeOrder;
|
|
|
import com.kym.entity.miniapp.WalletDetail;
|
|
import com.kym.entity.miniapp.WalletDetail;
|
|
|
|
|
+import com.kym.entity.platform.PlatformConnectorStatusInfo;
|
|
|
import com.kym.service.admin.ConnectorInfoService;
|
|
import com.kym.service.admin.ConnectorInfoService;
|
|
|
import com.kym.service.admin.EquipmentInfoService;
|
|
import com.kym.service.admin.EquipmentInfoService;
|
|
|
import com.kym.service.admin.MonitorLogService;
|
|
import com.kym.service.admin.MonitorLogService;
|
|
|
import com.kym.service.cache.KymCache;
|
|
import com.kym.service.cache.KymCache;
|
|
|
|
|
+import com.kym.service.cache.PlatformCache;
|
|
|
import com.kym.service.factory.DiscountStrategyFactory;
|
|
import com.kym.service.factory.DiscountStrategyFactory;
|
|
|
import com.kym.service.miniapp.*;
|
|
import com.kym.service.miniapp.*;
|
|
|
import com.kym.service.platform.PlatformApiService;
|
|
import com.kym.service.platform.PlatformApiService;
|
|
@@ -34,6 +37,7 @@ import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -42,8 +46,8 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
-public class PlatformNotifySServiceImpl implements PlatformNotifyService {
|
|
|
|
|
- private static final Logger LOGGER = LoggerFactory.getLogger(PlatformNotifySServiceImpl.class);
|
|
|
|
|
|
|
+public class PlatformNotifyServiceImpl implements PlatformNotifyService {
|
|
|
|
|
+ private static final Logger LOGGER = LoggerFactory.getLogger(PlatformNotifyServiceImpl.class);
|
|
|
public final StringRedisTemplate redisTemplate;
|
|
public final StringRedisTemplate redisTemplate;
|
|
|
private final PlatformApiService enPlusService;
|
|
private final PlatformApiService enPlusService;
|
|
|
private final ChargeOrderService chargeOrderService;
|
|
private final ChargeOrderService chargeOrderService;
|
|
@@ -58,10 +62,10 @@ public class PlatformNotifySServiceImpl implements PlatformNotifyService {
|
|
|
@Value("${kym.notify-email}")
|
|
@Value("${kym.notify-email}")
|
|
|
private String notifyEmail;
|
|
private String notifyEmail;
|
|
|
|
|
|
|
|
- public PlatformNotifySServiceImpl(PlatformApiService enPlusService, ChargeOrderService chargeOrderService,
|
|
|
|
|
- ChargeService chargeService, AccountService accountService, WalletDetailService walletDetailService,
|
|
|
|
|
- MonitorLogService monitorLogService, EquipmentInfoService equipmentInfoService,
|
|
|
|
|
- ConnectorInfoService connectorInfoService, StringRedisTemplate redisTemplate, UserStationService userStationService) {
|
|
|
|
|
|
|
+ public PlatformNotifyServiceImpl(PlatformApiService enPlusService, ChargeOrderService chargeOrderService,
|
|
|
|
|
+ ChargeService chargeService, AccountService accountService, WalletDetailService walletDetailService,
|
|
|
|
|
+ MonitorLogService monitorLogService, EquipmentInfoService equipmentInfoService,
|
|
|
|
|
+ ConnectorInfoService connectorInfoService, StringRedisTemplate redisTemplate, UserStationService userStationService) {
|
|
|
this.enPlusService = enPlusService;
|
|
this.enPlusService = enPlusService;
|
|
|
this.chargeOrderService = chargeOrderService;
|
|
this.chargeOrderService = chargeOrderService;
|
|
|
this.chargeService = chargeService;
|
|
this.chargeService = chargeService;
|
|
@@ -79,6 +83,30 @@ public class PlatformNotifySServiceImpl implements PlatformNotifyService {
|
|
|
KymCache.INSTANCE.putConnectorId2Status(connectorInfoService.list().stream().collect(Collectors.toMap(ConnectorInfo::getConnectorId, ConnectorInfo::getStatus)));
|
|
KymCache.INSTANCE.putConnectorId2Status(connectorInfoService.list().stream().collect(Collectors.toMap(ConnectorInfo::getConnectorId, ConnectorInfo::getStatus)));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String queryToken(String platformName) {
|
|
|
|
|
+ var platform = PlatformCache.INSTANCE.getPlatformByName(platformName);
|
|
|
|
|
+ // 查询缓存,存在则返回值和过期时间,不存在则重新生成并缓存
|
|
|
|
|
+ var token = redisTemplate.opsForValue().get(RedisKeys.PLATFORM_TOKEN + platformName);
|
|
|
|
|
+ // 过期时间
|
|
|
|
|
+ var ttl = redisTemplate.getExpire(RedisKeys.PLATFORM_TOKEN + platformName);
|
|
|
|
|
+ if (CommUtil.isEmptyOrNull(token)) {
|
|
|
|
|
+ token = IdUtil.simpleUUID();
|
|
|
|
|
+ ttl = 7 * 24 * 3600L;
|
|
|
|
|
+ redisTemplate.opsForValue().set(RedisKeys.PLATFORM_TOKEN + platformName, token, ttl, TimeUnit.SECONDS);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return """
|
|
|
|
|
+ {
|
|
|
|
|
+ "OperatorID":"%s",
|
|
|
|
|
+ "SuccStat":%d,
|
|
|
|
|
+ "AccessToken":"%s",
|
|
|
|
|
+ "TokenAvailableTime":%d,
|
|
|
|
|
+ "FailReason":%d
|
|
|
|
|
+ }
|
|
|
|
|
+ """.formatted(platform.getOperatorId(), 0, token, ttl, 0);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* EN+ 充电站设备状态变化推送
|
|
* EN+ 充电站设备状态变化推送
|
|
|
*
|
|
*
|
|
@@ -155,6 +183,7 @@ public class PlatformNotifySServiceImpl implements PlatformNotifyService {
|
|
|
""".formatted(0);
|
|
""".formatted(0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* EN+ 推送启动充电结果
|
|
* EN+ 推送启动充电结果
|
|
|
*
|
|
*
|