Explorar o código

添加 SiteOption, 用于动态设置和获取 env 和 appType 的值

reghao hai 6 meses
pai
achega
15d2879461

+ 12 - 0
mgr/src/main/java/cn/reghao/devops/mgr/admin/db/repository/SiteOptionRepository.java

@@ -0,0 +1,12 @@
+package cn.reghao.devops.mgr.admin.db.repository;
+
+import cn.reghao.devops.mgr.admin.model.po.SiteOption;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+/**
+ * @author reghao
+ * @date 2025-06-19 09:34:28
+ */
+public interface SiteOptionRepository extends JpaRepository<SiteOption, Integer> {
+    SiteOption findByPropKey(String propKey);
+}

+ 26 - 0
mgr/src/main/java/cn/reghao/devops/mgr/admin/model/po/SiteOption.java

@@ -0,0 +1,26 @@
+package cn.reghao.devops.mgr.admin.model.po;
+
+import cn.reghao.devops.mgr.util.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+/**
+ * 站点配置项
+ *
+ * @author reghao
+ * @date 2023-04-18 08:31:24
+ */
+@Setter
+@Getter
+@Table(name = "sys_site_option")
+@Entity
+public class SiteOption extends BaseEntity {
+    @Column(nullable = false, unique = true)
+    private String propKey;
+    @Column(nullable = false)
+    private String propValue;
+}

+ 23 - 5
mgr/src/main/java/cn/reghao/devops/mgr/util/DefaultSetting.java → mgr/src/main/java/cn/reghao/devops/mgr/admin/service/DefaultSetting.java

@@ -1,16 +1,29 @@
-package cn.reghao.devops.mgr.util;
+package cn.reghao.devops.mgr.admin.service;
 
+import cn.reghao.devops.mgr.admin.db.repository.SiteOptionRepository;
 import cn.reghao.devops.mgr.admin.model.constant.RoleType;
+import cn.reghao.devops.mgr.admin.model.po.SiteOption;
 import cn.reghao.devops.mgr.admin.service.UserContext;
 import cn.reghao.devops.mgr.app.model.constant.AppType;
 import cn.reghao.devops.mgr.builder.model.constant.EnvType;
+import org.springframework.stereotype.Service;
 
 /**
+ * env 和 appType 的默认值
+ *
  * @author reghao
  * @date 2023-12-01 11:29:21
  */
