From ea6127fdfc2ceedf513ddb88817265de6c5afbe1 Mon Sep 17 00:00:00 2001
From: bwcx_jzy <bwcx_jzy@163.com>
Date: Fri, 10 Mar 2023 15:38:52 +0800
Subject: [PATCH 1/9] fix

---
 web-vue/src/pages/ssh/ssh.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/web-vue/src/pages/ssh/ssh.vue b/web-vue/src/pages/ssh/ssh.vue
index 665d7c49a..c74199bc3 100644
--- a/web-vue/src/pages/ssh/ssh.vue
+++ b/web-vue/src/pages/ssh/ssh.vue
@@ -54,7 +54,7 @@
             </a-menu>
           </a-dropdown>
 
-          <a-tooltip placement="topLeft" title="如果按钮不可用,请去 ssh 编辑中添加允许管理的授权文件夹">
+          <a-tooltip placement="topLeft" title="如果按钮不可用,请去资产管理 ssh 列表的关联中添加当前工作空间允许管理的授权文件夹">
             <a-button size="small" type="primary" :disabled="!record.fileDirs" @click="handleFile(record)">文件</a-button>
           </a-tooltip>
           <a-dropdown>
-- 
Gitee


From 9bef05b9a53f937ba24cb3eb6fd470eb053c76cf Mon Sep 17 00:00:00 2001
From: songxinqiang <songxinqiang@aerozhonghuan.com>
Date: Fri, 10 Mar 2023 16:19:54 +0800
Subject: [PATCH 2/9] Update Gitea page error

---
 .../jpom/controller/build/repository/GiteaUtil.java  | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java b/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java
index bbae0c531..499a4ac45 100644
--- a/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java
+++ b/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java
@@ -64,7 +64,7 @@ public class GiteaUtil {
     /**
      * 每页的数量,最大为 100
      */
-    private static final String PER_PAGE = "per_page";
+    private static final String LIMIT = "limit";
 
     /**
      * 获取 Gitea 用户名
@@ -92,19 +92,19 @@ public class GiteaUtil {
     public static Map<String, Object> getGiteaRepos(String giteaAddress, String token, Page page, String condition) {
         HttpResponse reposResponse = HttpUtil.createGet(giteaAddress + "/api/v1/user/repos", true)
             .form(ACCESS_TOKEN, token)
-            .form(SORT, "pushed")
+            //.form(SORT, "newest")
             .form(PAGE, page.getPageNumber())
-            .form(PER_PAGE, page.getPageSize())
+            .form(LIMIT, page.getPageSize())
             // 搜索关键字
-            .form("q", condition)
+            //.form("q", condition)
             .execute();
         String body = reposResponse.body();
         Assert.state(reposResponse.isOk(), "获取仓库信息错误:" + body);
 
         // 所有仓库总数,包括公开的和私有的
-        String totalCountStr = reposResponse.header("total_count");
+        String totalCountStr = reposResponse.header("x-total-count");
         int totalCount = Convert.toInt(totalCountStr, 0);
-        //String totalPage = reposResponse.header("total_page");
+        String totalPage = reposResponse.header("total_page");
 
         Map<String, Object> map = new HashMap<>(2);
         map.put("jsonArray", JSONArray.parseArray(body));
-- 
Gitee


From 52e3c5c720bb515b442064685e5722c5bf7969b5 Mon Sep 17 00:00:00 2001
From: songxinqiang <songxinqiang@aerozhonghuan.com>
Date: Fri, 10 Mar 2023 18:08:59 +0800
Subject: [PATCH 3/9] Update Gitea search error

---
 .../build/repository/GiteaUtil.java           | 52 ++++++++++++++++---
 1 file changed, 45 insertions(+), 7 deletions(-)

diff --git a/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java b/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java
index 499a4ac45..c01adb090 100644
--- a/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java
+++ b/modules/server/src/main/java/io/jpom/controller/build/repository/GiteaUtil.java
@@ -26,9 +26,11 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.db.Page;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import org.springframework.util.Assert;
+import org.springframework.util.ObjectUtils;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -90,26 +92,62 @@ public class GiteaUtil {
      * @return
      */
     public static Map<String, Object> getGiteaRepos(String giteaAddress, String token, Page page, String condition) {
-        HttpResponse reposResponse = HttpUtil.createGet(giteaAddress + "/api/v1/user/repos", true)
+        if(condition == null ){
+            HttpResponse reposResponse = HttpUtil.createGet(giteaAddress + "/api/v1/user/repos", true)
+                .form(ACCESS_TOKEN, token)
+                //.form(SORT, "newest")
+                .form(PAGE, page.getPageNumber())
+                .form(LIMIT, page.getPageSize())
+                // 搜索关键字
+                //.form("q", condition)
+                .execute();
+            String body = reposResponse.body();
+            Assert.state(reposResponse.isOk(), "获取仓库信息错误:" + body);
+            // 所有仓库总数,包括公开的和私有的
+            String totalCountStr = reposResponse.header("x-total-count");
+            int totalCount = Convert.toInt(totalCountStr, 0);
+            //String totalPage = reposResponse.header("total_page");
+
+            Map<String, Object> map = new HashMap<>(2);
+            map.put("jsonArray", JSONArray.parseArray(body));
+            // 仓库总数
+            map.put("totalCount", totalCount);
+            return map;
+        }else{
+            return getGiteaReposSearch(giteaAddress,token,page,condition);
+        }
+    }
+    /**
+     * 获取 Gitea 用户仓库信息搜索
+     *
+     * @param giteaAddress Gitea 地址
+     * @param token        用户授权码
+     * @param page         分页参数
+     * @return
+     */
+    public static Map<String, Object> getGiteaReposSearch( String giteaAddress, String token, Page page, String condition) {
+        HttpResponse reposResponse = HttpUtil.createGet(giteaAddress + "/api/v1/repos/search", true)
             .form(ACCESS_TOKEN, token)
-            //.form(SORT, "newest")
+            .form(SORT, "created")
             .form(PAGE, page.getPageNumber())
             .form(LIMIT, page.getPageSize())
             // 搜索关键字
-            //.form("q", condition)
+            .form("q", condition)
             .execute();
         String body = reposResponse.body();
-        Assert.state(reposResponse.isOk(), "获取仓库信息错误:" + body);
-
+        JSONObject jsonObject = JSON.parseObject(body);
+        JSONArray data = jsonObject.getJSONArray("data");
+        Assert.state(reposResponse.isOk(), "获取仓库信息错误:" + data.toString());
         // 所有仓库总数,包括公开的和私有的
         String totalCountStr = reposResponse.header("x-total-count");
         int totalCount = Convert.toInt(totalCountStr, 0);
-        String totalPage = reposResponse.header("total_page");
 
         Map<String, Object> map = new HashMap<>(2);
-        map.put("jsonArray", JSONArray.parseArray(body));
+        map.put("jsonArray", JSONArray.parseArray(data.toString()));
         // 仓库总数
         map.put("totalCount", totalCount);
         return map;
+
     }
+
 }
