diff --git a/car-business-server/pom.xml b/car-business-server/pom.xml index e4d7791..a3124fb 100644 --- a/car-business-server/pom.xml +++ b/car-business-server/pom.xml @@ -23,6 +23,7 @@ car-business-common 3.6.3 + com.alibaba.cloud diff --git a/car-business-server/src/main/java/com/god/base/server/consumer/RabbitConsumer.java b/car-business-server/src/main/java/com/god/base/server/consumer/RabbitConsumer.java index 3a57e19..a3097a4 100644 --- a/car-business-server/src/main/java/com/god/base/server/consumer/RabbitConsumer.java +++ b/car-business-server/src/main/java/com/god/base/server/consumer/RabbitConsumer.java @@ -1,35 +1,35 @@ -package com.god.base.server.consumer; - -import lombok.extern.java.Log; -import lombok.extern.log4j.Log4j; -import lombok.extern.log4j.Log4j2; -import org.springframework.amqp.rabbit.annotation.Queue; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.amqp.rabbit.annotation.RabbitListeners; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Description: - * - * @Author: sun-cool-boy - * @Date: 2023/11/29 - * @info: - */ -@Component -@Log4j2 -public class RabbitConsumer { - - @RabbitListener(queuesToDeclare = {@Queue("OUT_FENCE")}) - public void one(String msg){ - log.info("监听到消息:{} , 队列名:{}",msg,"OUT_FENCE"); - System.out.println(msg); - } - - @RabbitListener(queuesToDeclare = {@Queue("IN_FENCE")}) - public void two(String msg){ - log.info("监听到消息:{} , 队列名:{}",msg,"IN_FENCE"); - System.out.println(msg); - } -} +//package com.god.base.server.consumer; +// +//import lombok.extern.java.Log; +//import lombok.extern.log4j.Log4j; +//import lombok.extern.log4j.Log4j2; +//import org.springframework.amqp.rabbit.annotation.Queue; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.amqp.rabbit.annotation.RabbitListeners; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +// +///** +// * Description: +// * +// * @Author: sun-cool-boy +// * @Date: 2023/11/29 +// * @info: +// */ +//@Component +//@Log4j2 +//public class RabbitConsumer { +// +// @RabbitListener(queuesToDeclare = {@Queue("OUT_FENCE")}) +// public void one(String msg){ +// log.info("监听到消息:{} , 队列名:{}",msg,"OUT_FENCE"); +// System.out.println(msg); +// } +// +// @RabbitListener(queuesToDeclare = {@Queue("IN_FENCE")}) +// public void two(String msg){ +// log.info("监听到消息:{} , 队列名:{}",msg,"IN_FENCE"); +// System.out.println(msg); +// } +//} diff --git a/car-business-server/src/main/java/com/god/base/server/controller/RealTimeTrajectoryController.java b/car-business-server/src/main/java/com/god/base/server/controller/RealTimeTrajectoryController.java new file mode 100644 index 0000000..cad952d --- /dev/null +++ b/car-business-server/src/main/java/com/god/base/server/controller/RealTimeTrajectoryController.java @@ -0,0 +1,46 @@ +package com.god.base.server.controller; + +import com.god.base.server.service.RealTimeTrajectoryServer; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import com.god.common.core.domain.Result; + +import javax.annotation.Resource; + +/** + * Description: + * + * @Author: sun-cool-boy + * @Date: 2023/11/30 + * @info: 车辆实时轨迹事件绑定或解绑 + */ +@RestController +public class RealTimeTrajectoryController { + + @Resource + private RealTimeTrajectoryServer realTimeTrajectoryServer; + + + /** + * 绑定实时轨迹事件 + * @param vin + * @return + */ + @GetMapping("/addTrajectoryEvent") + public Result addRealTimeTrajectoryEvent(@RequestParam String vin){ + return realTimeTrajectoryServer.addRealTimeTrajectoryEvent(vin); + } + + /** + * 解绑实时轨迹事件 + * @param vin + * @return + */ + @GetMapping("/delTrajectoryEvent") + public Result delRealTimeTrajectoryEvent(@RequestParam String vin){ + return realTimeTrajectoryServer.delRealTimeTrajectoryEvent(vin); + } +} diff --git a/car-business-server/src/main/java/com/god/base/server/service/RealTimeTrajectoryServer.java b/car-business-server/src/main/java/com/god/base/server/service/RealTimeTrajectoryServer.java new file mode 100644 index 0000000..e4d64dc --- /dev/null +++ b/car-business-server/src/main/java/com/god/base/server/service/RealTimeTrajectoryServer.java @@ -0,0 +1,30 @@ +package com.god.base.server.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.god.common.core.domain.Result; + +import javax.annotation.Resource; + +/** + * Description: + * + * @Author: sun-cool-boy + * @Date: 2023/11/30 + * @info: 实时轨迹业务类 + */ +public interface RealTimeTrajectoryServer { + + /** + * 为当前车辆绑定实时轨迹事件 + * @param vin + * @return + */ + public Result addRealTimeTrajectoryEvent(String vin); + + /** + * 为当前车辆绑定实时轨迹删除事件 + * @param vin + * @return + */ + public Result delRealTimeTrajectoryEvent(String vin); +} diff --git a/car-business-server/src/main/java/com/god/base/server/service/impl/RealTimeTrajectoryServerImpl.java b/car-business-server/src/main/java/com/god/base/server/service/impl/RealTimeTrajectoryServerImpl.java new file mode 100644 index 0000000..b7970d6 --- /dev/null +++ b/car-business-server/src/main/java/com/god/base/server/service/impl/RealTimeTrajectoryServerImpl.java @@ -0,0 +1,68 @@ +package com.god.base.server.service.impl; + +import com.god.common.core.domain.Result; +import com.god.common.redis.service.RedisService; +import com.god.base.server.service.RealTimeTrajectoryServer; +import io.swagger.v3.oas.annotations.servers.Server; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Service; + + +import javax.annotation.Resource; +import java.util.List; + + +/** + * Description: + * + * @Author: sun-cool-boy + * @Date: 2023/11/30 + * @info: 实时轨迹业务实现类 + */ +@Log4j2 +@Service +public class RealTimeTrajectoryServerImpl implements RealTimeTrajectoryServer{ + + public static final String EVENT = "event";//事件存储前缀 + public static final String REAL_TIME_TRAJECTORY = "RealTimeTrajectory";//实时轨迹事件 + + @Resource + private RedisService redisService; + + /** + * 为当前车辆绑定实时轨迹事件 + * @param vin + * @return + */ + @Override + public Result addRealTimeTrajectoryEvent(String vin) { + //拿到 vin对应的绑定事件 + List cacheList = redisService.getCacheList(EVENT + vin); + //类型转换成String + List list = cacheList + .stream() + .map(String::valueOf). + toList(); + //添加该事件 + list.add(REAL_TIME_TRAJECTORY); + //重新存入 + long l = redisService.setCacheList(EVENT + vin, cacheList); + return l > cacheList.size() ? Result.success():Result.error(); + } + + /** + * 删除当前车辆实时轨迹事件 + * @param vin + * @return + */ + @Override + public Result delRealTimeTrajectoryEvent(String vin) { + List list = redisService.getCacheList(EVENT + vin) + .stream() + .filter(obj -> !REAL_TIME_TRAJECTORY.equals(String.valueOf(obj))) + .map(String::valueOf) + .toList(); + long l = redisService.setCacheList(EVENT + vin, list); + return l > 0 ?Result.success():Result.error(); + } +} diff --git a/car-business-server/src/main/java/com/god/base/server/util/FenceAlgorithm.java b/car-business-server/src/main/java/com/god/base/server/util/FenceAlgorithm.java index 30c2608..e79e1ff 100644 --- a/car-business-server/src/main/java/com/god/base/server/util/FenceAlgorithm.java +++ b/car-business-server/src/main/java/com/god/base/server/util/FenceAlgorithm.java @@ -21,7 +21,7 @@ public class FenceAlgorithm { * @param pts * @return */ - public static boolean computeFence(Point2D.Double point, List pts){ + public boolean computeFence(Point2D.Double point, List pts){ //围栏顶点坐标数 int fenceSize = pts.size();