From d17ed0a12347f50fade9772a801e31c8411c9baf Mon Sep 17 00:00:00 2001
From: huangxiang <155373492@qq.com>
Date: Sun, 27 Apr 2025 13:30:07 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F?=
=?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../iflytop/gd/app/controller/CmdController.java | 6 +-
.../gd/app/controller/CmdDebugController.java | 6 +-
.../gd/app/controller/CraftsController.java | 4 +-
.../iflytop/gd/app/controller/OresController.java | 8 +--
.../iflytop/gd/app/controller/UserController.java | 74 +++++++++++++++++++
.../com/iflytop/gd/app/core/CraftsContext.java | 4 +-
.../iflytop/gd/app/model/dto/WebsocketResult.java | 18 +++++
.../com/iflytop/gd/app/model/entity/Crafts.java | 2 +-
.../java/com/iflytop/gd/app/model/entity/Ores.java | 2 +-
.../iflytop/gd/app/service/CraftsStepService.java | 1 -
.../com/iflytop/gd/app/service/OresService.java | 3 +-
.../iflytop/gd/app/service/WebSocketService.java | 18 +++++
.../gd/app/service/cmd/BaseCommandHandler.java | 18 +++++
.../iflytop/gd/app/service/cmd/CommandHandler.java | 9 +++
.../gd/app/service/cmd/CommandHandlerRegistry.java | 42 +++++++++++
.../iflytop/gd/app/service/cmd/DemoCommand.java | 3 +-
.../gd/common/annotation/CheckedRunnable.java | 6 ++
.../gd/common/annotation/CommandMapping.java | 12 ++++
.../gd/common/constant/WebSocketMessageType.java | 25 +++++++
.../java/com/iflytop/gd/common/enums/Deleted.java | 12 ++++
.../com/iflytop/gd/common/enums/FixedUser.java | 12 ++++
.../java/com/iflytop/gd/common/enums/UsrRole.java | 7 ++
.../iflytop/gd/common/exception/AppException.java | 21 ++++++
.../gd/common/handler/GlobalExceptionHandler.java | 24 +++++++
.../gd/common/handler/MyMetaObjectHandler.java | 36 ++++++++++
.../com/iflytop/gd/common/result/IResultCode.java | 12 ++++
.../com/iflytop/gd/common/result/PageResult.java | 43 +++++++++++
.../java/com/iflytop/gd/common/result/Result.java | 75 +++++++++++++++++++
.../com/iflytop/gd/common/result/ResultCode.java | 75 +++++++++++++++++++
.../com/iflytop/gd/common/utils/LambdaUtil.java | 15 ++++
.../com/iflytop/gd/hardware/comm/can/driver/d.txt | 1 -
.../iflytop/gd/hardware/comm/can/listener/d.txt | 1 -
.../iflytop/gd/hardware/comm/can/protocol/d.txt | 1 -
.../iflytop/gd/hardware/comm/rs485/driver/d.txt | 1 -
.../iflytop/gd/hardware/comm/rs485/listener/d.txt | 1 -
.../iflytop/gd/hardware/comm/rs485/protocol/d.txt | 1 -
.../gd/infrastructure/comm/can/driver/d.txt | 1 +
.../gd/infrastructure/comm/can/listener/d.txt | 1 +
.../gd/infrastructure/comm/can/protocol/d.txt | 1 +
.../gd/infrastructure/comm/rs485/driver/d.txt | 1 +
.../gd/infrastructure/comm/rs485/listener/d.txt | 1 +
.../gd/infrastructure/comm/rs485/protocol/d.txt | 1 +
.../infrastructure/config/MybatisPlusConfig.java | 61 ++++++++++++++++
.../gd/infrastructure/config/SwaggerConfig.java | 68 ++++++++++++++++++
.../gd/infrastructure/config/WebConfig.java | 16 +++++
.../gd/infrastructure/config/WebSocketConfig.java | 14 ++++
.../gd/infrastructure/config/WebSocketServer.java | 49 +++++++++++++
.../infrastructure/repository/base/BaseEntity.java | 44 ++++++++++++
.../repository/base/BasePageQuery.java | 26 +++++++
.../infrastructure/repository/base/IBaseEnum.java | 84 ++++++++++++++++++++++
.../gd/infrastructure/repository/entity/User.java | 43 +++++++++++
.../repository/mapper/UserMapper.java | 13 ++++
.../system/common/annotation/CheckedRunnable.java | 6 --
.../system/common/annotation/CommandMapping.java | 12 ----
.../iflytop/gd/system/common/base/BaseEntity.java | 44 ------------
.../gd/system/common/base/BasePageQuery.java | 26 -------
.../iflytop/gd/system/common/base/IBaseEnum.java | 84 ----------------------
.../common/constant/WebSocketMessageType.java | 25 -------
.../iflytop/gd/system/common/enums/Deleted.java | 12 ----
.../iflytop/gd/system/common/enums/FixedUser.java | 12 ----
.../iflytop/gd/system/common/enums/UsrRole.java | 7 --
.../gd/system/common/exception/AppException.java | 21 ------
.../gd/system/common/result/IResultCode.java | 12 ----
.../gd/system/common/result/PageResult.java | 43 -----------
.../iflytop/gd/system/common/result/Result.java | 75 -------------------
.../gd/system/common/result/ResultCode.java | 75 -------------------
.../iflytop/gd/system/common/utils/LambdaUtil.java | 15 ----
.../gd/system/config/MybatisPlusConfig.java | 61 ----------------
.../iflytop/gd/system/config/SwaggerConfig.java | 69 ------------------
.../com/iflytop/gd/system/config/WebConfig.java | 16 -----
.../iflytop/gd/system/config/WebSocketConfig.java | 14 ----
.../iflytop/gd/system/config/WebSocketServer.java | 49 -------------
.../gd/system/controller/UserController.java | 74 -------------------
.../gd/system/core/cmd/BaseCommandHandler.java | 18 -----
.../iflytop/gd/system/core/cmd/CommandHandler.java | 9 ---
.../gd/system/core/cmd/CommandHandlerRegistry.java | 42 -----------
.../gd/system/handler/GlobalExceptionHandler.java | 24 -------
.../gd/system/handler/MyMetaObjectHandler.java | 36 ----------
.../com/iflytop/gd/system/mapper/UserMapper.java | 13 ----
.../gd/system/model/dto/WebsocketResult.java | 18 -----
.../com/iflytop/gd/system/model/entity/User.java | 43 -----------
.../com/iflytop/gd/system/service/UserService.java | 4 +-
.../gd/system/service/WebSocketService.java | 19 -----
83 files changed, 998 insertions(+), 1003 deletions(-)
create mode 100644 src/main/java/com/iflytop/gd/app/controller/UserController.java
create mode 100644 src/main/java/com/iflytop/gd/app/model/dto/WebsocketResult.java
create mode 100644 src/main/java/com/iflytop/gd/app/service/WebSocketService.java
create mode 100644 src/main/java/com/iflytop/gd/app/service/cmd/BaseCommandHandler.java
create mode 100644 src/main/java/com/iflytop/gd/app/service/cmd/CommandHandler.java
create mode 100644 src/main/java/com/iflytop/gd/app/service/cmd/CommandHandlerRegistry.java
create mode 100644 src/main/java/com/iflytop/gd/common/annotation/CheckedRunnable.java
create mode 100644 src/main/java/com/iflytop/gd/common/annotation/CommandMapping.java
create mode 100644 src/main/java/com/iflytop/gd/common/constant/WebSocketMessageType.java
create mode 100644 src/main/java/com/iflytop/gd/common/enums/Deleted.java
create mode 100644 src/main/java/com/iflytop/gd/common/enums/FixedUser.java
create mode 100644 src/main/java/com/iflytop/gd/common/enums/UsrRole.java
create mode 100644 src/main/java/com/iflytop/gd/common/exception/AppException.java
create mode 100644 src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java
create mode 100644 src/main/java/com/iflytop/gd/common/handler/MyMetaObjectHandler.java
create mode 100644 src/main/java/com/iflytop/gd/common/result/IResultCode.java
create mode 100644 src/main/java/com/iflytop/gd/common/result/PageResult.java
create mode 100644 src/main/java/com/iflytop/gd/common/result/Result.java
create mode 100644 src/main/java/com/iflytop/gd/common/result/ResultCode.java
create mode 100644 src/main/java/com/iflytop/gd/common/utils/LambdaUtil.java
delete mode 100644 src/main/java/com/iflytop/gd/hardware/comm/can/driver/d.txt
delete mode 100644 src/main/java/com/iflytop/gd/hardware/comm/can/listener/d.txt
delete mode 100644 src/main/java/com/iflytop/gd/hardware/comm/can/protocol/d.txt
delete mode 100644 src/main/java/com/iflytop/gd/hardware/comm/rs485/driver/d.txt
delete mode 100644 src/main/java/com/iflytop/gd/hardware/comm/rs485/listener/d.txt
delete mode 100644 src/main/java/com/iflytop/gd/hardware/comm/rs485/protocol/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/comm/can/driver/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/comm/can/listener/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/comm/can/protocol/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/comm/rs485/driver/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/comm/rs485/listener/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/comm/rs485/protocol/d.txt
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/config/MybatisPlusConfig.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/config/SwaggerConfig.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/config/WebConfig.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/config/WebSocketConfig.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/config/WebSocketServer.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/repository/base/BaseEntity.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/repository/base/BasePageQuery.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/repository/base/IBaseEnum.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/repository/entity/User.java
create mode 100644 src/main/java/com/iflytop/gd/infrastructure/repository/mapper/UserMapper.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/annotation/CheckedRunnable.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/base/BaseEntity.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/base/BasePageQuery.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/base/IBaseEnum.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/enums/Deleted.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/enums/FixedUser.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/enums/UsrRole.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/exception/AppException.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/result/IResultCode.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/result/PageResult.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/result/Result.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/result/ResultCode.java
delete mode 100644 src/main/java/com/iflytop/gd/system/common/utils/LambdaUtil.java
delete mode 100644 src/main/java/com/iflytop/gd/system/config/MybatisPlusConfig.java
delete mode 100644 src/main/java/com/iflytop/gd/system/config/SwaggerConfig.java
delete mode 100644 src/main/java/com/iflytop/gd/system/config/WebConfig.java
delete mode 100644 src/main/java/com/iflytop/gd/system/config/WebSocketConfig.java
delete mode 100644 src/main/java/com/iflytop/gd/system/config/WebSocketServer.java
delete mode 100644 src/main/java/com/iflytop/gd/system/controller/UserController.java
delete mode 100644 src/main/java/com/iflytop/gd/system/core/cmd/BaseCommandHandler.java
delete mode 100644 src/main/java/com/iflytop/gd/system/core/cmd/CommandHandler.java
delete mode 100644 src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java
delete mode 100644 src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java
delete mode 100644 src/main/java/com/iflytop/gd/system/handler/MyMetaObjectHandler.java
delete mode 100644 src/main/java/com/iflytop/gd/system/mapper/UserMapper.java
delete mode 100644 src/main/java/com/iflytop/gd/system/model/dto/WebsocketResult.java
delete mode 100644 src/main/java/com/iflytop/gd/system/model/entity/User.java
delete mode 100644 src/main/java/com/iflytop/gd/system/service/WebSocketService.java
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 8729c72..113fbc0 100644
--- a/src/main/java/com/iflytop/gd/app/controller/CmdController.java
+++ b/src/main/java/com/iflytop/gd/app/controller/CmdController.java
@@ -1,9 +1,9 @@
package com.iflytop.gd.app.controller;
-import com.iflytop.gd.system.core.cmd.CommandHandler;
-import com.iflytop.gd.system.core.cmd.CommandHandlerRegistry;
+import com.iflytop.gd.app.service.cmd.CommandHandler;
+import com.iflytop.gd.app.service.cmd.CommandHandlerRegistry;
import com.iflytop.gd.app.model.dto.CmdDTO;
-import com.iflytop.gd.system.common.result.Result;
+import com.iflytop.gd.common.result.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
diff --git a/src/main/java/com/iflytop/gd/app/controller/CmdDebugController.java b/src/main/java/com/iflytop/gd/app/controller/CmdDebugController.java
index fe6afb2..02cdc81 100644
--- a/src/main/java/com/iflytop/gd/app/controller/CmdDebugController.java
+++ b/src/main/java/com/iflytop/gd/app/controller/CmdDebugController.java
@@ -1,9 +1,9 @@
package com.iflytop.gd.app.controller;
import com.iflytop.gd.app.model.dto.CmdDTO;
-import com.iflytop.gd.system.common.result.Result;
-import com.iflytop.gd.system.core.cmd.CommandHandler;
-import com.iflytop.gd.system.core.cmd.CommandHandlerRegistry;
+import com.iflytop.gd.common.result.Result;
+import com.iflytop.gd.app.service.cmd.CommandHandler;
+import com.iflytop.gd.app.service.cmd.CommandHandlerRegistry;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
diff --git a/src/main/java/com/iflytop/gd/app/controller/CraftsController.java b/src/main/java/com/iflytop/gd/app/controller/CraftsController.java
index fde8823..951883a 100644
--- a/src/main/java/com/iflytop/gd/app/controller/CraftsController.java
+++ b/src/main/java/com/iflytop/gd/app/controller/CraftsController.java
@@ -5,8 +5,8 @@ import com.iflytop.gd.app.model.dto.ResumeCraftsDto;
import com.iflytop.gd.app.model.dto.StartCraftsDTO;
import com.iflytop.gd.app.model.dto.StopCraftsDto;
import com.iflytop.gd.app.service.CraftsStepService;
-import com.iflytop.gd.system.common.result.Result;
-import com.iflytop.gd.system.common.result.ResultCode;
+import com.iflytop.gd.common.result.Result;
+import com.iflytop.gd.common.result.ResultCode;
import com.iflytop.gd.app.model.entity.Crafts;
import com.iflytop.gd.app.service.CraftsService;
import io.swagger.v3.oas.annotations.Operation;
diff --git a/src/main/java/com/iflytop/gd/app/controller/OresController.java b/src/main/java/com/iflytop/gd/app/controller/OresController.java
index db92a7e..cee2019 100644
--- a/src/main/java/com/iflytop/gd/app/controller/OresController.java
+++ b/src/main/java/com/iflytop/gd/app/controller/OresController.java
@@ -3,11 +3,11 @@ package com.iflytop.gd.app.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.iflytop.gd.app.model.entity.Ores;
import com.iflytop.gd.app.model.vo.OresCraftsListVO;
-import com.iflytop.gd.system.common.base.BasePageQuery;
-import com.iflytop.gd.system.common.result.PageResult;
+import com.iflytop.gd.infrastructure.repository.base.BasePageQuery;
+import com.iflytop.gd.common.result.PageResult;
import com.iflytop.gd.app.service.OresService;
-import com.iflytop.gd.system.common.result.Result;
-import com.iflytop.gd.system.common.result.ResultCode;
+import com.iflytop.gd.common.result.Result;
+import com.iflytop.gd.common.result.ResultCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/src/main/java/com/iflytop/gd/app/controller/UserController.java b/src/main/java/com/iflytop/gd/app/controller/UserController.java
new file mode 100644
index 0000000..c1ce3d6
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/app/controller/UserController.java
@@ -0,0 +1,74 @@
+package com.iflytop.gd.app.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iflytop.gd.infrastructure.repository.base.BasePageQuery;
+import com.iflytop.gd.common.result.PageResult;
+import com.iflytop.gd.common.result.Result;
+import com.iflytop.gd.common.result.ResultCode;
+import com.iflytop.gd.infrastructure.repository.entity.User;
+import com.iflytop.gd.system.service.UserService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+@Tag(name = "用户接口")
+@RestController
+@RequestMapping("/api/user")
+@RequiredArgsConstructor
+@Slf4j
+public class UserController {
+ private final UserService userService;
+
+ @Operation(summary = "用户列表")
+ @GetMapping("/list")
+ public PageResult getAllUsers(BasePageQuery pageQuery) {
+ IPage result = userService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null);
+ return PageResult.success(result);
+ }
+
+ @Operation(summary = "添加新用户")
+ @PostMapping("")
+ public Result addUser(@RequestBody User user) {
+ User existingUser = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername, user.getUsername()));
+ if (existingUser == null) {
+ boolean isSuccess = userService.save(user);
+ if (isSuccess) {
+ return Result.success();
+ }
+ } else {
+ return Result.failed(ResultCode.USER_ALREADY_EXISTS);
+ }
+ return Result.failed();
+ }
+
+ @Operation(summary = "当前用户信息")
+ @GetMapping("/current")
+ public Result currentUser() {
+ return Result.success(userService.getCurrentUser());
+ }
+
+ @Operation(summary = "更新用户信息")
+ @PutMapping("")
+ public Result updateUser(@RequestBody User user) {
+ boolean isSuccess = userService.updateById(user);
+ if (isSuccess) {
+ return Result.success();
+ }
+ return Result.failed();
+ }
+
+ @Operation(summary = "删除用户")
+ @DeleteMapping("/{ids}")
+ public Result deleteUser(@Parameter(description = "用户ID,多个以英文逗号(,)分割") @PathVariable String ids) {
+ boolean isSuccess = userService.deleteUser(ids);
+ if (isSuccess) {
+ return Result.success();
+ }
+ return Result.failed();
+ }
+}
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 36ab562..d4fa82d 100644
--- a/src/main/java/com/iflytop/gd/app/core/CraftsContext.java
+++ b/src/main/java/com/iflytop/gd/app/core/CraftsContext.java
@@ -1,13 +1,13 @@
package com.iflytop.gd.app.core;
import cn.hutool.json.JSONUtil;
-import com.iflytop.gd.system.common.constant.WebSocketMessageType;
+import com.iflytop.gd.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;
import com.iflytop.gd.app.service.CraftsStepService;
import com.iflytop.gd.app.model.entity.Crafts;
-import com.iflytop.gd.system.service.WebSocketService;
+import com.iflytop.gd.app.service.WebSocketService;
import lombok.Getter;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
diff --git a/src/main/java/com/iflytop/gd/app/model/dto/WebsocketResult.java b/src/main/java/com/iflytop/gd/app/model/dto/WebsocketResult.java
new file mode 100644
index 0000000..de53826
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/app/model/dto/WebsocketResult.java
@@ -0,0 +1,18 @@
+package com.iflytop.gd.app.model.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class WebsocketResult {
+ /**
+ * 推送类型(指令 cmd,报警 warn ,状态 status)
+ */
+ @Schema(description = "推送类型(指令 cmd,报警 warn ,状态 status)")
+ private String type;
+ /**
+ * 执行结果
+ */
+ @Schema(description = "推送数据")
+ private Object data;
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/app/model/entity/Crafts.java b/src/main/java/com/iflytop/gd/app/model/entity/Crafts.java
index a954a64..0bc7419 100644
--- a/src/main/java/com/iflytop/gd/app/model/entity/Crafts.java
+++ b/src/main/java/com/iflytop/gd/app/model/entity/Crafts.java
@@ -1,7 +1,7 @@
package com.iflytop.gd.app.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.iflytop.gd.system.common.base.BaseEntity;
+import com.iflytop.gd.infrastructure.repository.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/src/main/java/com/iflytop/gd/app/model/entity/Ores.java b/src/main/java/com/iflytop/gd/app/model/entity/Ores.java
index dec3b30..718e57e 100644
--- a/src/main/java/com/iflytop/gd/app/model/entity/Ores.java
+++ b/src/main/java/com/iflytop/gd/app/model/entity/Ores.java
@@ -1,7 +1,7 @@
package com.iflytop.gd.app.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.iflytop.gd.system.common.base.BaseEntity;
+import com.iflytop.gd.infrastructure.repository.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/src/main/java/com/iflytop/gd/app/service/CraftsStepService.java b/src/main/java/com/iflytop/gd/app/service/CraftsStepService.java
index 78cbc71..5dae5ca 100644
--- a/src/main/java/com/iflytop/gd/app/service/CraftsStepService.java
+++ b/src/main/java/com/iflytop/gd/app/service/CraftsStepService.java
@@ -4,7 +4,6 @@ import com.iflytop.gd.app.common.enums.CraftEvents;
import com.iflytop.gd.app.common.enums.CraftStates;
import com.iflytop.gd.app.core.CraftsContext;
import com.iflytop.gd.app.model.entity.Crafts;
-import com.iflytop.gd.system.service.WebSocketService;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/com/iflytop/gd/app/service/OresService.java b/src/main/java/com/iflytop/gd/app/service/OresService.java
index f8952ec..9aa5c9b 100644
--- a/src/main/java/com/iflytop/gd/app/service/OresService.java
+++ b/src/main/java/com/iflytop/gd/app/service/OresService.java
@@ -6,12 +6,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iflytop.gd.app.model.vo.OresCraftsListVO;
-import com.iflytop.gd.system.common.base.BasePageQuery;
+import com.iflytop.gd.infrastructure.repository.base.BasePageQuery;
import com.iflytop.gd.app.mapper.CraftsMapper;
import com.iflytop.gd.app.mapper.OresMapper;
import com.iflytop.gd.app.model.entity.Crafts;
import com.iflytop.gd.app.model.entity.Ores;
-import com.iflytop.gd.system.model.entity.User;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
diff --git a/src/main/java/com/iflytop/gd/app/service/WebSocketService.java b/src/main/java/com/iflytop/gd/app/service/WebSocketService.java
new file mode 100644
index 0000000..5a13e4c
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/app/service/WebSocketService.java
@@ -0,0 +1,18 @@
+package com.iflytop.gd.app.service;
+
+import cn.hutool.json.JSONUtil;
+import com.iflytop.gd.infrastructure.config.WebSocketServer;
+import com.iflytop.gd.app.model.dto.WebsocketResult;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WebSocketService {
+
+ public void push(String type, Object data) {
+ WebsocketResult websocketResult = new WebsocketResult();
+ websocketResult.setType(type);
+ websocketResult.setData(data);
+ WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(websocketResult));
+ }
+
+}
diff --git a/src/main/java/com/iflytop/gd/app/service/cmd/BaseCommandHandler.java b/src/main/java/com/iflytop/gd/app/service/cmd/BaseCommandHandler.java
new file mode 100644
index 0000000..a392896
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/app/service/cmd/BaseCommandHandler.java
@@ -0,0 +1,18 @@
+package com.iflytop.gd.app.service.cmd;
+
+
+
+import com.iflytop.gd.common.annotation.CheckedRunnable;
+import com.iflytop.gd.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/service/cmd/CommandHandler.java b/src/main/java/com/iflytop/gd/app/service/cmd/CommandHandler.java
new file mode 100644
index 0000000..812ad2e
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/app/service/cmd/CommandHandler.java
@@ -0,0 +1,9 @@
+package com.iflytop.gd.app.service.cmd;
+
+import com.iflytop.gd.app.model.dto.CmdDTO;
+
+import java.util.concurrent.CompletableFuture;
+
+public interface CommandHandler {
+ CompletableFuture handle(CmdDTO cmdDTO);
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/app/service/cmd/CommandHandlerRegistry.java b/src/main/java/com/iflytop/gd/app/service/cmd/CommandHandlerRegistry.java
new file mode 100644
index 0000000..ca68ba8
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/app/service/cmd/CommandHandlerRegistry.java
@@ -0,0 +1,42 @@
+package com.iflytop.gd.app.service.cmd;
+
+import com.iflytop.gd.common.annotation.CommandMapping;
+import io.micrometer.common.lang.NonNull;
+import jakarta.annotation.PostConstruct;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class CommandHandlerRegistry implements ApplicationContextAware {
+
+ private final Map handlerMap = new HashMap<>();
+ private ApplicationContext applicationContext;
+
+ @Override
+ public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+
+ @PostConstruct
+ public void init() {
+ Map beans = applicationContext.getBeansWithAnnotation(CommandMapping.class);
+ for (Object bean : beans.values()) {
+ // 获取实际目标类,而不是代理类
+ Class> targetClass = AopUtils.getTargetClass(bean);
+ CommandMapping mapping = targetClass.getAnnotation(CommandMapping.class);
+ if (mapping != null && bean instanceof CommandHandler) {
+ handlerMap.put(mapping.value(), (CommandHandler) bean);
+ }
+ }
+ }
+
+ public CommandHandler getHandler(String command) {
+ return handlerMap.get(command);
+ }
+}
\ No newline at end of file
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
index 6e9d24e..1defd30 100644
--- a/src/main/java/com/iflytop/gd/app/service/cmd/DemoCommand.java
+++ b/src/main/java/com/iflytop/gd/app/service/cmd/DemoCommand.java
@@ -1,8 +1,7 @@
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 com.iflytop.gd.common.annotation.CommandMapping;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
diff --git a/src/main/java/com/iflytop/gd/common/annotation/CheckedRunnable.java b/src/main/java/com/iflytop/gd/common/annotation/CheckedRunnable.java
new file mode 100644
index 0000000..d652552
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/annotation/CheckedRunnable.java
@@ -0,0 +1,6 @@
+package com.iflytop.gd.common.annotation;
+
+@FunctionalInterface
+public interface CheckedRunnable {
+ void run() throws Exception;
+}
diff --git a/src/main/java/com/iflytop/gd/common/annotation/CommandMapping.java b/src/main/java/com/iflytop/gd/common/annotation/CommandMapping.java
new file mode 100644
index 0000000..5b4e657
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/annotation/CommandMapping.java
@@ -0,0 +1,12 @@
+package com.iflytop.gd.common.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface CommandMapping {
+ String value();
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/common/constant/WebSocketMessageType.java b/src/main/java/com/iflytop/gd/common/constant/WebSocketMessageType.java
new file mode 100644
index 0000000..08a1dd3
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/constant/WebSocketMessageType.java
@@ -0,0 +1,25 @@
+package com.iflytop.gd.common.constant;
+
+public class WebSocketMessageType {
+ /**
+ * 设备状态
+ */
+ public static final String STATUS = "status";
+ /**
+ * 设备报警
+ */
+ public static final String ALARM = "alarm";
+ /**
+ * 设备指令反馈
+ */
+ public static final String CMD = "cmd";
+ /**
+ * 工艺执行反馈
+ */
+ public static final String CRAFTS = "crafts";
+ /**
+ * 容器剩余状态
+ */
+ public static final String CONTAINER = "container";
+
+}
diff --git a/src/main/java/com/iflytop/gd/common/enums/Deleted.java b/src/main/java/com/iflytop/gd/common/enums/Deleted.java
new file mode 100644
index 0000000..86e69a7
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/enums/Deleted.java
@@ -0,0 +1,12 @@
+package com.iflytop.gd.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 删除状态枚举
+ */
+@Getter
+public enum Deleted {
+ ENABLE,
+ DISABLE
+}
diff --git a/src/main/java/com/iflytop/gd/common/enums/FixedUser.java b/src/main/java/com/iflytop/gd/common/enums/FixedUser.java
new file mode 100644
index 0000000..355e7bc
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/enums/FixedUser.java
@@ -0,0 +1,12 @@
+package com.iflytop.gd.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 系統固定用户
+ */
+@Getter
+public enum FixedUser {
+ ENABLE,
+ DISABLE
+}
diff --git a/src/main/java/com/iflytop/gd/common/enums/UsrRole.java b/src/main/java/com/iflytop/gd/common/enums/UsrRole.java
new file mode 100644
index 0000000..ee6b1ac
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/enums/UsrRole.java
@@ -0,0 +1,7 @@
+package com.iflytop.gd.common.enums;
+
+public enum UsrRole {
+ ADMIN,
+ DEVELOPER,
+ USER;
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/common/exception/AppException.java b/src/main/java/com/iflytop/gd/common/exception/AppException.java
new file mode 100644
index 0000000..980627a
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/exception/AppException.java
@@ -0,0 +1,21 @@
+package com.iflytop.gd.common.exception;
+
+import com.iflytop.gd.common.result.IResultCode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AppException extends RuntimeException {
+ private final IResultCode resultCode;
+
+ public AppException(IResultCode resultCode) {
+ super(resultCode.getMsg());
+ this.resultCode = resultCode;
+ }
+
+ @Override
+ public String toString() {
+ return "AppException{" + "code='" + resultCode.getCode() + ", msg=" + resultCode.getMsg() + '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java b/src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java
new file mode 100644
index 0000000..8148129
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java
@@ -0,0 +1,24 @@
+package com.iflytop.gd.common.handler;
+
+import com.iflytop.gd.common.exception.AppException;
+import com.iflytop.gd.common.result.Result;
+import com.iflytop.gd.common.result.ResultCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ @ExceptionHandler(Exception.class)
+ public Result> handleException(Exception ex) {
+ if (ex instanceof AppException ae) {
+ log.warn("AppException:", ae);
+ return Result.failed(ae.getResultCode());
+ }
+ log.error("Unhandled exception:", ex);
+ return Result.failed(ResultCode.SYSTEM_ERROR);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/common/handler/MyMetaObjectHandler.java b/src/main/java/com/iflytop/gd/common/handler/MyMetaObjectHandler.java
new file mode 100644
index 0000000..7d5a0b4
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/handler/MyMetaObjectHandler.java
@@ -0,0 +1,36 @@
+package com.iflytop.gd.common.handler;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+
+/**
+ * mybatis-plus 字段自动填充
+ */
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+
+ /**
+ * 新增填充创建时间
+ *
+ * @param metaObject 元数据
+ */
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
+ this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
+ }
+
+ /**
+ * 更新填充更新时间
+ *
+ * @param metaObject 元数据
+ */
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
+ }
+
+}
diff --git a/src/main/java/com/iflytop/gd/common/result/IResultCode.java b/src/main/java/com/iflytop/gd/common/result/IResultCode.java
new file mode 100644
index 0000000..25b91df
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/result/IResultCode.java
@@ -0,0 +1,12 @@
+package com.iflytop.gd.common.result;
+
+/**
+ * 响应码接口
+ **/
+public interface IResultCode {
+
+ String getCode();
+
+ String getMsg();
+
+}
diff --git a/src/main/java/com/iflytop/gd/common/result/PageResult.java b/src/main/java/com/iflytop/gd/common/result/PageResult.java
new file mode 100644
index 0000000..bab2ce6
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/result/PageResult.java
@@ -0,0 +1,43 @@
+package com.iflytop.gd.common.result;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 分页响应结构体
+ */
+@Data
+public class PageResult implements Serializable {
+
+ private String code;
+
+ private Data data;
+
+ private String msg;
+
+ public static PageResult success(IPage page) {
+ PageResult result = new PageResult<>();
+ result.setCode(ResultCode.SUCCESS.getCode());
+
+ Data data = new Data<>();
+ data.setList(page.getRecords());
+ data.setTotal(page.getTotal());
+
+ result.setData(data);
+ result.setMsg(ResultCode.SUCCESS.getMsg());
+ return result;
+ }
+
+ @lombok.Data
+ public static class Data {
+
+ private List list;
+
+ private long total;
+
+ }
+
+}
diff --git a/src/main/java/com/iflytop/gd/common/result/Result.java b/src/main/java/com/iflytop/gd/common/result/Result.java
new file mode 100644
index 0000000..b06af4c
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/result/Result.java
@@ -0,0 +1,75 @@
+package com.iflytop.gd.common.result;
+
+import cn.hutool.core.util.StrUtil;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 统一响应结构体
+ **/
+@Data
+public class Result implements Serializable {
+
+ private String code;
+
+ private T data;
+
+ private String msg;
+
+ public static Result success() {
+ return success(null);
+ }
+
+ public static Result success(T data) {
+ Result result = new Result<>();
+ result.setCode(ResultCode.SUCCESS.getCode());
+ result.setMsg(ResultCode.SUCCESS.getMsg());
+ result.setData(data);
+ return result;
+ }
+
+ public static Result failed() {
+ return result(ResultCode.SYSTEM_ERROR.getCode(), ResultCode.SYSTEM_ERROR.getMsg(), null);
+ }
+
+ public static Result failed(String msg) {
+ return result(ResultCode.SYSTEM_ERROR.getCode(), msg, null);
+ }
+
+ public static Result judge(boolean status) {
+ if (status) {
+ return success();
+ } else {
+ return failed();
+ }
+ }
+
+ public static Result failed(IResultCode resultCode) {
+ return result(resultCode.getCode(), resultCode.getMsg(), null);
+ }
+
+ public static Result failed(IResultCode resultCode, String msg) {
+ return result(resultCode.getCode(), StrUtil.isNotBlank(msg) ? msg : resultCode.getMsg(), null);
+ }
+
+ public static Result failed(String code, String msg) {
+ return result(code, msg, null);
+ }
+
+ private static Result result(IResultCode resultCode, T data) {
+ return result(resultCode.getCode(), resultCode.getMsg(), data);
+ }
+
+ private static Result result(String code, String msg, T data) {
+ Result result = new Result<>();
+ result.setCode(code);
+ result.setData(data);
+ result.setMsg(msg);
+ return result;
+ }
+
+ public static boolean isSuccess(Result> result) {
+ return result != null && ResultCode.SUCCESS.getCode().equals(result.getCode());
+ }
+}
diff --git a/src/main/java/com/iflytop/gd/common/result/ResultCode.java b/src/main/java/com/iflytop/gd/common/result/ResultCode.java
new file mode 100644
index 0000000..5895172
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/result/ResultCode.java
@@ -0,0 +1,75 @@
+package com.iflytop.gd.common.result;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+/**
+ * 统一前端响应码定义
+ */
+@Getter
+@AllArgsConstructor
+public enum ResultCode implements IResultCode, Serializable {
+ //================================ 通用 =================================
+ SUCCESS("0", "成功"),
+ FAILED("-1", "未知错误"),
+
+ //============================ 1xxx:请求 & 参数 ============================
+ INVALID_PARAMETER("1000", "参数无效或缺失"),
+ PARAMETER_TYPE_MISMATCH("1001", "参数类型不匹配"),
+ PARAMETER_OUT_OF_RANGE("1002", "参数超出允许范围"),
+
+ //============================ 2xxx:认证 & 授权 ============================
+ UNAUTHORIZED("2000", "未认证或登录失效"),
+ FORBIDDEN("2001", "无访问权限"),
+ TOKEN_EXPIRED("2002", "Token 已过期"),
+ TOKEN_INVALID("2003", "Token 无效"),
+
+ //============================ 3xxx:资源访问 ============================
+ NOT_FOUND("3000", "资源不存在"),
+ METHOD_NOT_ALLOWED("3001", "不支持的请求方法"),
+
+ //============================ 4xxx:业务错误 ============================
+ USER_NOT_FOUND("4000", "用户不存在"),
+ USER_ALREADY_EXISTS("4001", "用户已存在"),
+ INVALID_CREDENTIALS("4002", "用户名或密码错误"),
+ OPERATION_NOT_ALLOWED("4003", "业务操作不允许"),
+ DATA_ALREADY_EXISTS("4004", "数据已存在"),
+ //============================ 5xxx:系统 & 第三方 ============================
+ SYSTEM_ERROR("5000", "系统内部错误"),
+ SERVICE_UNAVAILABLE("5001", "服务暂不可用"),
+ EXTERNAL_API_ERROR("5002", "第三方服务调用失败");
+
+ /** 状态码 */
+ private final String code;
+ /** 提示信息 */
+ private final String msg;
+
+ @Override
+ public String getCode() {
+ return code;
+ }
+
+ @Override
+ public String getMsg() {
+ return msg;
+ }
+
+ /**
+ * 根据 code 获取枚举
+ */
+ public static ResultCode parse(String code) {
+ for (ResultCode item : values()) {
+ if (item.code.equals(code)) {
+ return item;
+ }
+ }
+ return FAILED;
+ }
+
+ @Override
+ public String toString() {
+ return "{\"code\":\"" + code + "\", \"msg\":\"" + msg + "\"}";
+ }
+}
diff --git a/src/main/java/com/iflytop/gd/common/utils/LambdaUtil.java b/src/main/java/com/iflytop/gd/common/utils/LambdaUtil.java
new file mode 100644
index 0000000..8257cdf
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/common/utils/LambdaUtil.java
@@ -0,0 +1,15 @@
+package com.iflytop.gd.common.utils;
+
+import com.iflytop.gd.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/hardware/comm/can/driver/d.txt b/src/main/java/com/iflytop/gd/hardware/comm/can/driver/d.txt
deleted file mode 100644
index e0817aa..0000000
--- a/src/main/java/com/iflytop/gd/hardware/comm/can/driver/d.txt
+++ /dev/null
@@ -1 +0,0 @@
-核心驱动类(打开串口、读写接口)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/hardware/comm/can/listener/d.txt b/src/main/java/com/iflytop/gd/hardware/comm/can/listener/d.txt
deleted file mode 100644
index 85a36cd..0000000
--- a/src/main/java/com/iflytop/gd/hardware/comm/can/listener/d.txt
+++ /dev/null
@@ -1 +0,0 @@
-报文编解码(帧结构、封包/拆包)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/hardware/comm/can/protocol/d.txt b/src/main/java/com/iflytop/gd/hardware/comm/can/protocol/d.txt
deleted file mode 100644
index 44dc6ef..0000000
--- a/src/main/java/com/iflytop/gd/hardware/comm/can/protocol/d.txt
+++ /dev/null
@@ -1 +0,0 @@
-数据接收监听、事件分发
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/hardware/comm/rs485/driver/d.txt b/src/main/java/com/iflytop/gd/hardware/comm/rs485/driver/d.txt
deleted file mode 100644
index e0817aa..0000000
--- a/src/main/java/com/iflytop/gd/hardware/comm/rs485/driver/d.txt
+++ /dev/null
@@ -1 +0,0 @@
-核心驱动类(打开串口、读写接口)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/hardware/comm/rs485/listener/d.txt b/src/main/java/com/iflytop/gd/hardware/comm/rs485/listener/d.txt
deleted file mode 100644
index 85a36cd..0000000
--- a/src/main/java/com/iflytop/gd/hardware/comm/rs485/listener/d.txt
+++ /dev/null
@@ -1 +0,0 @@
-报文编解码(帧结构、封包/拆包)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/hardware/comm/rs485/protocol/d.txt b/src/main/java/com/iflytop/gd/hardware/comm/rs485/protocol/d.txt
deleted file mode 100644
index 44dc6ef..0000000
--- a/src/main/java/com/iflytop/gd/hardware/comm/rs485/protocol/d.txt
+++ /dev/null
@@ -1 +0,0 @@
-数据接收监听、事件分发
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/comm/can/driver/d.txt b/src/main/java/com/iflytop/gd/infrastructure/comm/can/driver/d.txt
new file mode 100644
index 0000000..e0817aa
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/comm/can/driver/d.txt
@@ -0,0 +1 @@
+核心驱动类(打开串口、读写接口)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/comm/can/listener/d.txt b/src/main/java/com/iflytop/gd/infrastructure/comm/can/listener/d.txt
new file mode 100644
index 0000000..85a36cd
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/comm/can/listener/d.txt
@@ -0,0 +1 @@
+报文编解码(帧结构、封包/拆包)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/comm/can/protocol/d.txt b/src/main/java/com/iflytop/gd/infrastructure/comm/can/protocol/d.txt
new file mode 100644
index 0000000..44dc6ef
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/comm/can/protocol/d.txt
@@ -0,0 +1 @@
+数据接收监听、事件分发
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/driver/d.txt b/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/driver/d.txt
new file mode 100644
index 0000000..e0817aa
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/driver/d.txt
@@ -0,0 +1 @@
+核心驱动类(打开串口、读写接口)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/listener/d.txt b/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/listener/d.txt
new file mode 100644
index 0000000..85a36cd
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/listener/d.txt
@@ -0,0 +1 @@
+报文编解码(帧结构、封包/拆包)
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/protocol/d.txt b/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/protocol/d.txt
new file mode 100644
index 0000000..44dc6ef
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/comm/rs485/protocol/d.txt
@@ -0,0 +1 @@
+数据接收监听、事件分发
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/config/MybatisPlusConfig.java b/src/main/java/com/iflytop/gd/infrastructure/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..53e188c
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/config/MybatisPlusConfig.java
@@ -0,0 +1,61 @@
+package com.iflytop.gd.infrastructure.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.iflytop.gd.common.handler.MyMetaObjectHandler;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ *
+ */
+@EnableTransactionManagement
+@Configuration
+public class MybatisPlusConfig {
+
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ // 乐观锁插件
+ interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
+ // 分页插件
+ interceptor.addInnerInterceptor(paginationInnerInterceptor());
+
+ return interceptor;
+ }
+
+ /**
+ * 分页插件,自动识别数据库类型
+ * ...
+ */
+ public PaginationInnerInterceptor paginationInnerInterceptor() {
+ PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+ // 设置数据库类型
+ paginationInnerInterceptor.setDbType(DbType.SQLITE);
+ // 设置最大单页限制数量,默认 500 条,-1 不受限制
+ paginationInnerInterceptor.setMaxLimit(-1L);
+ return paginationInnerInterceptor;
+ }
+
+ /**
+ * 乐观锁插件
+ * ...
+ */
+ public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
+ return new OptimisticLockerInnerInterceptor();
+ }
+
+ /**
+ * 自动填充数据库创建人、创建时间、更新人、更新时间
+ */
+ @Bean
+ public GlobalConfig globalConfig() {
+ GlobalConfig globalConfig = new GlobalConfig();
+ globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
+ return globalConfig;
+ }
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/config/SwaggerConfig.java b/src/main/java/com/iflytop/gd/infrastructure/config/SwaggerConfig.java
new file mode 100644
index 0000000..25de415
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/config/SwaggerConfig.java
@@ -0,0 +1,68 @@
+package com.iflytop.gd.infrastructure.config;
+
+import cn.hutool.core.util.ArrayUtil;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.security.SecurityScheme;
+import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.util.AntPathMatcher;
+
+import java.util.stream.Stream;
+
+/***
+ * 创建Swagger配置
+ */
+@Configuration
+public class SwaggerConfig {
+
+ @Bean
+ public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
+ return openApi -> {
+ // 全局添加Authorization
+ if (openApi.getPaths() != null) {
+ openApi.getPaths().forEach((path, pathItem) -> {
+
+ // 忽略认证的请求无需携带 Authorization
+ String[] ignoreUrls = {"/api/auth/login"};
+ if (ArrayUtil.isNotEmpty(ignoreUrls)) {
+ // Ant 匹配忽略的路径,不添加Authorization
+ AntPathMatcher antPathMatcher = new AntPathMatcher();
+ if (Stream.of(ignoreUrls).anyMatch(ignoreUrl -> antPathMatcher.match(ignoreUrl, path))) {
+ return;
+ }
+ }
+
+ // 其他接口统一添加Authorization
+// pathItem.readOperations()
+// .forEach(operation ->
+// operation.addSecurityItem(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION))
+// );
+ });
+ }
+ };
+ }
+
+ @Bean
+ public OpenAPI customOpenAPI() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("系统API")
+ .version("1.0")) // 配置全局鉴权参数-Authorize
+ .components(new Components()
+ .addSecuritySchemes(HttpHeaders.AUTHORIZATION,
+ new SecurityScheme()
+ .name(HttpHeaders.AUTHORIZATION)
+ .type(SecurityScheme.Type.APIKEY)
+ .in(SecurityScheme.In.HEADER)
+ .scheme("Bearer")
+ .bearerFormat("JWT")
+ )
+ );
+ }
+
+
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/config/WebConfig.java b/src/main/java/com/iflytop/gd/infrastructure/config/WebConfig.java
new file mode 100644
index 0000000..05999c1
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/config/WebConfig.java
@@ -0,0 +1,16 @@
+package com.iflytop.gd.infrastructure.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/api/**")
+ .allowedOrigins("*")
+ .allowedMethods("GET", "POST", "PUT", "DELETE")
+ .allowedHeaders("*");
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/config/WebSocketConfig.java b/src/main/java/com/iflytop/gd/infrastructure/config/WebSocketConfig.java
new file mode 100644
index 0000000..a3a8006
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/config/WebSocketConfig.java
@@ -0,0 +1,14 @@
+package com.iflytop.gd.infrastructure.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+public class WebSocketConfig {
+
+ @Bean
+ public ServerEndpointExporter serverEndpointExporter() {
+ return new ServerEndpointExporter();
+ }
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/config/WebSocketServer.java b/src/main/java/com/iflytop/gd/infrastructure/config/WebSocketServer.java
new file mode 100644
index 0000000..d8484ab
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/config/WebSocketServer.java
@@ -0,0 +1,49 @@
+package com.iflytop.gd.infrastructure.config;
+
+
+import jakarta.websocket.*;
+import jakarta.websocket.server.ServerEndpoint;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+@Slf4j
+@ServerEndpoint("/ws")
+@Component
+public class WebSocketServer {
+
+ private static final Set sessions = Collections.synchronizedSet(new HashSet<>());
+
+ public static void sendMessageToClients(String message) {
+ synchronized (sessions) {
+ for (Session session : sessions) {
+ try {
+ session.getBasicRemote().sendText(message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ @OnOpen
+ public void onOpen(Session session) {
+ sessions.add(session);
+ }
+
+ @OnMessage
+ public void onMessage(String message, Session session) {
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ sessions.remove(session); // 移除关闭连接的 Session
+ }
+
+ @OnError
+ public void onError(Throwable error) {
+ }
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/repository/base/BaseEntity.java b/src/main/java/com/iflytop/gd/infrastructure/repository/base/BaseEntity.java
new file mode 100644
index 0000000..1e73461
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/repository/base/BaseEntity.java
@@ -0,0 +1,44 @@
+package com.iflytop.gd.infrastructure.repository.base;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 基础实体类
+ * 实体类的基类,包含了实体类的公共属性,如创建时间、更新时间、逻辑删除标识等
+ */
+@Data
+public class BaseEntity implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 创建时间
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 更新时间
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/repository/base/BasePageQuery.java b/src/main/java/com/iflytop/gd/infrastructure/repository/base/BasePageQuery.java
new file mode 100644
index 0000000..0661b0e
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/repository/base/BasePageQuery.java
@@ -0,0 +1,26 @@
+package com.iflytop.gd.infrastructure.repository.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 基础分页请求对象
+ */
+@Data
+@Schema
+public class BasePageQuery implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "页码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private int pageNum = 1;
+
+ @Schema(description = "每页记录数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+ private int pageSize = 10;
+
+
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/repository/base/IBaseEnum.java b/src/main/java/com/iflytop/gd/infrastructure/repository/base/IBaseEnum.java
new file mode 100644
index 0000000..3da4bad
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/repository/base/IBaseEnum.java
@@ -0,0 +1,84 @@
+package com.iflytop.gd.infrastructure.repository.base;
+
+
+import cn.hutool.core.util.ObjectUtil;
+
+import java.util.EnumSet;
+import java.util.Objects;
+
+/**
+ * 枚举通用接口
+ */
+public interface IBaseEnum {
+
+ /**
+ * 根据值获取枚举
+ *
+ * @param value
+ * @param clazz
+ * @param 枚举
+ * @return
+ */
+ static & IBaseEnum> E getEnumByValue(Object value, Class clazz) {
+ Objects.requireNonNull(value);
+ EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
+ E matchEnum = allEnums.stream()
+ .filter(e -> ObjectUtil.equal(e.getValue(), value))
+ .findFirst()
+ .orElse(null);
+ return matchEnum;
+ }
+
+ /**
+ * 根据文本标签获取值
+ *
+ * @param value
+ * @param clazz
+ * @param
+ * @return
+ */
+ static & IBaseEnum> String getLabelByValue(Object value, Class clazz) {
+ Objects.requireNonNull(value);
+ EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
+ E matchEnum = allEnums.stream()
+ .filter(e -> ObjectUtil.equal(e.getValue(), value))
+ .findFirst()
+ .orElse(null);
+
+ String label = null;
+ if (matchEnum != null) {
+ label = matchEnum.getLabel();
+ }
+ return label;
+ }
+
+ /**
+ * 根据文本标签获取值
+ *
+ * @param label
+ * @param clazz
+ * @param
+ * @return
+ */
+ static & IBaseEnum> Object getValueByLabel(String label, Class clazz) {
+ Objects.requireNonNull(label);
+ EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
+ String finalLabel = label;
+ E matchEnum = allEnums.stream()
+ .filter(e -> ObjectUtil.equal(e.getLabel(), finalLabel))
+ .findFirst()
+ .orElse(null);
+
+ Object value = null;
+ if (matchEnum != null) {
+ value = matchEnum.getValue();
+ }
+ return value;
+ }
+
+ T getValue();
+
+ String getLabel();
+
+
+}
diff --git a/src/main/java/com/iflytop/gd/infrastructure/repository/entity/User.java b/src/main/java/com/iflytop/gd/infrastructure/repository/entity/User.java
new file mode 100644
index 0000000..726ea14
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/repository/entity/User.java
@@ -0,0 +1,43 @@
+package com.iflytop.gd.infrastructure.repository.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.iflytop.gd.infrastructure.repository.base.BaseEntity;
+import com.iflytop.gd.common.enums.Deleted;
+import com.iflytop.gd.common.enums.FixedUser;
+import com.iflytop.gd.common.enums.UsrRole;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 用户实体
+ */
+@EqualsAndHashCode(callSuper = true)
+@Schema(description = "用户")
+@TableName("user")
+@Data
+public class User extends BaseEntity {
+
+ @NotBlank()
+ @Schema(description = "用户名")
+ private String username;
+
+ @NotBlank()
+ @Schema(description = "昵称")
+ private String nickname;
+
+ @NotBlank()
+ @Schema(description = "密码")
+ private String password;
+
+ @Schema(description = "人员角色")
+ private UsrRole role;
+
+ @Schema(description = "是否删除(0-否 1-是)")
+ private Deleted deleted;
+
+ @Schema(description = "是否是系统固定用户")
+ private FixedUser fixedUser;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/infrastructure/repository/mapper/UserMapper.java b/src/main/java/com/iflytop/gd/infrastructure/repository/mapper/UserMapper.java
new file mode 100644
index 0000000..718a3e4
--- /dev/null
+++ b/src/main/java/com/iflytop/gd/infrastructure/repository/mapper/UserMapper.java
@@ -0,0 +1,13 @@
+package com.iflytop.gd.infrastructure.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iflytop.gd.infrastructure.repository.entity.User;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户持久层接口
+ */
+@Mapper
+public interface UserMapper extends BaseMapper {
+
+}
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
deleted file mode 100644
index 42d4f16..0000000
--- a/src/main/java/com/iflytop/gd/system/common/annotation/CheckedRunnable.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.iflytop.gd.system.common.annotation;
-
-@FunctionalInterface
-public interface CheckedRunnable {
- void run() throws Exception;
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java b/src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java
deleted file mode 100644
index e82ef59..0000000
--- a/src/main/java/com/iflytop/gd/system/common/annotation/CommandMapping.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iflytop.gd.system.common.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-public @interface CommandMapping {
- String value();
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/common/base/BaseEntity.java b/src/main/java/com/iflytop/gd/system/common/base/BaseEntity.java
deleted file mode 100644
index 0af2428..0000000
--- a/src/main/java/com/iflytop/gd/system/common/base/BaseEntity.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.iflytop.gd.system.common.base;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * 基础实体类
- * 实体类的基类,包含了实体类的公共属性,如创建时间、更新时间、逻辑删除标识等
- */
-@Data
-public class BaseEntity implements Serializable {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId(type = IdType.AUTO)
- private Long id;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime createTime;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime updateTime;
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/base/BasePageQuery.java b/src/main/java/com/iflytop/gd/system/common/base/BasePageQuery.java
deleted file mode 100644
index f53725c..0000000
--- a/src/main/java/com/iflytop/gd/system/common/base/BasePageQuery.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.iflytop.gd.system.common.base;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-
-/**
- * 基础分页请求对象
- */
-@Data
-@Schema
-public class BasePageQuery implements Serializable {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- @Schema(description = "页码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
- private int pageNum = 1;
-
- @Schema(description = "每页记录数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
- private int pageSize = 10;
-
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/base/IBaseEnum.java b/src/main/java/com/iflytop/gd/system/common/base/IBaseEnum.java
deleted file mode 100644
index 72ff589..0000000
--- a/src/main/java/com/iflytop/gd/system/common/base/IBaseEnum.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.iflytop.gd.system.common.base;
-
-
-import cn.hutool.core.util.ObjectUtil;
-
-import java.util.EnumSet;
-import java.util.Objects;
-
-/**
- * 枚举通用接口
- */
-public interface IBaseEnum {
-
- /**
- * 根据值获取枚举
- *
- * @param value
- * @param clazz
- * @param 枚举
- * @return
- */
- static & IBaseEnum> E getEnumByValue(Object value, Class clazz) {
- Objects.requireNonNull(value);
- EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
- E matchEnum = allEnums.stream()
- .filter(e -> ObjectUtil.equal(e.getValue(), value))
- .findFirst()
- .orElse(null);
- return matchEnum;
- }
-
- /**
- * 根据文本标签获取值
- *
- * @param value
- * @param clazz
- * @param
- * @return
- */
- static & IBaseEnum> String getLabelByValue(Object value, Class clazz) {
- Objects.requireNonNull(value);
- EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
- E matchEnum = allEnums.stream()
- .filter(e -> ObjectUtil.equal(e.getValue(), value))
- .findFirst()
- .orElse(null);
-
- String label = null;
- if (matchEnum != null) {
- label = matchEnum.getLabel();
- }
- return label;
- }
-
- /**
- * 根据文本标签获取值
- *
- * @param label
- * @param clazz
- * @param
- * @return
- */
- static & IBaseEnum> Object getValueByLabel(String label, Class clazz) {
- Objects.requireNonNull(label);
- EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
- String finalLabel = label;
- E matchEnum = allEnums.stream()
- .filter(e -> ObjectUtil.equal(e.getLabel(), finalLabel))
- .findFirst()
- .orElse(null);
-
- Object value = null;
- if (matchEnum != null) {
- value = matchEnum.getValue();
- }
- return value;
- }
-
- T getValue();
-
- String getLabel();
-
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java b/src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java
deleted file mode 100644
index cdff747..0000000
--- a/src/main/java/com/iflytop/gd/system/common/constant/WebSocketMessageType.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.iflytop.gd.system.common.constant;
-
-public class WebSocketMessageType {
- /**
- * 设备状态
- */
- public static final String STATUS = "status";
- /**
- * 设备报警
- */
- public static final String ALARM = "alarm";
- /**
- * 设备指令反馈
- */
- public static final String CMD = "cmd";
- /**
- * 工艺执行反馈
- */
- public static final String CRAFTS = "crafts";
- /**
- * 容器剩余状态
- */
- public static final String CONTAINER = "container";
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/enums/Deleted.java b/src/main/java/com/iflytop/gd/system/common/enums/Deleted.java
deleted file mode 100644
index 13ffb89..0000000
--- a/src/main/java/com/iflytop/gd/system/common/enums/Deleted.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iflytop.gd.system.common.enums;
-
-import lombok.Getter;
-
-/**
- * 删除状态枚举
- */
-@Getter
-public enum Deleted {
- ENABLE,
- DISABLE
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/enums/FixedUser.java b/src/main/java/com/iflytop/gd/system/common/enums/FixedUser.java
deleted file mode 100644
index 8e8d208..0000000
--- a/src/main/java/com/iflytop/gd/system/common/enums/FixedUser.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iflytop.gd.system.common.enums;
-
-import lombok.Getter;
-
-/**
- * 系統固定用户
- */
-@Getter
-public enum FixedUser {
- ENABLE,
- DISABLE
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/enums/UsrRole.java b/src/main/java/com/iflytop/gd/system/common/enums/UsrRole.java
deleted file mode 100644
index e8d676b..0000000
--- a/src/main/java/com/iflytop/gd/system/common/enums/UsrRole.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.iflytop.gd.system.common.enums;
-
-public enum UsrRole {
- ADMIN,
- DEVELOPER,
- USER;
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/common/exception/AppException.java b/src/main/java/com/iflytop/gd/system/common/exception/AppException.java
deleted file mode 100644
index 28e634e..0000000
--- a/src/main/java/com/iflytop/gd/system/common/exception/AppException.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iflytop.gd.system.common.exception;
-
-import com.iflytop.gd.system.common.result.IResultCode;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class AppException extends RuntimeException {
- private final IResultCode resultCode;
-
- public AppException(IResultCode resultCode) {
- super(resultCode.getMsg());
- this.resultCode = resultCode;
- }
-
- @Override
- public String toString() {
- return "AppException{" + "code='" + resultCode.getCode() + ", msg=" + resultCode.getMsg() + '}';
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/common/result/IResultCode.java b/src/main/java/com/iflytop/gd/system/common/result/IResultCode.java
deleted file mode 100644
index a4d80f3..0000000
--- a/src/main/java/com/iflytop/gd/system/common/result/IResultCode.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iflytop.gd.system.common.result;
-
-/**
- * 响应码接口
- **/
-public interface IResultCode {
-
- String getCode();
-
- String getMsg();
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/result/PageResult.java b/src/main/java/com/iflytop/gd/system/common/result/PageResult.java
deleted file mode 100644
index 8deb6b6..0000000
--- a/src/main/java/com/iflytop/gd/system/common/result/PageResult.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.iflytop.gd.system.common.result;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 分页响应结构体
- */
-@Data
-public class PageResult implements Serializable {
-
- private String code;
-
- private Data data;
-
- private String msg;
-
- public static PageResult success(IPage page) {
- PageResult result = new PageResult<>();
- result.setCode(ResultCode.SUCCESS.getCode());
-
- Data data = new Data<>();
- data.setList(page.getRecords());
- data.setTotal(page.getTotal());
-
- result.setData(data);
- result.setMsg(ResultCode.SUCCESS.getMsg());
- return result;
- }
-
- @lombok.Data
- public static class Data {
-
- private List list;
-
- private long total;
-
- }
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/result/Result.java b/src/main/java/com/iflytop/gd/system/common/result/Result.java
deleted file mode 100644
index b44497d..0000000
--- a/src/main/java/com/iflytop/gd/system/common/result/Result.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.iflytop.gd.system.common.result;
-
-import cn.hutool.core.util.StrUtil;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 统一响应结构体
- **/
-@Data
-public class Result implements Serializable {
-
- private String code;
-
- private T data;
-
- private String msg;
-
- public static Result success() {
- return success(null);
- }
-
- public static Result success(T data) {
- Result result = new Result<>();
- result.setCode(ResultCode.SUCCESS.getCode());
- result.setMsg(ResultCode.SUCCESS.getMsg());
- result.setData(data);
- return result;
- }
-
- public static Result failed() {
- return result(ResultCode.SYSTEM_ERROR.getCode(), ResultCode.SYSTEM_ERROR.getMsg(), null);
- }
-
- public static Result failed(String msg) {
- return result(ResultCode.SYSTEM_ERROR.getCode(), msg, null);
- }
-
- public static Result judge(boolean status) {
- if (status) {
- return success();
- } else {
- return failed();
- }
- }
-
- public static Result failed(IResultCode resultCode) {
- return result(resultCode.getCode(), resultCode.getMsg(), null);
- }
-
- public static Result failed(IResultCode resultCode, String msg) {
- return result(resultCode.getCode(), StrUtil.isNotBlank(msg) ? msg : resultCode.getMsg(), null);
- }
-
- public static Result failed(String code, String msg) {
- return result(code, msg, null);
- }
-
- private static Result result(IResultCode resultCode, T data) {
- return result(resultCode.getCode(), resultCode.getMsg(), data);
- }
-
- private static Result result(String code, String msg, T data) {
- Result result = new Result<>();
- result.setCode(code);
- result.setData(data);
- result.setMsg(msg);
- return result;
- }
-
- public static boolean isSuccess(Result> result) {
- return result != null && ResultCode.SUCCESS.getCode().equals(result.getCode());
- }
-}
diff --git a/src/main/java/com/iflytop/gd/system/common/result/ResultCode.java b/src/main/java/com/iflytop/gd/system/common/result/ResultCode.java
deleted file mode 100644
index 5def4f8..0000000
--- a/src/main/java/com/iflytop/gd/system/common/result/ResultCode.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.iflytop.gd.system.common.result;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * 统一前端响应码定义
- */
-@Getter
-@AllArgsConstructor
-public enum ResultCode implements IResultCode, Serializable {
- //================================ 通用 =================================
- SUCCESS("0", "成功"),
- FAILED("-1", "未知错误"),
-
- //============================ 1xxx:请求 & 参数 ============================
- INVALID_PARAMETER("1000", "参数无效或缺失"),
- PARAMETER_TYPE_MISMATCH("1001", "参数类型不匹配"),
- PARAMETER_OUT_OF_RANGE("1002", "参数超出允许范围"),
-
- //============================ 2xxx:认证 & 授权 ============================
- UNAUTHORIZED("2000", "未认证或登录失效"),
- FORBIDDEN("2001", "无访问权限"),
- TOKEN_EXPIRED("2002", "Token 已过期"),
- TOKEN_INVALID("2003", "Token 无效"),
-
- //============================ 3xxx:资源访问 ============================
- NOT_FOUND("3000", "资源不存在"),
- METHOD_NOT_ALLOWED("3001", "不支持的请求方法"),
-
- //============================ 4xxx:业务错误 ============================
- USER_NOT_FOUND("4000", "用户不存在"),
- USER_ALREADY_EXISTS("4001", "用户已存在"),
- INVALID_CREDENTIALS("4002", "用户名或密码错误"),
- OPERATION_NOT_ALLOWED("4003", "业务操作不允许"),
- DATA_ALREADY_EXISTS("4004", "数据已存在"),
- //============================ 5xxx:系统 & 第三方 ============================
- SYSTEM_ERROR("5000", "系统内部错误"),
- SERVICE_UNAVAILABLE("5001", "服务暂不可用"),
- EXTERNAL_API_ERROR("5002", "第三方服务调用失败");
-
- /** 状态码 */
- private final String code;
- /** 提示信息 */
- private final String msg;
-
- @Override
- public String getCode() {
- return code;
- }
-
- @Override
- public String getMsg() {
- return msg;
- }
-
- /**
- * 根据 code 获取枚举
- */
- public static ResultCode parse(String code) {
- for (ResultCode item : values()) {
- if (item.code.equals(code)) {
- return item;
- }
- }
- return FAILED;
- }
-
- @Override
- public String toString() {
- return "{\"code\":\"" + code + "\", \"msg\":\"" + msg + "\"}";
- }
-}
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
deleted file mode 100644
index f2f69f7..0000000
--- a/src/main/java/com/iflytop/gd/system/common/utils/LambdaUtil.java
+++ /dev/null
@@ -1,15 +0,0 @@
-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/config/MybatisPlusConfig.java b/src/main/java/com/iflytop/gd/system/config/MybatisPlusConfig.java
deleted file mode 100644
index 0c0a462..0000000
--- a/src/main/java/com/iflytop/gd/system/config/MybatisPlusConfig.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.iflytop.gd.system.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import com.iflytop.gd.system.handler.MyMetaObjectHandler;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-/**
- *
- */
-@EnableTransactionManagement
-@Configuration
-public class MybatisPlusConfig {
-
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- // 乐观锁插件
- interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
- // 分页插件
- interceptor.addInnerInterceptor(paginationInnerInterceptor());
-
- return interceptor;
- }
-
- /**
- * 分页插件,自动识别数据库类型
- * ...
- */
- public PaginationInnerInterceptor paginationInnerInterceptor() {
- PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
- // 设置数据库类型
- paginationInnerInterceptor.setDbType(DbType.SQLITE);
- // 设置最大单页限制数量,默认 500 条,-1 不受限制
- paginationInnerInterceptor.setMaxLimit(-1L);
- return paginationInnerInterceptor;
- }
-
- /**
- * 乐观锁插件
- * ...
- */
- public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
- return new OptimisticLockerInnerInterceptor();
- }
-
- /**
- * 自动填充数据库创建人、创建时间、更新人、更新时间
- */
- @Bean
- public GlobalConfig globalConfig() {
- GlobalConfig globalConfig = new GlobalConfig();
- globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
- return globalConfig;
- }
-}
diff --git a/src/main/java/com/iflytop/gd/system/config/SwaggerConfig.java b/src/main/java/com/iflytop/gd/system/config/SwaggerConfig.java
deleted file mode 100644
index 5bc5f07..0000000
--- a/src/main/java/com/iflytop/gd/system/config/SwaggerConfig.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.iflytop.gd.system.config;
-
-import cn.hutool.core.util.ArrayUtil;
-import io.swagger.v3.oas.models.Components;
-import io.swagger.v3.oas.models.OpenAPI;
-import io.swagger.v3.oas.models.info.Info;
-import io.swagger.v3.oas.models.security.SecurityRequirement;
-import io.swagger.v3.oas.models.security.SecurityScheme;
-import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpHeaders;
-import org.springframework.util.AntPathMatcher;
-
-import java.util.stream.Stream;
-
-/***
- * 创建Swagger配置
- */
-@Configuration
-public class SwaggerConfig {
-
- @Bean
- public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
- return openApi -> {
- // 全局添加Authorization
- if (openApi.getPaths() != null) {
- openApi.getPaths().forEach((path, pathItem) -> {
-
- // 忽略认证的请求无需携带 Authorization
- String[] ignoreUrls = {"/api/auth/login"};
- if (ArrayUtil.isNotEmpty(ignoreUrls)) {
- // Ant 匹配忽略的路径,不添加Authorization
- AntPathMatcher antPathMatcher = new AntPathMatcher();
- if (Stream.of(ignoreUrls).anyMatch(ignoreUrl -> antPathMatcher.match(ignoreUrl, path))) {
- return;
- }
- }
-
- // 其他接口统一添加Authorization
-// pathItem.readOperations()
-// .forEach(operation ->
-// operation.addSecurityItem(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION))
-// );
- });
- }
- };
- }
-
- @Bean
- public OpenAPI customOpenAPI() {
- return new OpenAPI()
- .info(new Info()
- .title("系统API")
- .version("1.0")) // 配置全局鉴权参数-Authorize
- .components(new Components()
- .addSecuritySchemes(HttpHeaders.AUTHORIZATION,
- new SecurityScheme()
- .name(HttpHeaders.AUTHORIZATION)
- .type(SecurityScheme.Type.APIKEY)
- .in(SecurityScheme.In.HEADER)
- .scheme("Bearer")
- .bearerFormat("JWT")
- )
- );
- }
-
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/config/WebConfig.java b/src/main/java/com/iflytop/gd/system/config/WebConfig.java
deleted file mode 100644
index 633d918..0000000
--- a/src/main/java/com/iflytop/gd/system/config/WebConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.iflytop.gd.system.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-@Configuration
-public class WebConfig implements WebMvcConfigurer {
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/api/**")
- .allowedOrigins("*")
- .allowedMethods("GET", "POST", "PUT", "DELETE")
- .allowedHeaders("*");
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/config/WebSocketConfig.java b/src/main/java/com/iflytop/gd/system/config/WebSocketConfig.java
deleted file mode 100644
index 24f1bad..0000000
--- a/src/main/java/com/iflytop/gd/system/config/WebSocketConfig.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.iflytop.gd.system.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.socket.server.standard.ServerEndpointExporter;
-
-@Configuration
-public class WebSocketConfig {
-
- @Bean
- public ServerEndpointExporter serverEndpointExporter() {
- return new ServerEndpointExporter();
- }
-}
diff --git a/src/main/java/com/iflytop/gd/system/config/WebSocketServer.java b/src/main/java/com/iflytop/gd/system/config/WebSocketServer.java
deleted file mode 100644
index ddf7634..0000000
--- a/src/main/java/com/iflytop/gd/system/config/WebSocketServer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.iflytop.gd.system.config;
-
-
-import jakarta.websocket.*;
-import jakarta.websocket.server.ServerEndpoint;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-@Slf4j
-@ServerEndpoint("/ws")
-@Component
-public class WebSocketServer {
-
- private static final Set sessions = Collections.synchronizedSet(new HashSet<>());
-
- public static void sendMessageToClients(String message) {
- synchronized (sessions) {
- for (Session session : sessions) {
- try {
- session.getBasicRemote().sendText(message);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
-
- @OnOpen
- public void onOpen(Session session) {
- sessions.add(session);
- }
-
- @OnMessage
- public void onMessage(String message, Session session) {
- }
-
- @OnClose
- public void onClose(Session session) {
- sessions.remove(session); // 移除关闭连接的 Session
- }
-
- @OnError
- public void onError(Throwable error) {
- }
-}
diff --git a/src/main/java/com/iflytop/gd/system/controller/UserController.java b/src/main/java/com/iflytop/gd/system/controller/UserController.java
deleted file mode 100644
index 5e56094..0000000
--- a/src/main/java/com/iflytop/gd/system/controller/UserController.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.iflytop.gd.system.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.iflytop.gd.system.common.base.BasePageQuery;
-import com.iflytop.gd.system.common.result.PageResult;
-import com.iflytop.gd.system.common.result.Result;
-import com.iflytop.gd.system.common.result.ResultCode;
-import com.iflytop.gd.system.model.entity.User;
-import com.iflytop.gd.system.service.UserService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
-
-@Tag(name = "用户接口")
-@RestController
-@RequestMapping("/api/user")
-@RequiredArgsConstructor
-@Slf4j
-public class UserController {
- private final UserService userService;
-
- @Operation(summary = "用户列表")
- @GetMapping("/list")
- public PageResult getAllUsers(BasePageQuery pageQuery) {
- IPage result = userService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null);
- return PageResult.success(result);
- }
-
- @Operation(summary = "添加新用户")
- @PostMapping("")
- public Result addUser(@RequestBody User user) {
- User existingUser = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername, user.getUsername()));
- if (existingUser == null) {
- boolean isSuccess = userService.save(user);
- if (isSuccess) {
- return Result.success();
- }
- } else {
- return Result.failed(ResultCode.USER_ALREADY_EXISTS);
- }
- return Result.failed();
- }
-
- @Operation(summary = "当前用户信息")
- @GetMapping("/current")
- public Result currentUser() {
- return Result.success(userService.getCurrentUser());
- }
-
- @Operation(summary = "更新用户信息")
- @PutMapping("")
- public Result updateUser(@RequestBody User user) {
- boolean isSuccess = userService.updateById(user);
- if (isSuccess) {
- return Result.success();
- }
- return Result.failed();
- }
-
- @Operation(summary = "删除用户")
- @DeleteMapping("/{ids}")
- public Result deleteUser(@Parameter(description = "用户ID,多个以英文逗号(,)分割") @PathVariable String ids) {
- boolean isSuccess = userService.deleteUser(ids);
- if (isSuccess) {
- return Result.success();
- }
- return Result.failed();
- }
-}
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
deleted file mode 100644
index 052e314..0000000
--- a/src/main/java/com/iflytop/gd/system/core/cmd/BaseCommandHandler.java
+++ /dev/null
@@ -1,18 +0,0 @@
-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/system/core/cmd/CommandHandler.java b/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandler.java
deleted file mode 100644
index cae8795..0000000
--- a/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandler.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.iflytop.gd.system.core.cmd;
-
-import com.iflytop.gd.app.model.dto.CmdDTO;
-
-import java.util.concurrent.CompletableFuture;
-
-public interface CommandHandler {
- CompletableFuture handle(CmdDTO cmdDTO);
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java b/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java
deleted file mode 100644
index d3d91e7..0000000
--- a/src/main/java/com/iflytop/gd/system/core/cmd/CommandHandlerRegistry.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.iflytop.gd.system.core.cmd;
-
-import com.iflytop.gd.system.common.annotation.CommandMapping;
-import io.micrometer.common.lang.NonNull;
-import jakarta.annotation.PostConstruct;
-import org.springframework.aop.support.AopUtils;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Component
-public class CommandHandlerRegistry implements ApplicationContextAware {
-
- private final Map handlerMap = new HashMap<>();
- private ApplicationContext applicationContext;
-
- @Override
- public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
-
- @PostConstruct
- public void init() {
- Map beans = applicationContext.getBeansWithAnnotation(CommandMapping.class);
- for (Object bean : beans.values()) {
- // 获取实际目标类,而不是代理类
- Class> targetClass = AopUtils.getTargetClass(bean);
- CommandMapping mapping = targetClass.getAnnotation(CommandMapping.class);
- if (mapping != null && bean instanceof CommandHandler) {
- handlerMap.put(mapping.value(), (CommandHandler) bean);
- }
- }
- }
-
- public CommandHandler getHandler(String command) {
- return handlerMap.get(command);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java b/src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java
deleted file mode 100644
index 0a6ae18..0000000
--- a/src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.iflytop.gd.system.handler;
-
-import com.iflytop.gd.system.common.exception.AppException;
-import com.iflytop.gd.system.common.result.Result;
-import com.iflytop.gd.system.common.result.ResultCode;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-@Slf4j
-@RestControllerAdvice
-public class GlobalExceptionHandler {
-
- @ExceptionHandler(Exception.class)
- public Result> handleException(Exception ex) {
- if (ex instanceof AppException ae) {
- log.warn("AppException:", ae);
- return Result.failed(ae.getResultCode());
- }
- log.error("Unhandled exception:", ex);
- return Result.failed(ResultCode.SYSTEM_ERROR);
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/handler/MyMetaObjectHandler.java b/src/main/java/com/iflytop/gd/system/handler/MyMetaObjectHandler.java
deleted file mode 100644
index a838157..0000000
--- a/src/main/java/com/iflytop/gd/system/handler/MyMetaObjectHandler.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.iflytop.gd.system.handler;
-
-import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import org.apache.ibatis.reflection.MetaObject;
-import org.springframework.stereotype.Component;
-
-import java.time.LocalDateTime;
-
-/**
- * mybatis-plus 字段自动填充
- */
-@Component
-public class MyMetaObjectHandler implements MetaObjectHandler {
-
- /**
- * 新增填充创建时间
- *
- * @param metaObject 元数据
- */
- @Override
- public void insertFill(MetaObject metaObject) {
- this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
- this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
- }
-
- /**
- * 更新填充更新时间
- *
- * @param metaObject 元数据
- */
- @Override
- public void updateFill(MetaObject metaObject) {
- this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
- }
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/mapper/UserMapper.java b/src/main/java/com/iflytop/gd/system/mapper/UserMapper.java
deleted file mode 100644
index 6c3c7d4..0000000
--- a/src/main/java/com/iflytop/gd/system/mapper/UserMapper.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.iflytop.gd.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.iflytop.gd.system.model.entity.User;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 用户持久层接口
- */
-@Mapper
-public interface UserMapper extends BaseMapper {
-
-}
diff --git a/src/main/java/com/iflytop/gd/system/model/dto/WebsocketResult.java b/src/main/java/com/iflytop/gd/system/model/dto/WebsocketResult.java
deleted file mode 100644
index 020abd5..0000000
--- a/src/main/java/com/iflytop/gd/system/model/dto/WebsocketResult.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.iflytop.gd.system.model.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-public class WebsocketResult {
- /**
- * 推送类型(指令 cmd,报警 warn ,状态 status)
- */
- @Schema(description = "推送类型(指令 cmd,报警 warn ,状态 status)")
- private String type;
- /**
- * 执行结果
- */
- @Schema(description = "推送数据")
- private Object data;
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/model/entity/User.java b/src/main/java/com/iflytop/gd/system/model/entity/User.java
deleted file mode 100644
index 37d8a0f..0000000
--- a/src/main/java/com/iflytop/gd/system/model/entity/User.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.iflytop.gd.system.model.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.iflytop.gd.system.common.base.BaseEntity;
-import com.iflytop.gd.system.common.enums.Deleted;
-import com.iflytop.gd.system.common.enums.FixedUser;
-import com.iflytop.gd.system.common.enums.UsrRole;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 用户实体
- */
-@EqualsAndHashCode(callSuper = true)
-@Schema(description = "用户")
-@TableName("user")
-@Data
-public class User extends BaseEntity {
-
- @NotBlank()
- @Schema(description = "用户名")
- private String username;
-
- @NotBlank()
- @Schema(description = "昵称")
- private String nickname;
-
- @NotBlank()
- @Schema(description = "密码")
- private String password;
-
- @Schema(description = "人员角色")
- private UsrRole role;
-
- @Schema(description = "是否删除(0-否 1-是)")
- private Deleted deleted;
-
- @Schema(description = "是否是系统固定用户")
- private FixedUser fixedUser;
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/gd/system/service/UserService.java b/src/main/java/com/iflytop/gd/system/service/UserService.java
index 0f271e9..23f45c7 100644
--- a/src/main/java/com/iflytop/gd/system/service/UserService.java
+++ b/src/main/java/com/iflytop/gd/system/service/UserService.java
@@ -1,8 +1,8 @@
package com.iflytop.gd.system.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.iflytop.gd.system.mapper.UserMapper;
-import com.iflytop.gd.system.model.entity.User;
+import com.iflytop.gd.infrastructure.repository.mapper.UserMapper;
+import com.iflytop.gd.infrastructure.repository.entity.User;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
diff --git a/src/main/java/com/iflytop/gd/system/service/WebSocketService.java b/src/main/java/com/iflytop/gd/system/service/WebSocketService.java
deleted file mode 100644
index 0b6cfb0..0000000
--- a/src/main/java/com/iflytop/gd/system/service/WebSocketService.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.iflytop.gd.system.service;
-
-import cn.hutool.json.JSONUtil;
-import com.iflytop.gd.app.common.enums.CraftStates;
-import com.iflytop.gd.system.config.WebSocketServer;
-import com.iflytop.gd.system.model.dto.WebsocketResult;
-import org.springframework.stereotype.Service;
-
-@Service
-public class WebSocketService {
-
- public void push(String type, Object data) {
- WebsocketResult websocketResult = new WebsocketResult();
- websocketResult.setType(type);
- websocketResult.setData(data);
- WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(websocketResult));
- }
-
-}