diff --git a/src/main/java/com/loadcenter/controller/GatewayVehicleController.java b/src/main/java/com/loadcenter/controller/GatewayVehicleController.java new file mode 100644 index 0000000..1c3f0e0 --- /dev/null +++ b/src/main/java/com/loadcenter/controller/GatewayVehicleController.java @@ -0,0 +1,39 @@ +package com.loadcenter.controller; + +import com.loadcenter.common.domain.resp.Result; +import com.loadcenter.service.GatewayVehicleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 车辆上下线控制层 @JangC + */ +@RestController +@RequestMapping("/vehicle") +public class GatewayVehicleController { + /** + * 注入车辆上下线业务层 + */ + @Autowired + private GatewayVehicleService gatewayVehicleService; + + /** + * 车辆上线 + */ + @GetMapping("/load/onLine/{vin}") + public Result onLine(@PathVariable String vin) { + return gatewayVehicleService.onLine(vin); + } + + /** + * 车辆下线 + * @param vin + */ + @GetMapping("/load/downLine/{vin}") + public void downLine(@PathVariable String vin){ + gatewayVehicleService.downLine(vin); + } +} diff --git a/src/main/java/com/loadcenter/gateway/cache/GatewayNodeSetVinCache.java b/src/main/java/com/loadcenter/gateway/cache/GatewayNodeSetVinCache.java index a8b7b3a..7fab4a0 100644 --- a/src/main/java/com/loadcenter/gateway/cache/GatewayNodeSetVinCache.java +++ b/src/main/java/com/loadcenter/gateway/cache/GatewayNodeSetVinCache.java @@ -28,6 +28,11 @@ public class GatewayNodeSetVinCache extends GatewayCacheAbs { redisService.setCacheSet(encode(gatewayNodeSetVinCache)+node,vin); } + /** + * 删除节点对应的vin + * @param nodeId + * @param vin + */ public void remove(String nodeId,String vin){ redisService.deleteCacheSet(encode(gatewayNodeSetVinCache)+nodeId,vin); } diff --git a/src/main/java/com/loadcenter/gateway/cache/GatewayVehicleNode.java b/src/main/java/com/loadcenter/gateway/cache/GatewayVehicleNode.java index a988b4b..1794b29 100644 --- a/src/main/java/com/loadcenter/gateway/cache/GatewayVehicleNode.java +++ b/src/main/java/com/loadcenter/gateway/cache/GatewayVehicleNode.java @@ -36,7 +36,7 @@ public class GatewayVehicleNode extends GatewayCacheAbs { } /** - * 获取车辆 + * 获取车辆 nodeId * @param vin * @return */ diff --git a/src/main/java/com/loadcenter/service/GatewayVehicleService.java b/src/main/java/com/loadcenter/service/GatewayVehicleService.java new file mode 100644 index 0000000..9b4aa8b --- /dev/null +++ b/src/main/java/com/loadcenter/service/GatewayVehicleService.java @@ -0,0 +1,9 @@ +package com.loadcenter.service; + +import com.loadcenter.common.domain.resp.Result; + +public interface GatewayVehicleService { + Result onLine(String vin); + + void downLine(String vin); +} diff --git a/src/main/java/com/loadcenter/service/impl/GatewayVehicleServiceImpl.java b/src/main/java/com/loadcenter/service/impl/GatewayVehicleServiceImpl.java new file mode 100644 index 0000000..d930af7 --- /dev/null +++ b/src/main/java/com/loadcenter/service/impl/GatewayVehicleServiceImpl.java @@ -0,0 +1,53 @@ +package com.loadcenter.service.impl; + +import com.loadcenter.common.domain.resp.Result; +import com.loadcenter.gateway.cache.GatewayNodeSetVinCache; +import com.loadcenter.gateway.cache.GatewayVehicleNode; +import com.loadcenter.service.GatewayVehicleService; +import lombok.AllArgsConstructor; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +@AllArgsConstructor +@Log4j2 +public class GatewayVehicleServiceImpl implements GatewayVehicleService { + + private final GatewayNodeSetVinCache gatewayNodeSetVinCache; + + + private final GatewayVehicleNode gatewayVehicleNode; + + @Autowired + private RestTemplate restTemplate; + + /** + * 车辆上线 + * @param vin + * @return + */ + @Override + public Result onLine(String vin) { + String URL ="http://127.0.0.1:9010/gateway/load/node"; + + Result data = restTemplate.getForObject(URL, Result.class); + + gatewayVehicleNode.put(vin,data.getData().toString()); + gatewayNodeSetVinCache.put(data.getData().toString(),vin); + + return Result.success(data.getData().toString()); + } + + /** + * 车辆下线 + * @param vin + */ + @Override + public void downLine(String vin) { + String nodeId = gatewayVehicleNode.get(vin); + gatewayNodeSetVinCache.remove(nodeId,vin); + gatewayVehicleNode.remove(vin); + } +}