From 06438b145dc6fa7f4cf14b99f6cee3325e5a8dee Mon Sep 17 00:00:00 2001 From: tjq Date: Sun, 25 Aug 2024 17:29:24 +0800 Subject: [PATCH] feat: dynamic server config #969 --- .../java/tech/powerjob/common/utils/CommonUtils.java | 9 +++++---- .../server/infrastructure/config/ConfigItem.java | 4 ++-- .../config/impl/DynamicServerConfigCrudServiceImpl.java | 2 +- .../persistence/remote/repository/SundryRepository.java | 6 +++++- .../server/web/controller/SystemConfigController.java | 2 ++ 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/powerjob-common/src/main/java/tech/powerjob/common/utils/CommonUtils.java b/powerjob-common/src/main/java/tech/powerjob/common/utils/CommonUtils.java index d787f337..94eaba0f 100644 --- a/powerjob-common/src/main/java/tech/powerjob/common/utils/CommonUtils.java +++ b/powerjob-common/src/main/java/tech/powerjob/common/utils/CommonUtils.java @@ -1,6 +1,7 @@ package tech.powerjob.common.utils; import tech.powerjob.common.OmsConstant; +import tech.powerjob.common.enums.ErrorCodes; import tech.powerjob.common.exception.PowerJobException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -123,21 +124,21 @@ public class CommonUtils { public static T requireNonNull(T obj, String msg) { if (obj == null) { - throw new PowerJobException(msg); + throw new PowerJobException(ErrorCodes.INVALID_REQUEST, msg); } if (obj instanceof String) { if (StringUtils.isEmpty((String) obj)) { - throw new PowerJobException(msg); + throw new PowerJobException(ErrorCodes.INVALID_REQUEST, msg); } } if (obj instanceof Collection) { if (CollectionUtils.isEmpty((Collection) obj)) { - throw new PowerJobException(msg); + throw new PowerJobException(ErrorCodes.INVALID_REQUEST, msg); } } if (obj instanceof Map) { if (MapUtils.isEmpty((Map) obj)) { - throw new PowerJobException(msg); + throw new PowerJobException(ErrorCodes.INVALID_REQUEST, msg); } } return obj; diff --git a/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/ConfigItem.java b/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/ConfigItem.java index 31c7e5b5..951ec8b6 100644 --- a/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/ConfigItem.java +++ b/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/ConfigItem.java @@ -12,7 +12,7 @@ import tech.powerjob.server.common.options.WebOptionAbility; @AllArgsConstructor public enum ConfigItem implements WebOptionAbility { - AUTH_LOGIN_TYPE_BLACKLIST("oms.auth.login-type.blacklist", "禁用的登录方式") + AUTH_LOGIN_TYPE_BLACKLIST("oms.auth.login-type.blacklist", "需要禁用的登录方式,多值逗号分割") ; @@ -27,6 +27,6 @@ public enum ConfigItem implements WebOptionAbility { @Override public String getLabel() { - return desc; + return String.format("%s(%s)", code, desc); } } diff --git a/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/impl/DynamicServerConfigCrudServiceImpl.java b/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/impl/DynamicServerConfigCrudServiceImpl.java index 695451cf..d2387607 100644 --- a/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/impl/DynamicServerConfigCrudServiceImpl.java +++ b/powerjob-server/powerjob-server-Infrastructure/src/main/java/tech/powerjob/server/infrastructure/config/impl/DynamicServerConfigCrudServiceImpl.java @@ -74,7 +74,7 @@ public class DynamicServerConfigCrudServiceImpl implements DynamicServerConfigCr @Override public void delete(String key) { - Optional deletedOpt = sundryRepository.deleteByPkeyAndSkey(PKEY, key); + Optional deletedOpt = sundryRepository.deleteByPkeyAndSkey(PKEY, key); if (deletedOpt.isPresent()) { log.info("[DynamicServerConfigCrudService] delete config[{}] successfully, origin data: {}", key, deletedOpt.get()); } else { diff --git a/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/remote/repository/SundryRepository.java b/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/remote/repository/SundryRepository.java index 41b70f37..48406361 100644 --- a/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/remote/repository/SundryRepository.java +++ b/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/remote/repository/SundryRepository.java @@ -1,8 +1,10 @@ package tech.powerjob.server.persistence.remote.repository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import tech.powerjob.server.persistence.remote.model.SundryDO; +import javax.transaction.Transactional; import java.util.List; import java.util.Optional; @@ -18,5 +20,7 @@ public interface SundryRepository extends JpaRepository { Optional findByPkeyAndSkey(String pkey, String skey); - Optional deleteByPkeyAndSkey(String pkey, String skey); + @Modifying + @Transactional(rollbackOn = Exception.class) + Optional deleteByPkeyAndSkey(String pkey, String skey); } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemConfigController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemConfigController.java index cea6ae88..3cc52727 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemConfigController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemConfigController.java @@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import tech.powerjob.common.response.ResultDTO; +import tech.powerjob.common.utils.CommonUtils; import tech.powerjob.server.auth.Permission; import tech.powerjob.server.auth.RoleScope; import tech.powerjob.server.auth.interceptor.ApiPermission; @@ -31,6 +32,7 @@ public class SystemConfigController { @PostMapping("/save") @ApiPermission(name = "Config-Save", roleScope = RoleScope.GLOBAL, requiredPermission = Permission.SU) public ResultDTO saveConfig(@RequestBody Config config) { + CommonUtils.requireNonNull(config.getKey(), "ConfigKey can't be null or empty!"); dynamicServerConfigCrudService.save(config); return ResultDTO.success(null); }