+@Service
 public class DefaultSetting {
-    public static String getDefaultEnv() {
+    private final SiteOptionRepository siteOptionRepository;
+
+    public DefaultSetting(SiteOptionRepository siteOptionRepository) {
+        this.siteOptionRepository = siteOptionRepository;
+    }
+
+    public String getDefaultEnv() {
+        SiteOption siteOption = siteOptionRepository.findByPropKey("site.env");
         /*Set<String> roles = UserContext.getUserRoles();
         if (roles.contains(RoleType.ROLE_DEVOPS.name())) {
             return EnvType.test.name();
@@ -18,12 +31,16 @@ public class DefaultSetting {
                 || roles.contains(RoleType.ROLE_FRONTEND.name())) {
             return EnvType.test.name();
         }*/
-        return EnvType.test.name();
+        //return EnvType.test.name();
+        return siteOption.getPropValue();
     }
 
-    public static String getDefaultAppType() {
+    public String getDefaultAppType() {
         String defaultAppType = AppType.dotnet.getName();
         String role = UserContext.getUserRole();
+        String roleName = role.replace("ROLE_", "").toLowerCase();
+        String propKey = String.format("site.appType.%s", roleName);
+        SiteOption siteOption = siteOptionRepository.findByPropKey(propKey);
         if (role.equals(RoleType.ROLE_JAVA.name())) {
             defaultAppType = AppType.java.getName();
         } else if (role.equals(RoleType.ROLE_DOTNET.name())) {
@@ -32,6 +49,7 @@ public class DefaultSetting {
             defaultAppType = AppType.npm.getName();
         }
 
-        return defaultAppType;
+        //return defaultAppType;
+        return siteOption.getPropValue();
     }
 }

+ 9 - 3
mgr/src/main/java/cn/reghao/devops/mgr/aliyun/controller/AliyunController.java

@@ -1,7 +1,7 @@
 package cn.reghao.devops.mgr.aliyun.controller;
 
 import cn.reghao.devops.mgr.app.model.vo.AppConfigVO;
-import cn.reghao.devops.mgr.util.DefaultSetting;
+import cn.reghao.devops.mgr.admin.service.DefaultSetting;
 import cn.reghao.devops.mgr.util.PageSort;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -21,12 +21,18 @@ import org.springframework.web.bind.annotation.RequestParam;
 @Controller
 @RequestMapping("/aliyun")
 public class AliyunController {
+    private final DefaultSetting defaultSetting;
+
+    public AliyunController(DefaultSetting defaultSetting) {
+        this.defaultSetting = defaultSetting;
+    }
+
     @ApiOperation(value = "阿里云 key 页面", notes = "N")
     @GetMapping("/key")
     public String aliyunKeyPage(@RequestParam(value = "env", required = false) String env,
                                 Model model) {
         if (env == null) {
-            env = DefaultSetting.getDefaultEnv();
+            env = defaultSetting.getDefaultEnv();
         }
 
         PageRequest pageRequest = PageSort.pageRequest();
@@ -43,7 +49,7 @@ public class AliyunController {
     public String certPage(@RequestParam(value = "env", required = false) String env,
                                 Model model) {
         if (env == null) {
-            env = DefaultSetting.getDefaultEnv();
+            env = defaultSetting.getDefaultEnv();
         }
 
         PageRequest pageRequest = PageSort.pageRequest();

+ 6 - 4
mgr/src/main/java/cn/reghao/devops/mgr/app/controller/page/AppConfigPageController.java

@@ -9,7 +9,7 @@ import cn.reghao.devops.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.mgr.app.model.vo.AppConfigVO;
 import cn.reghao.devops.common.util.KeyValue;
 import cn.reghao.devops.mgr.builder.model.constant.EnvType;
-import cn.reghao.devops.mgr.util.DefaultSetting;
+import cn.reghao.devops.mgr.admin.service.DefaultSetting;
 import cn.reghao.devops.mgr.util.PageSort;
 import cn.reghao.devops.common.msg.constant.PackType;
 import io.swagger.annotations.Api;
@@ -33,15 +33,17 @@ import java.util.stream.Collectors;
 @Controller
 @RequestMapping("/app/config/app")
 public class AppConfigPageController {
+    private final DefaultSetting defaultSetting;
     private final AppBuildQuery appBuildQuery;
     private final RepoAuthConfigRepository repoAuthConfigRepository;
     private final CompilerConfigRepository compilerConfigRepository;
     private final PackerConfigRepository packerConfigRepository;
 
-    public AppConfigPageController(AppBuildQuery appBuildQuery,
+    public AppConfigPageController(DefaultSetting defaultSetting, AppBuildQuery appBuildQuery,
                                    RepoAuthConfigRepository repoAuthConfigRepository,
                                    CompilerConfigRepository compilerConfigRepository,
                                    PackerConfigRepository packerConfigRepository) {
+        this.defaultSetting = defaultSetting;
         this.appBuildQuery = appBuildQuery;
         this.repoAuthConfigRepository = repoAuthConfigRepository;
         this.compilerConfigRepository = compilerConfigRepository;
@@ -54,11 +56,11 @@ public class AppConfigPageController {
                                 @RequestParam(value = "type", required = false) String type,
                                 Model model) {
         if (env == null) {
-            env = DefaultSetting.getDefaultEnv();
+            env = defaultSetting.getDefaultEnv();
         }
 
         if (type == null) {
-            type = DefaultSetting.getDefaultAppType();
+            type = defaultSetting.getDefaultAppType();
         }
 
         PageRequest pageRequest = PageSort.pageRequest();

+ 7 - 4
mgr/src/main/java/cn/reghao/devops/mgr/app/controller/page/AppStatPageController.java

@@ -5,7 +5,7 @@ import cn.reghao.devops.mgr.app.db.query.AppDeployQuery;
 import cn.reghao.devops.mgr.app.model.vo.AppRunningNode;
 import cn.reghao.devops.mgr.app.model.vo.AppRunning;
 import cn.reghao.devops.mgr.app.service.AppRunService;
-import cn.reghao.devops.mgr.util.DefaultSetting;
+import cn.reghao.devops.mgr.admin.service.DefaultSetting;
 import cn.reghao.devops.mgr.util.PageSort;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.result.ResultStatus;
@@ -31,10 +31,13 @@ import java.util.*;
 @Controller
 @RequestMapping("/app/stat")
 public class AppStatPageController {
+    private final DefaultSetting defaultSetting;
     private final AppDeployQuery appDeployQuery;
     private final AppRunService appRunService;
 
-    public AppStatPageController(AppDeployQuery appDeployQuery, AppRunService appRunService) {
+    public AppStatPageController(DefaultSetting defaultSetting, AppDeployQuery appDeployQuery,
+                                 AppRunService appRunService) {
+        this.defaultSetting = defaultSetting;
         this.appDeployQuery = appDeployQuery;
         this.appRunService = appRunService;
     }
@@ -45,11 +48,11 @@ public class AppStatPageController {
                               @RequestParam(value = "type", required = false) String appType,
                               Model model) {
         if (env == null) {
-            env = DefaultSetting.getDefaultEnv();
+            env = defaultSetting.getDefaultEnv();
         }
 
         if (appType == null) {
-            appType = DefaultSetting.getDefaultAppType();
+            appType = defaultSetting.getDefaultAppType();
         }
 
         PageRequest pageRequest = PageSort.pageRequest();

+ 7 - 4
mgr/src/main/java/cn/reghao/devops/mgr/app/controller/page/BuildDeployPageController.java

@@ -10,7 +10,7 @@ import cn.reghao.devops.mgr.app.model.vo.AppDeployingNodeVO;
 import cn.reghao.devops.mgr.app.model.vo.BuildLogVO;
 import cn.reghao.devops.mgr.app.model.vo.BuildTask;
 import cn.reghao.devops.mgr.app.service.bd.BuildApp;
-import cn.reghao.devops.mgr.util.DefaultSetting;
+import cn.reghao.devops.mgr.admin.service.DefaultSetting;
 import cn.reghao.devops.mgr.util.PageSort;
 import cn.reghao.devops.common.util.NotAvailable;
 import cn.reghao.devops.mgr.util.StringUtil;
@@ -33,11 +33,14 @@ import java.util.*;
 @Controller
 @RequestMapping("/app/bd")
 public class BuildDeployPageController {
+    private final DefaultSetting defaultSetting;
     private final AppBuildQuery appBuildQuery;
     private final AppDeployQuery appDeployQuery;
     private final BuildApp buildApp;
 
-    public BuildDeployPageController(AppBuildQuery appBuildQuery, AppDeployQuery appDeployQuery, BuildApp buildApp) {
+    public BuildDeployPageController(DefaultSetting defaultSetting, AppBuildQuery appBuildQuery,
+                                     AppDeployQuery appDeployQuery, BuildApp buildApp) {
+        this.defaultSetting = defaultSetting;
         this.appBuildQuery = appBuildQuery;
         this.appDeployQuery = appDeployQuery;
         this.buildApp = buildApp;
@@ -49,11 +52,11 @@ public class BuildDeployPageController {
                         @RequestParam(value = "type", required = false) String type,
                         Model model) throws Exception {
         if (env == null) {
-            env = DefaultSetting.getDefaultEnv();
+            env = defaultSetting.getDefaultEnv();
         }
 
         if (type == null) {
-            type = DefaultSetting.getDefaultAppType();
+            type = defaultSetting.getDefaultAppType();
         }
         PageRequest pageRequest = PageSort.pageRequest();
         Page<AppBuildingVO> page = appBuildQuery.getByPage(env, type, pageRequest);

+ 5 - 3
mgr/src/main/java/cn/reghao/devops/mgr/machine/controller/MachineController.java

@@ -3,7 +3,7 @@ package cn.reghao.devops.mgr.machine.controller;
 import cn.reghao.devops.common.util.KeyValue;
 import cn.reghao.devops.mgr.machine.service.MachineQuery;
 import cn.reghao.devops.mgr.machine.service.MachineService;
-import cn.reghao.devops.mgr.util.DefaultSetting;
+import cn.reghao.devops.mgr.admin.service.DefaultSetting;
 import cn.reghao.devops.mgr.util.PageSort;
 import cn.reghao.devops.mgr.builder.model.constant.EnvType;
 import cn.reghao.devops.mgr.machine.model.po.MachineHost;
@@ -32,10 +32,12 @@ import java.util.*;
 @Controller
 @RequestMapping("/machine/host")
 public class MachineController {
+    private final DefaultSetting defaultSetting;
     private final MachineQuery machineQuery;
     private final MachineService machineService;
 
-    public MachineController(MachineQuery machineQuery, MachineService machineService) {
+    public MachineController(DefaultSetting defaultSetting, MachineQuery machineQuery, MachineService machineService) {
+        this.defaultSetting = defaultSetting;
         this.machineQuery = machineQuery;
         this.machineService = machineService;
     }
@@ -45,7 +47,7 @@ public class MachineController {
     @GetMapping
     public String machineListPage(@RequestParam(value = "env", required = false) String env, Model model) {
         if (env == null) {
-            env = DefaultSetting.getDefaultEnv();
+            env = defaultSetting.getDefaultEnv();
         }
 
         PageRequest pageRequest = PageSort.pageRequest();

+ 2 - 3
mgr/src/main/java/cn/reghao/devops/mgr/machine/model/po/MachineHost.java

@@ -1,6 +1,5 @@
 package cn.reghao.devops.mgr.machine.model.po;
 
-import cn.reghao.devops.mgr.util.DefaultSetting;
 import cn.reghao.devops.mgr.util.BaseEntity;
 import lombok.*;
 
@@ -28,10 +27,10 @@ public class MachineHost extends BaseEntity {
     private String env;
 
     // TODO 根据机器所属的地区,机房等维度来分组
-    public MachineHost(MachineInfo machineInfo) {
+    public MachineHost(MachineInfo machineInfo, String env) {
         this.machineInfo = machineInfo;
         this.machineId = machineInfo.getMachineId();
         this.machineIpv4 = machineInfo.getMachineIpv4();
-        this.env = DefaultSetting.getDefaultEnv();
+        this.env = env;
     }
 }

+ 7 - 3
mgr/src/main/java/cn/reghao/devops/mgr/machine/service/impl/MachineServiceImpl.java

@@ -3,6 +3,7 @@ package cn.reghao.devops.mgr.machine.service.impl;
 import cn.reghao.devops.common.msg.constant.NodeStatus;
 import cn.reghao.devops.common.msg.event.EvtAgentHeartbeat;
 import cn.reghao.devops.common.msg.event.EvtAgentStart;
+import cn.reghao.devops.mgr.admin.service.DefaultSetting;
 import cn.reghao.devops.mgr.machine.service.MachineQuery;
 import cn.reghao.devops.mgr.machine.db.repository.MachineHostRepository;
 import cn.reghao.devops.mgr.machine.db.repository.MachineInfoRepository;
@@ -26,12 +27,14 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class MachineServiceImpl implements MachineService {
+    private final DefaultSetting defaultSetting;
     private final MachineHostRepository machineHostRepository;
     private final MachineInfoRepository machineInfoRepository;
     private final MachineQuery machineQuery;
 
-    public MachineServiceImpl(MachineHostRepository machineHostRepository, MachineInfoRepository machineInfoRepository,
-                              MachineQuery machineQuery) {
+    public MachineServiceImpl(DefaultSetting defaultSetting, MachineHostRepository machineHostRepository,
+                              MachineInfoRepository machineInfoRepository, MachineQuery machineQuery) {
+        this.defaultSetting = defaultSetting;
         this.machineHostRepository = machineHostRepository;
         this.machineInfoRepository = machineInfoRepository;
         this.machineQuery = machineQuery;
@@ -46,7 +49,8 @@ public class MachineServiceImpl implements MachineService {
         if (machineInfoList.isEmpty()) {
             MachineInfo machineInfo = new MachineInfo(evtAgentStart);
             machineInfo = machineInfoRepository.save(machineInfo);
-            machineHostRepository.save(new MachineHost(machineInfo));
+            String env = defaultSetting.getDefaultEnv();
+            machineHostRepository.save(new MachineHost(machineInfo, env));
         } else {
             machineInfoRepository.updateMachineStat(machineId, NodeStatus.Online.getCode());
         }