feat: 新增用户端配置获取和批量更新接口
主要修改: 1. 在SystemConfigController中新增获取用户端配置的接口。 2. 实现批量更新系统配置的接口,支持根据配置键进行更新。 3. 增强SystemConfigService,添加用户端相关配置的获取方法及配置值验证逻辑。 技术细节: - 新增的接口提升了系统配置管理的灵活性,支持批量操作和用户端配置的动态获取。
This commit is contained in:
@@ -5,6 +5,7 @@ import com.gameplatform.server.model.entity.admin.SystemConfig;
|
||||
import com.gameplatform.server.model.dto.admin.SystemConfigRequest;
|
||||
import com.gameplatform.server.model.dto.admin.SystemConfigResponse;
|
||||
import com.gameplatform.server.model.dto.admin.SystemConfigConverter;
|
||||
import com.gameplatform.server.model.dto.admin.BatchSystemConfigRequest;
|
||||
import com.gameplatform.server.service.admin.SystemConfigService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -13,6 +14,7 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/admin/config")
|
||||
@@ -117,4 +119,93 @@ public class SystemConfigController {
|
||||
public final String qrPathTemplate = systemConfigService.getQrPathTemplate();
|
||||
});
|
||||
}
|
||||
|
||||
@GetMapping("/user/config")
|
||||
@Operation(summary = "获取用户端配置", description = "获取用户端相关配置")
|
||||
public ResponseEntity<Object> getUserConfig() {
|
||||
return ResponseEntity.ok(new Object() {
|
||||
public final Integer qrExpireSeconds = systemConfigService.getUserQrExpireSeconds();
|
||||
public final Integer refreshWaitSeconds = systemConfigService.getUserRefreshWaitSeconds();
|
||||
public final Integer linkExpireHours = systemConfigService.getUserLinkExpireHours();
|
||||
public final String assetsBaseUrl = systemConfigService.getUserAssetsBaseUrl();
|
||||
});
|
||||
}
|
||||
|
||||
@PostMapping("/batch")
|
||||
@Operation(summary = "批量更新配置", description = "批量更新系统配置,支持根据配置键更新")
|
||||
public ResponseEntity<Object> batchUpdateConfigs(@RequestBody BatchSystemConfigRequest request) {
|
||||
if (request.getConfigs() == null || request.getConfigs().isEmpty()) {
|
||||
return ResponseEntity.badRequest().body(new Object() {
|
||||
public final boolean success = false;
|
||||
public final String message = "配置列表不能为空";
|
||||
});
|
||||
}
|
||||
|
||||
List<SystemConfig> configs = new ArrayList<>();
|
||||
List<String> validationErrors = new ArrayList<>();
|
||||
|
||||
for (BatchSystemConfigRequest.SystemConfigUpdateItem item : request.getConfigs()) {
|
||||
// 验证配置值
|
||||
if (item.getConfigType() != null && item.getConfigValue() != null) {
|
||||
if (!systemConfigService.validateConfigValue(item.getConfigType(), item.getConfigValue())) {
|
||||
validationErrors.add("配置键 " + item.getConfigKey() + " 的值格式不正确");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
SystemConfig config = new SystemConfig();
|
||||
config.setConfigKey(item.getConfigKey());
|
||||
config.setConfigValue(item.getConfigValue());
|
||||
config.setConfigType(item.getConfigType());
|
||||
config.setDescription(item.getDescription());
|
||||
configs.add(config);
|
||||
}
|
||||
|
||||
if (!validationErrors.isEmpty()) {
|
||||
return ResponseEntity.badRequest().body(new Object() {
|
||||
public final boolean success = false;
|
||||
public final String message = "配置验证失败";
|
||||
public final List<String> errors = validationErrors;
|
||||
});
|
||||
}
|
||||
|
||||
boolean success = systemConfigService.updateConfigs(configs);
|
||||
final boolean finalSuccess = success;
|
||||
final int finalUpdatedCount = configs.size();
|
||||
|
||||
return ResponseEntity.ok(new Object() {
|
||||
public final boolean success = finalSuccess;
|
||||
public final String message = finalSuccess ? "批量更新成功" : "批量更新失败";
|
||||
public final int updatedCount = finalUpdatedCount;
|
||||
});
|
||||
}
|
||||
|
||||
@PutMapping("/key/{configKey}")
|
||||
@Operation(summary = "根据键更新配置值", description = "根据配置键快速更新配置值")
|
||||
public ResponseEntity<Object> updateConfigByKey(
|
||||
@PathVariable String configKey,
|
||||
@RequestBody String configValue) {
|
||||
|
||||
// 先获取现有配置以验证类型
|
||||
SystemConfig existingConfig = systemConfigService.getConfigByKey(configKey);
|
||||
if (existingConfig == null) {
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
// 验证配置值格式
|
||||
if (!systemConfigService.validateConfigValue(existingConfig.getConfigType(), configValue)) {
|
||||
return ResponseEntity.badRequest().body(new Object() {
|
||||
public final boolean success = false;
|
||||
public final String message = "配置值格式不正确,期望类型: " + existingConfig.getConfigType();
|
||||
});
|
||||
}
|
||||
|
||||
boolean success = systemConfigService.updateConfigValueByKey(configKey, configValue);
|
||||
final boolean finalSuccess = success;
|
||||
|
||||
return ResponseEntity.ok(new Object() {
|
||||
public final boolean success = finalSuccess;
|
||||
public final String message = finalSuccess ? "更新成功" : "更新失败";
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user