-- 
Gitee


From 7762232d3999df15f1d5bd80cf32b9764b46c5b3 Mon Sep 17 00:00:00 2001
From: bwcx_jzy <bwcx_jzy@163.com>
Date: Fri, 10 Mar 2023 18:18:57 +0800
Subject: [PATCH 4/9] =?UTF-8?q?fix=20changelog=20=E5=AF=BC=E5=85=A5=20gite?=
 =?UTF-8?q?a=20=E4=BB=93=E5=BA=93=E6=90=9C=E7=B4=A2=E3=80=81=E5=88=86?=
 =?UTF-8?q?=E9=A1=B5=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E4=BD=BF=E7=94=A8?=
 =?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index be09299d0..c8c8efbc6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
 # 🚀 版本日志
 
+## 2.10.30
+
+### 🐞 解决BUG、优化功能
+
+1. 【server】修复 导入 gitea 仓库搜索、分页无法正常使用问题
+   (感谢 [@Smith](https://gitee.com/autools) [Gitee pr 175](https://gitee.com/dromara/Jpom/pulls/175) [Gitee pr 174](https://gitee.com/dromara/Jpom/pulls/174) )
+
+------
+
 ## 2.10.29 (2023-03-10)
 
 ### 🐣 新增功能
@@ -56,13 +65,14 @@
 ### 🐞 解决BUG、优化功能
 
 1. 【all】升级 springboot 版本
-2. 【server】优化 系统自动同步 docker 已经安装的集群信息 
+2. 【server】优化 系统自动同步 docker 已经安装的集群信息
 3. 【server】更新 mysql maven 坐标:`mysql-connector-j`
 4. 【server】修复 构建产物模糊匹配二级剔除配置 `/` 无效
 
 ### ⚠️ 注意
 
-新增 docker 资产管理,系统会自动将已经存在的 docker 信息根据 host 去重同步到资产管理中(如果 host 存在多个工作空间将根据最后更新时间排序使用最新的一条数据)
+新增 docker 资产管理,系统会自动将已经存在的 docker 信息根据 host 去重同步到资产管理中(如果 host
+存在多个工作空间将根据最后更新时间排序使用最新的一条数据)
 
 更新后 docker、集群列表中状态如果出现:`信息丢失` 表示关联数据存在异常不能正常使用,需要删除对应数据重新关联
 
@@ -98,7 +108,7 @@
 
 ### ❌ 不兼容功能
 
-1. 【server】删除 弃用表 NODE_STAT 
+1. 【server】删除 弃用表 NODE_STAT
 2. 【server】删除 弃用表 SYSTEMMONITORLOG
 3. 【server】删除 相关表中的 strike 字段
 
@@ -142,7 +152,7 @@
 ### ⚠️ 注意
 
 由于新增 SSH 资产管理,之前ssh 配置如果引用的工作空间变量的配置信息可能将失效(作用域不同).
-如果仍需要变量信息还需要将对应的信息迁移到全局变量中才可以正常使用 
+如果仍需要变量信息还需要将对应的信息迁移到全局变量中才可以正常使用
 
 ------
 
-- 
Gitee


From be153c7f7b675457b73f466c82aafafe0825a4f2 Mon Sep 17 00:00:00 2001
From: zhangqiang <1207874055@qq.com>
Date: Sat, 11 Mar 2023 00:37:29 +0800
Subject: [PATCH 5/9] =?UTF-8?q?fix=E9=95=9C=E5=83=8F=E5=90=AF=E5=8A=A8?=
 =?UTF-8?q?=E5=AE=B9=E5=99=A8=E4=B8=8D=E5=A1=AB=E5=86=99=E8=BF=90=E8=A1=8C?=
 =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=AF=BC=E8=87=B4=E5=AE=B9=E5=99=A8?=
 =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/main/java/io/jpom/DefaultDockerPluginImpl.java    | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java b/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
index 4bccf52c1..dd5254103 100644
--- a/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
+++ b/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
@@ -40,6 +40,7 @@ import io.jpom.plugin.PluginConfig;
 import io.jpom.util.StringUtil;
 import lombok.Lombok;
 import lombok.SneakyThrows;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.util.Assert;
 
 import java.io.File;
@@ -301,7 +302,12 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
         // 命令
         List<String> commands = (List<String>) parameter.get("commands");
         if (CollUtil.isNotEmpty(commands)) {
-            containerCmd.withCmd(commands);
+
+            commands.removeIf(StringUtils::isBlank);
+
+            if (CollUtil.isNotEmpty(commands)){
+                containerCmd.withCmd(commands);
+            }
         }
         containerCmd.withHostConfig(hostConfig).withExposedPorts(exposedPortList);
         CreateContainerResponse containerResponse = containerCmd.exec();
-- 
Gitee


From d914f3456a55734f9ab147e360c6ebc9705b6bb1 Mon Sep 17 00:00:00 2001
From: zhangqiang <1207874055@qq.com>
Date: Sat, 11 Mar 2023 00:49:55 +0800
Subject: [PATCH 6/9] =?UTF-8?q?fix=E9=95=9C=E5=83=8F=E5=90=AF=E5=8A=A8?=
 =?UTF-8?q?=E5=AE=B9=E5=99=A8=E4=B8=8D=E5=A1=AB=E5=86=99=E8=BF=90=E8=A1=8C?=
 =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=AF=BC=E8=87=B4=E5=AE=B9=E5=99=A8?=
 =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/main/java/io/jpom/DefaultDockerPluginImpl.java           | 1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java b/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
index dd5254103..b21afc3af 100644
--- a/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
+++ b/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
@@ -299,6 +299,7 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
             }
             return map;
         }).ifPresent(hostConfig::withStorageOpt);
