ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SecurityDetectionFallbackFactory.java
New file @@ -0,0 +1,29 @@ package com.ruoyi.integration.api.factory; import com.ruoyi.integration.api.feignClient.SecurityDetectionClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.model.PlatformStartCharging; import com.ruoyi.integration.api.model.PlatformStopCharging; import com.ruoyi.integration.api.model.QrCodeDelivery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; /** * 充电桩服务降级处理 * * @author ruoyi */ @Component public class SecurityDetectionFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<SecurityDetectionClient> { private static final Logger log = LoggerFactory.getLogger(SecurityDetectionFallbackFactory.class); @Override public SecurityDetectionClient create(Throwable throwable) { log.error("调用失败:{}", throwable.getMessage()); return new SecurityDetectionClient() { }; } } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
@@ -6,6 +6,7 @@ import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.integration.api.model.PlatformStartCharging; import com.ruoyi.integration.api.model.PlatformStopCharging; import com.ruoyi.integration.api.model.QrCodeDelivery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -36,6 +37,11 @@ public String platformStopCharging(PlatformStopCharging platformStopCharging) { return "远程停机失败"; } @Override public String qrCodeDelivery(QrCodeDelivery qrCodeDelivery) { return "二维码下发失败"; } }; } } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SecurityDetectionClient.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.integration.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.integration.api.factory.SecurityDetectionFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; /** * @author zhibing.pu * @Date 2024/10/8 14:23 */ @FeignClient(contextId = "SecurityDetectionClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = SecurityDetectionFallbackFactory.class) public interface SecurityDetectionClient { } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
@@ -4,6 +4,7 @@ import com.ruoyi.integration.api.factory.SendMessageFallbackFactory; import com.ruoyi.integration.api.model.PlatformStartCharging; import com.ruoyi.integration.api.model.PlatformStopCharging; import com.ruoyi.integration.api.model.QrCodeDelivery; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -32,4 +33,13 @@ */ @PostMapping("/sendMessage/platformStopCharging") String platformStopCharging(@RequestBody PlatformStopCharging platformStopCharging); /** * 二维码下发 * @param qrCodeDelivery * @return */ @PostMapping("/sendMessage/qrCodeDelivery") String qrCodeDelivery(@RequestBody QrCodeDelivery qrCodeDelivery); } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
@@ -15,7 +15,6 @@ @Document(collection = "platform_start_charging_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformStartChargingReply extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SecurityDetection.java
@@ -9,8 +9,7 @@ @Document(collection = "security_detection") //指定要对应的文档名(表名) @Accessors(chain = true) public class SecurityDetection { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 private Integer secure_connection; // 车枪连接(0=未连接,1=连接) ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -6,3 +6,4 @@ com.ruoyi.integration.api.factory.PlatformStopChargingReplyFallbackFactory com.ruoyi.integration.api.factory.SwitchwayGateFallbackFactory com.ruoyi.integration.api.factory.IotInterfaceFallbackFactory com.ruoyi.integration.api.factory.SecurityDetectionFallbackFactory ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -30,7 +30,7 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; //import org.springframework.mock.web.MockMultipartFile; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -19,6 +19,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; @@ -60,6 +62,9 @@ @Resource private SysUserRoleClient sysUserRoleClient; @Resource private SendMessageClient sendMessageClient; @@ -116,8 +121,17 @@ return AjaxResult.error("接口编码已存在"); } this.save(dto); //下发硬件充电二维码 TChargingPile chargingPile = chargingPileService.getById(dto.getChargingPileId()); //下发硬件充电二维码 String code_prefix = "https://mxcd.zhinenganguan.com?No="; QrCodeDelivery qrCodeDelivery = new QrCodeDelivery(); qrCodeDelivery.setCharging_pile_code(chargingPile.getCode()); qrCodeDelivery.setCode_format(1); qrCodeDelivery.setPrefix_length(code_prefix.length()); qrCodeDelivery.setCode_prefix(code_prefix); qrCodeDelivery.setQr_code(code_prefix + chargingPile.getCode() + dto.getCode()); sendMessageClient.qrCodeDelivery(qrCodeDelivery); return AjaxResult.success(); } @@ -143,8 +157,17 @@ return AjaxResult.error("接口编码已存在"); } this.updateById(dto); //下发硬件充电二维码 TChargingPile chargingPile = chargingPileService.getById(dto.getChargingPileId()); //下发硬件充电二维码 String code_prefix = "https://mxcd.zhinenganguan.com?No="; QrCodeDelivery qrCodeDelivery = new QrCodeDelivery(); qrCodeDelivery.setCharging_pile_code(chargingPile.getCode()); qrCodeDelivery.setCode_format(1); qrCodeDelivery.setPrefix_length(code_prefix.length()); qrCodeDelivery.setCode_prefix(code_prefix); qrCodeDelivery.setQr_code(code_prefix + chargingPile.getCode() + dto.getCode()); sendMessageClient.qrCodeDelivery(qrCodeDelivery); return AjaxResult.success(); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/SecurityDetectionController.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.integration.controller; import com.ruoyi.integration.mongodb.service.SecurityDetectionService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * @author zhibing.pu * @Date 2024/10/8 14:25 */ @RestController @RequestMapping("/securityDetection") public class SecurityDetectionController { @Resource private SecurityDetectionService securityDetectionService; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/SecurityDetectionService.java
@@ -8,4 +8,11 @@ */ public interface SecurityDetectionService extends BaseService<SecurityDetection> { /** * 根据业务流水号查询数据 * @param transactionSerialNumber * @return */ SecurityDetection getSecurityDetection(String transactionSerialNumber); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/SecurityDetectionServiceImpl.java
@@ -33,4 +33,14 @@ public List<SecurityDetection> findAll() { return mongoTemplate.findAll(SecurityDetection.class); } /** * 根据业务流水号查询数据 * @param transactionSerialNumber * @return */ @Override public SecurityDetection getSecurityDetection(String transactionSerialNumber) { return null; } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -650,6 +650,9 @@ //执行5分钟的定时任务检测 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(()->{ //获取安全校验 List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); System.err.println("-------------------开始检查调起充电结果-------------------"); System.err.println(data.toString());