ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.integration.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.integration.api.model.PlatformStartCharging; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; /** * 充电桩服务降级处理 * * @author ruoyi */ @Component public class SendMessageFallbackFactory implements FallbackFactory<SendMessageClient> { private static final Logger log = LoggerFactory.getLogger(SendMessageFallbackFactory.class); @Override public SendMessageClient create(Throwable throwable) { log.error("发送充电桩消息失败:{}", throwable.getMessage()); return new SendMessageClient() { @Override public void platformStartCharging(PlatformStartCharging platformStartCharging) { } }; } } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.integration.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.integration.api.factory.SendMessageFallbackFactory; import com.ruoyi.integration.api.model.EndCharge; import com.ruoyi.integration.api.model.PlatformStartCharging; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; /** * @author zhibing.pu * @Date 2024/8/28 16:53 */ @FeignClient(contextId = "SendMessageClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = SendMessageFallbackFactory.class) public interface SendMessageClient { /** * 远程控制启动充电 * @param platformStartCharging * @return */ @PostMapping("/sendMessage/platformStartCharging") void platformStartCharging(@RequestBody PlatformStartCharging platformStartCharging); } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -15,6 +16,7 @@ @Accessors(chain = true) public class PlatformStartCharging extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderList.java
@@ -31,4 +31,10 @@ private BigDecimal payMoney; @ApiModelProperty("订单时间") private String createTime; @ApiModelProperty("评价状态(1=待评价,2=已评价)") private Integer evaluate; @ApiModelProperty("电费") private BigDecimal electricCharge; @ApiModelProperty("服务费") private BigDecimal serviceCharge; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -23,8 +23,10 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.integration.api.model.PlatformStartCharging; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; @@ -105,6 +107,9 @@ @Resource private ChargingHandshakeClient chargingHandshakeClient; @Resource private SendMessageClient sendMessageClient; @@ -137,7 +142,9 @@ myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); orderLists.add(myChargingOrderList); } list = this.baseMapper.getMyChargingOrderList(appUserId, query.getType(), null, null); map.put("list", orderLists); map.put("totle", list.size()); return map; } @@ -414,10 +421,25 @@ preChargeCheck.setSecureConnectionDetection(false); String key = "AQJC_" + chargingOrder.getChargingGunId(); redisService.setCacheObject(key, preChargeCheck); //开始检测充电桩状,将检查状态写入缓存。检测完成后开始开启充电 //充电结束后需要计算退款剩余金额 // todo 需要完善 //根据当前充值的金额和计费模板算出充电的金额 BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); //计算充电金额,会员需要将折扣金额加入到充电总金额中 // TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); // if(){ // appUser.getVipId() // } // // // //调用远程启动充电消息 // PlatformStartCharging platformStartCharging = new PlatformStartCharging(); // platformStartCharging.setTransaction_serial_number(chargingOrder.getCode()); // platformStartCharging.setCharging_pile_code(); // platformStartCharging.setCharging_gun_code(); // platformStartCharging.setCard_number(); // platformStartCharging.setAccount_balance() // sendMessageClient.platformStartCharging(platformStartCharging); return AjaxResult.success(); } @@ -484,11 +506,22 @@ chargingOrder.setEndMode(1); this.updateById(chargingOrder); //调用硬件停止充电,停止成功后开始计算费用退款 // todo 待完善 return AjaxResult.success(); } public void endCharge(){ } @Override public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) { TCharingOrderVO tCharingOrderVO = new TCharingOrderVO();