From 87741fd8c2c1963fcf164f72ecb7562a8910fdaa Mon Sep 17 00:00:00 2001 From: zyh Date: Wed, 27 Aug 2025 21:39:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=A9=BA=E9=97=B2=E7=8A=B6=E6=80=81=E6=A3=80=E6=B5=8B=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要修改: 1. 在SystemConfigService中新增获取设备空闲状态的方法。 2. 更新DeviceStatusService和DeviceStatusCheckService,使用可配置的空闲状态字符串替代硬编码。 3. 在文档中添加设备检测相关配置的说明,提升系统灵活性和可维护性。 技术细节: - 通过引入设备空闲状态的配置,支持多语言环境下的设备状态标识,便于系统维护和扩展。 --- ...abase_migration_add_device_idle_status.sql | 26 +++++++++ docs/系统配置说明.md | 27 +++++++++- .../service/admin/SystemConfigService.java | 5 ++ .../device/DeviceStatusCheckService.java | 8 ++- .../service/device/DeviceStatusService.java | 8 ++- test_device_idle_config.http | 53 +++++++++++++++++++ 6 files changed, 122 insertions(+), 5 deletions(-) create mode 100644 docs/database_migration_add_device_idle_status.sql create mode 100644 test_device_idle_config.http diff --git a/docs/database_migration_add_device_idle_status.sql b/docs/database_migration_add_device_idle_status.sql new file mode 100644 index 0000000..08b6f83 --- /dev/null +++ b/docs/database_migration_add_device_idle_status.sql @@ -0,0 +1,26 @@ +-- ===================================================== +-- 添加设备空闲状态检测系统配置项 +-- 创建日期: 2024-01-15 +-- 描述: 添加可配置的设备空闲状态字符串,用于检测设备是否空闲 +-- ===================================================== + +-- 插入设备空闲状态配置项 +INSERT INTO `system_config` (`config_key`, `config_value`, `config_type`, `description`, `is_system`, `created_at`, `updated_at`) +VALUES +( + 'device.idle_status', + '空闲', + 'STRING', + '设备空闲状态的字符串标识,用于判断设备是否处于空闲状态', + 1, + CURRENT_TIMESTAMP(3), + CURRENT_TIMESTAMP(3) +) +ON DUPLICATE KEY UPDATE + `config_value` = VALUES(`config_value`), + `description` = VALUES(`description`), + `is_system` = VALUES(`is_system`), + `updated_at` = CURRENT_TIMESTAMP(3); + +-- 验证插入结果 +SELECT * FROM `system_config` WHERE `config_key` = 'device.idle_status'; diff --git a/docs/系统配置说明.md b/docs/系统配置说明.md index 86569f0..14bb628 100644 --- a/docs/系统配置说明.md +++ b/docs/系统配置说明.md @@ -31,6 +31,9 @@ - `script.server_url`: 脚本服务器地址(默认值:http://36.138.184.60:12345) - `script.qr_path_template`: 二维码图片路径模板(默认值:/{machineId}/二维码.png) +### 设备检测相关配置 +- `device.idle_status`: 设备空闲状态的字符串标识(默认值:空闲) + ## 参数说明 ### 链接生成接口参数 @@ -119,6 +122,9 @@ Integer refreshInterval = systemConfigService.getRefreshInterval(); // 获取脚本服务器地址 String serverUrl = systemConfigService.getScriptServerUrl(); + +// 获取设备空闲状态字符串 +String idleStatus = systemConfigService.getDeviceIdleStatus(); ``` ### 动态修改配置 @@ -148,4 +154,23 @@ systemConfigService.updateConfig(config); - 游戏规则配置 - 第三方服务配置 - 日志级别配置 -- 性能调优参数 \ No newline at end of file +- 性能调优参数 +- 设备状态检测相关配置 + +## 配置变更说明 + +### 设备空闲状态检测优化 + +为了提高系统的灵活性,将设备空闲状态的判断字符串从硬编码改为可配置: + +**影响的服务:** +- `DeviceStatusService`: 设备状态解析服务 +- `DeviceStatusCheckService`: 设备状态检查服务 + +**配置项:** +- `device.idle_status`: 用于判断设备是否空闲的字符串(默认:空闲) + +**使用场景:** +- 当设备管理系统返回的空闲状态字符串发生变化时,只需修改配置即可 +- 支持多语言环境下的设备状态标识 +- 便于系统维护和扩展 \ No newline at end of file diff --git a/src/main/java/com/gameplatform/server/service/admin/SystemConfigService.java b/src/main/java/com/gameplatform/server/service/admin/SystemConfigService.java index 57c3e56..d0285d2 100644 --- a/src/main/java/com/gameplatform/server/service/admin/SystemConfigService.java +++ b/src/main/java/com/gameplatform/server/service/admin/SystemConfigService.java @@ -116,6 +116,11 @@ public class SystemConfigService { return getConfigValue("user.assets_base_url", "http://36.138.184.60:12345"); } + // 获取设备检测相关配置 + public String getDeviceIdleStatus() { + return getConfigValue("device.idle_status", "空闲"); + } + // 批量更新配置 public boolean updateConfigs(List configs) { if (configs == null || configs.isEmpty()) { diff --git a/src/main/java/com/gameplatform/server/service/device/DeviceStatusCheckService.java b/src/main/java/com/gameplatform/server/service/device/DeviceStatusCheckService.java index e33496f..6a6c13f 100644 --- a/src/main/java/com/gameplatform/server/service/device/DeviceStatusCheckService.java +++ b/src/main/java/com/gameplatform/server/service/device/DeviceStatusCheckService.java @@ -2,6 +2,7 @@ package com.gameplatform.server.service.device; import com.gameplatform.server.mapper.agent.LinkTaskMapper; import com.gameplatform.server.model.entity.agent.LinkTask; +import com.gameplatform.server.service.admin.SystemConfigService; import com.gameplatform.server.service.external.ScriptClient; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -17,10 +18,12 @@ public class DeviceStatusCheckService { private final ScriptClient scriptClient; private final LinkTaskMapper linkTaskMapper; + private final SystemConfigService systemConfigService; - public DeviceStatusCheckService(ScriptClient scriptClient, LinkTaskMapper linkTaskMapper) { + public DeviceStatusCheckService(ScriptClient scriptClient, LinkTaskMapper linkTaskMapper, SystemConfigService systemConfigService) { this.scriptClient = scriptClient; this.linkTaskMapper = linkTaskMapper; + this.systemConfigService = systemConfigService; } /** @@ -82,7 +85,8 @@ public class DeviceStatusCheckService { if (f1.get("val") != null) { String status = f1.get("val").toString(); info.setStatus(status); - info.setIdle("空闲".equals(status)); + String idleStatus = systemConfigService.getDeviceIdleStatus(); + info.setIdle(idleStatus.equals(status)); } } diff --git a/src/main/java/com/gameplatform/server/service/device/DeviceStatusService.java b/src/main/java/com/gameplatform/server/service/device/DeviceStatusService.java index bdbe90d..90dc466 100644 --- a/src/main/java/com/gameplatform/server/service/device/DeviceStatusService.java +++ b/src/main/java/com/gameplatform/server/service/device/DeviceStatusService.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.gameplatform.server.model.dto.device.DeviceStatusResponse; +import com.gameplatform.server.service.admin.SystemConfigService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,12 +22,14 @@ public class DeviceStatusService { private static final Logger log = LoggerFactory.getLogger(DeviceStatusService.class); private final ObjectMapper objectMapper; + private final SystemConfigService systemConfigService; // 设备编号解析正则 private static final Pattern DEVICE_PATTERN = Pattern.compile("^(f|s|g|d|ss|gg)(\\d+)$"); - public DeviceStatusService(ObjectMapper objectMapper) { + public DeviceStatusService(ObjectMapper objectMapper, SystemConfigService systemConfigService) { this.objectMapper = objectMapper; + this.systemConfigService = systemConfigService; } /** @@ -128,7 +131,8 @@ public class DeviceStatusService { * 判断设备是否空闲 */ private boolean isDeviceAvailable(String val) { - return "空闲".equals(val); + String idleStatus = systemConfigService.getDeviceIdleStatus(); + return idleStatus.equals(val); } /** diff --git a/test_device_idle_config.http b/test_device_idle_config.http new file mode 100644 index 0000000..a762cb5 --- /dev/null +++ b/test_device_idle_config.http @@ -0,0 +1,53 @@ +### 测试设备空闲状态配置项 +### 测试前请确保已执行数据库迁移脚本: docs/database_migration_add_device_idle_status.sql + +### 1. 获取设备空闲状态配置 +GET http://localhost:8080/api/admin/config/key/device.idle_status +Authorization: Bearer {{token}} + +### 2. 创建设备空闲状态配置(如果不存在) +POST http://localhost:8080/api/admin/config +Content-Type: application/json +Authorization: Bearer {{token}} + +{ + "configKey": "device.idle_status", + "configValue": "空闲", + "configType": "STRING", + "description": "设备空闲状态的字符串标识,用于判断设备是否处于空闲状态", + "isSystem": true +} + +### 3. 更新设备空闲状态配置为其他值(测试灵活性) +PUT http://localhost:8080/api/admin/config/{{configId}} +Content-Type: application/json +Authorization: Bearer {{token}} + +{ + "configKey": "device.idle_status", + "configValue": "idle", + "configType": "STRING", + "description": "设备空闲状态的字符串标识,用于判断设备是否处于空闲状态", + "isSystem": true +} + +### 4. 恢复默认值 +PUT http://localhost:8080/api/admin/config/{{configId}} +Content-Type: application/json +Authorization: Bearer {{token}} + +{ + "configKey": "device.idle_status", + "configValue": "空闲", + "configType": "STRING", + "description": "设备空闲状态的字符串标识,用于判断设备是否处于空闲状态", + "isSystem": true +} + +### 5. 获取所有系统配置查看是否包含新配置项 +GET http://localhost:8080/api/admin/config/list?page=1&size=50 +Authorization: Bearer {{token}} + +### 6. 根据类型获取STRING类型配置 +GET http://localhost:8080/api/admin/config/type/STRING +Authorization: Bearer {{token}}