diff --git a/src/main/java/com/iflytop/gd/app/controller/CmdController.java b/src/main/java/com/iflytop/gd/app/controller/CmdController.java index 5a3184b..8729c72 100644 --- a/src/main/java/com/iflytop/gd/app/controller/CmdController.java +++ b/src/main/java/com/iflytop/gd/app/controller/CmdController.java @@ -1,7 +1,7 @@ package com.iflytop.gd.app.controller; -import com.iflytop.gd.app.core.cmd.CommandHandler; -import com.iflytop.gd.app.core.cmd.CommandHandlerRegistry; +import com.iflytop.gd.system.core.cmd.CommandHandler; +import com.iflytop.gd.system.core.cmd.CommandHandlerRegistry; import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.system.common.result.Result; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/com/iflytop/gd/app/core/CraftsContext.java b/src/main/java/com/iflytop/gd/app/core/CraftsContext.java index 97194fc..57a5a1e 100644 --- a/src/main/java/com/iflytop/gd/app/core/CraftsContext.java +++ b/src/main/java/com/iflytop/gd/app/core/CraftsContext.java @@ -1,7 +1,7 @@ package com.iflytop.gd.app.core; import cn.hutool.json.JSONUtil; -import com.iflytop.gd.app.common.constant.WebSocketMessageType; +import com.iflytop.gd.system.common.constant.WebSocketMessageType; import com.iflytop.gd.app.common.enums.CraftEvents; import com.iflytop.gd.app.common.enums.CraftStates; import com.iflytop.gd.app.model.bo.CraftsStep; diff --git a/src/main/java/com/iflytop/gd/app/service/cmd/DemoCommand.java b/src/main/java/com/iflytop/gd/app/service/cmd/DemoCommand.java new file mode 100644 index 0000000..6e9d24e --- /dev/null +++ b/src/main/java/com/iflytop/gd/app/service/cmd/DemoCommand.java @@ -0,0 +1,27 @@ +package com.iflytop.gd.app.service.cmd; + +import com.iflytop.gd.app.model.dto.CmdDTO; +import com.iflytop.gd.system.common.annotation.CommandMapping; +import com.iflytop.gd.system.core.cmd.BaseCommandHandler; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CompletableFuture; + + +@Slf4j +@Component +@RequiredArgsConstructor +@CommandMapping("test_test")//业务指令注解 +public class DemoCommand extends BaseCommandHandler { + + @Override + public CompletableFuture handle(CmdDTO cmdDTO) { + //同步代码 + return runAsync(() -> { + //异步代码 + }); + + } +} diff --git a/src/main/java/com/iflytop/gd/system/common/annotation/CheckedRunnable.java b/src/main/java/com/iflytop/gd/system/common/annotation/CheckedRunnable.java new file mode 100644 index 0000000..42d4f16 --- /dev/null +++ b/src/main/java/com/iflytop/gd/system/common/annotation/CheckedRunnable.java @@ -0,0 +1,6 @@ +package com.iflytop.gd.system.common.annotation; + +@FunctionalInterface +public interface CheckedRunnable { + void run() throws Exception; +} diff --git a/src/main/java/com/iflytop/gd/app/common/annotation/CommandMapping.java b/src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java similarity index 84% rename from src/main/java/com/iflytop/gd/app/common/annotation/CommandMapping.java rename to src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java index 5432a10..e82ef59 100644 --- a/src/main/java/com/iflytop/gd/app/common/annotation/CommandMapping.java +++ b/src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java @@ -1,4 +1,4 @@ -package com.iflytop.gd.app.common.annotation; +package com.iflytop.gd.system.common.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/com/iflytop/gd/app/common/constant/WebSocketMessageType.java b/src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java similarity index 91% rename from src/main/java/com/iflytop/gd/app/common/constant/WebSocketMessageType.java rename to src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java index b5300fe..cdff747 100644 --- a/src/main/java/com/iflytop/gd/app/common/constant/WebSocketMessageType.java +++ b/src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java @@ -1,4 +1,4 @@ -package com.iflytop.gd.app.common.constant; +package com.iflytop.gd.system.common.constant; public class WebSocketMessageType { /** diff --git a/src/main/java/com/iflytop/gd/system/common/utils/LambdaUtil.java b/src/main/java/com/iflytop/gd/system/common/utils/LambdaUtil.java new file mode 100644 index 0000000..f2f69f7 --- /dev/null +++ b/src/main/java/com/iflytop/gd/system/common/utils/LambdaUtil.java @@ -0,0 +1,15 @@ +package com.iflytop.gd.system.common.utils; + +import com.iflytop.gd.system.common.annotation.CheckedRunnable; + +public class LambdaUtil { + public static Runnable unchecked(CheckedRunnable runnable) { + return () -> { + try { + runnable.run(); + } catch (Exception e) { + throw new RuntimeException(e); + } + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/iflytop/gd/system/core/cmd/BaseCommandHandler.java b/src/main/java/com/iflytop/gd/system/core/cmd/BaseCommandHandler.java new file mode 100644 index 0000000..052e314 --- /dev/null +++ b/src/main/java/com/iflytop/gd/system/core/cmd/BaseCommandHandler.java @@ -0,0 +1,18 @@ +package com.iflytop.gd.system.core.cmd; + + + +import com.iflytop.gd.system.common.annotation.CheckedRunnable; +import com.iflytop.gd.system.common.utils.LambdaUtil; + +import java.util.concurrent.CompletableFuture; + +public abstract class BaseCommandHandler implements CommandHandler { + + protected CompletableFuture runAsync(CheckedRunnable task) { + return CompletableFuture.runAsync(LambdaUtil.unchecked(task)); + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/iflytop/gd/app/core/cmd/CommandHandler.java b/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandler.java similarity index 81% rename from src/main/java/com/iflytop/gd/app/core/cmd/CommandHandler.java rename to src/main/java/com/iflytop/gd/system/core/cmd/CommandHandler.java index cadee50..cae8795 100644 --- a/src/main/java/com/iflytop/gd/app/core/cmd/CommandHandler.java +++ b/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandler.java @@ -1,4 +1,4 @@ -package com.iflytop.gd.app.core.cmd; +package com.iflytop.gd.system.core.cmd; import com.iflytop.gd.app.model.dto.CmdDTO; diff --git a/src/main/java/com/iflytop/gd/app/core/cmd/CommandHandlerRegistry.java b/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java similarity index 93% rename from src/main/java/com/iflytop/gd/app/core/cmd/CommandHandlerRegistry.java rename to src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java index 767e2e6..d3d91e7 100644 --- a/src/main/java/com/iflytop/gd/app/core/cmd/CommandHandlerRegistry.java +++ b/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java @@ -1,6 +1,6 @@ -package com.iflytop.gd.app.core.cmd; +package com.iflytop.gd.system.core.cmd; -import com.iflytop.gd.app.common.annotation.CommandMapping; +import com.iflytop.gd.system.common.annotation.CommandMapping; import io.micrometer.common.lang.NonNull; import jakarta.annotation.PostConstruct; import org.springframework.aop.support.AopUtils;