+
         // 命令
         List<String> commands = (List<String>) parameter.get("commands");
         if (CollUtil.isNotEmpty(commands)) {
-- 
Gitee


From 7d9e5515b0635117f492cd9667fd8246984e0402 Mon Sep 17 00:00:00 2001
From: bwcx_jzy <bwcx_jzy@163.com>
Date: Sun, 12 Mar 2023 20:49:04 +0800
Subject: [PATCH 7/9] =?UTF-8?q?fix=20=E9=95=9C=E5=83=8F=E5=90=AF=E5=8A=A8?=
 =?UTF-8?q?=E5=AE=B9=E5=99=A8=E4=B8=8D=E5=A1=AB=E5=86=99=E8=BF=90=E8=A1=8C?=
 =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=AF=BC=E8=87=B4=E5=AE=B9=E5=99=A8?=
 =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5=EF=BC=88=E9=83=A8=E5=88=86?=
 =?UTF-8?q?=E4=BD=8E=E7=89=88=E6=9C=AC=EF=BC=89=20fix=20=E8=8A=82=E7=82=B9?=
 =?UTF-8?q?=E5=88=86=E5=8F=91=20webhook=20=E8=BE=93=E5=85=A5=E6=A1=86?=
 =?UTF-8?q?=E7=9A=84=E9=94=99=E5=88=AB=E5=AD=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                                     |  3 +++
 .../java/io/jpom/DefaultDockerPluginImpl.java    | 16 ++++++++--------
 web-vue/src/pages/dispatch/list.vue              |  4 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c8c8efbc6..261fe4ffd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,9 @@
 
 1. 【server】修复 导入 gitea 仓库搜索、分页无法正常使用问题
    (感谢 [@Smith](https://gitee.com/autools) [Gitee pr 175](https://gitee.com/dromara/Jpom/pulls/175) [Gitee pr 174](https://gitee.com/dromara/Jpom/pulls/174) )
+2. 【server】优化 镜像启动容器不填写运行命令行导致容器启动失败(部分低版本)
+   (感谢 [@失落的世界](https://gitee.com/marmotgo) [Gitee pr 176](https://gitee.com/dromara/Jpom/pulls/176) )
+3. 【server】修复 节点分发 webhook 输入框的错别字(感谢 @大灰灰 )
 
 ------
 
diff --git a/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java b/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
index b21afc3af..b860ab3e4 100644
--- a/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
+++ b/modules/sub-plugin/docker-cli/src/main/java/io/jpom/DefaultDockerPluginImpl.java
@@ -40,7 +40,6 @@ import io.jpom.plugin.PluginConfig;
 import io.jpom.util.StringUtil;
 import lombok.Lombok;
 import lombok.SneakyThrows;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.util.Assert;
 
 import java.io.File;
@@ -302,14 +301,15 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
 
         // 命令
         List<String> commands = (List<String>) parameter.get("commands");
-        if (CollUtil.isNotEmpty(commands)) {
-
-            commands.removeIf(StringUtils::isBlank);
-
-            if (CollUtil.isNotEmpty(commands)){
-                containerCmd.withCmd(commands);
+        Optional.ofNullable(commands).ifPresent(strings -> {
+            List<String> list = strings.stream()
+                .filter(StrUtil::isNotEmpty)
+                .collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(list)) {
+                containerCmd.withCmd(list);
             }
-        }
+        });
+
         containerCmd.withHostConfig(hostConfig).withExposedPorts(exposedPortList);
         CreateContainerResponse containerResponse = containerCmd.exec();
         //
diff --git a/web-vue/src/pages/dispatch/list.vue b/web-vue/src/pages/dispatch/list.vue
index 05eab2de0..327b0fca2 100644
--- a/web-vue/src/pages/dispatch/list.vue
+++ b/web-vue/src/pages/dispatch/list.vue
@@ -343,7 +343,7 @@
               <a-icon type="question-circle" theme="filled" />
             </a-tooltip>
           </template>
-          <a-input v-model="temp.webhook" placeholder="构建过程请求,非必填,GET请求" />
+          <a-input v-model="temp.webhook" placeholder="分发过程请求,非必填,GET请求" />
         </a-form-model-item>
       </a-form-model>
     </a-modal>
@@ -653,7 +653,7 @@
               <a-icon type="question-circle" theme="filled" />
             </a-tooltip>
           </template>
-          <a-input v-model="temp.webhook" placeholder="构建过程请求,非必填,GET请求" />
+          <a-input v-model="temp.webhook" placeholder="分发过程请求,非必填,GET请求" />
         </a-form-model-item>
       </a-form-model>
     </a-modal>
-- 
Gitee


From 4501611c12b4ead33bba38049fe40e1abd4b7537 Mon Sep 17 00:00:00 2001
From: bwcx_jzy <bwcx_jzy@163.com>
Date: Mon, 13 Mar 2023 11:50:44 +0800
Subject: [PATCH 8/9] =?UTF-8?q?fix=20=E5=B7=A5=E4=BD=9C=E7=A9=BA=E9=97=B4?=
 =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E6=93=8D=E4=BD=9C=E6=97=A5?=
 =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                                                    | 1 +
 .../io/jpom/controller/system/WorkspaceEnvVarController.java    | 2 +-
 .../server/src/main/java/io/jpom/permission/ClassFeature.java   | 2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 261fe4ffd..e38e30cbb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
 2. 【server】优化 镜像启动容器不填写运行命令行导致容器启动失败(部分低版本)
    (感谢 [@失落的世界](https://gitee.com/marmotgo) [Gitee pr 176](https://gitee.com/dromara/Jpom/pulls/176) )
 3. 【server】修复 节点分发 webhook 输入框的错别字(感谢 @大灰灰 )
+4. 【server】修复 工作空间环境变量操作日志记录错误问题
 
 ------
 
diff --git a/modules/server/src/main/java/io/jpom/controller/system/WorkspaceEnvVarController.java b/modules/server/src/main/java/io/jpom/controller/system/WorkspaceEnvVarController.java
index c93945df4..e0af49fee 100644
--- a/modules/server/src/main/java/io/jpom/controller/system/WorkspaceEnvVarController.java
+++ b/modules/server/src/main/java/io/jpom/controller/system/WorkspaceEnvVarController.java
@@ -59,7 +59,7 @@ import java.util.List;
  */
 
 @RestController
-@Feature(cls = ClassFeature.SYSTEM_WORKSPACE)
+@Feature(cls = ClassFeature.SYSTEM_WORKSPACE_ENV)
 @RequestMapping(value = "/system/workspace_env/")
 public class WorkspaceEnvVarController extends BaseServerController {
 
diff --git a/modules/server/src/main/java/io/jpom/permission/ClassFeature.java b/modules/server/src/main/java/io/jpom/permission/ClassFeature.java
index a3940dde9..aee57b982 100644
--- a/modules/server/src/main/java/io/jpom/permission/ClassFeature.java
+++ b/modules/server/src/main/java/io/jpom/permission/ClassFeature.java
@@ -44,6 +44,7 @@ import io.jpom.service.outgiving.LogReadServer;
 import io.jpom.service.outgiving.OutGivingServer;
 import io.jpom.service.script.ScriptExecuteLogServer;
 import io.jpom.service.script.ScriptServer;
+import io.jpom.service.system.WorkspaceEnvVarService;
 import io.jpom.service.system.WorkspaceService;
 import io.jpom.service.user.UserPermissionGroupServer;
 import io.jpom.service.user.UserService;
@@ -104,6 +105,7 @@ public enum ClassFeature {
     SYSTEM_NODE_WHITELIST("节点白名单分发"),
     SYSTEM_BACKUP("数据库备份", BackupInfoService.class),
     SYSTEM_WORKSPACE("工作空间", WorkspaceService.class),
+    SYSTEM_WORKSPACE_ENV("环境变量", WorkspaceEnvVarService.class),
 
     SCRIPT("脚本模板", ScriptServer.class),
     SCRIPT_LOG("脚本模板日志", ScriptExecuteLogServer.class),
-- 
Gitee


From 51ed92c63dde96f6a7eb365cf494f5c6dfb6d039 Mon Sep 17 00:00:00 2001
From: bwcx_jzy <bwcx_jzy@163.com>
Date: Mon, 13 Mar 2023 11:52:40 +0800
Subject: [PATCH 9/9] =?UTF-8?q?fix=20fastjson2=20=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md | 1 +
 pom.xml      | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e38e30cbb..79d53583a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@
    (感谢 [@失落的世界](https://gitee.com/marmotgo) [Gitee pr 176](https://gitee.com/dromara/Jpom/pulls/176) )
 3. 【server】修复 节点分发 webhook 输入框的错别字(感谢 @大灰灰 )
 4. 【server】修复 工作空间环境变量操作日志记录错误问题
+5. 【all】更新 fastjson2 版本
 
 ------
 
diff --git a/pom.xml b/pom.xml
index 1de62fc46..2ccf1812a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
         <maven.test.skip>true</maven.test.skip>
         <!--        <maven.javadoc.skip>true</maven.javadoc.skip>-->
         <hutool.version>5.8.11</hutool.version>
-        <fastjson2.version>2.0.21</fastjson2.version>
+        <fastjson2.version>2.0.24</fastjson2.version>
     </properties>
     <dependencies>
         <dependency>
-- 
Gitee