ソースを参照

Update 优化新建项目代码生成器

Yue 8 ヶ月 前
コミット
7ca75434e6

BIN
SERVER/VberAdminPlusV3/.script/bpmn/模型.zip


+ 1 - 1
SERVER/VberAdminPlusV3/vber-extend/vber-job-admin/src/main/java/com/vber/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java

@@ -69,7 +69,7 @@ public class ExecutorRouteConsistentHash extends ExecutorRouter {
             }
         }
 
-        long jobHash = hash(Convert.toStr(jobId));
+        long jobHash = hash(String.valueOf(jobId));
         SortedMap<Long, String> lastRing = addressRing.tailMap(jobHash);
         if (!lastRing.isEmpty()) {
             return lastRing.get(lastRing.firstKey());

+ 20 - 14
SERVER/VberAdminPlusV3/vber-modules/vber-generator/src/main/java/com/vber/reactor/core/ProjectReactor.java

@@ -26,8 +26,9 @@ public class ProjectReactor {
     private static final String ARTIFACT_ID = "VberAdminPlus";
     private static final String VERSION = "V3";
     private static final String ARTIFACT_ID_VERSION = ARTIFACT_ID + VERSION;
+    private static final String ARTIFACT_ID_SHORT = "vap3";
     private static final String PACKAGE_NAME = "com.vber";
-    private static final String MODULE_PREFIX = "vber-";
+    private static final String MODULE_PREFIX = "vber";
     private static final String MODULE_ARTIFACT_ID_PREFIX = "<artifactId>" + MODULE_PREFIX;
     private static final String MODULE_ID_PREFIX = "<module>" + MODULE_PREFIX;
     private static final String TITLE = "VAP后台管理系统";
@@ -48,15 +49,15 @@ public class ProjectReactor {
      * @param packageName  项目的包名,用于Java项目的包结构定义。
      * @param title        项目的标题,可用于描述项目的名称或目的。
      * @param projectDir   项目目录的路径,指定项目文件和资源所在的物理位置。
-     * @param modulePrefix 项目模块前缀,如果为空则使用默认值"vber-"。用于构建模块名称。
+     * @param modulePrefix 项目模块前缀,如果为空则使用默认值"vber"。用于构建模块名称。
      */
-    public static void build(@NotNull String groupId, @NotNull String artifactId, @NotNull String packageName, @NotNull String title, @NotNull String projectDir, String modulePrefix) {
+    public static void build(@NotNull String groupId, @NotNull String artifactId, @NotNull String packageName, @NotNull String title, @NotNull String projectDir, String modulePrefix, @NotNull String artifactIdShort) {
         // 如果modulePrefix为空,则使用默认前缀
-        modulePrefix = StrUtil.isEmpty(modulePrefix) ? "vber-" : modulePrefix;
-        modulePrefix = modulePrefix.endsWith("-") ? modulePrefix : modulePrefix + "-";
+        modulePrefix = StrUtil.isEmpty(modulePrefix) ? "vber" : modulePrefix;
+        modulePrefix = modulePrefix.endsWith("-") ? modulePrefix.substring(0, modulePrefix.length() - 1) : modulePrefix;
         // 确保projectDir以反斜杠结尾。
         projectDir = projectDir.endsWith("\\") ? projectDir : projectDir + "\\";
-        build(new ProjectInfo(groupId, artifactId, packageName, title, projectDir, modulePrefix));
+        build(new ProjectInfo(groupId, artifactId, artifactIdShort, packageName, title, projectDir, modulePrefix));
     }
 
     /**
@@ -76,6 +77,7 @@ public class ProjectReactor {
         // 使用项目信息中的值,如果为空则使用默认值
         String groupId = StrUtil.isEmpty(projectInfo.getGroupId()) ? GROUP_ID : projectInfo.getGroupId();
         String artifactId = StrUtil.isEmpty(projectInfo.getArtifactId()) ? ARTIFACT_ID : projectInfo.getArtifactId();
+        String artifactIdShort = StrUtil.isEmpty(projectInfo.getArtifactIdShort()) ? ARTIFACT_ID_SHORT : projectInfo.getArtifactIdShort();
         String packageName = StrUtil.isEmpty(projectInfo.getPackageName()) ? PACKAGE_NAME : projectInfo.getPackageName();
         String modulePrefix = StrUtil.isEmpty(projectInfo.getModulePrefix()) ? MODULE_PREFIX : projectInfo.getModulePrefix();
         String moduleArtifactIdPrefix = "<artifactId>" + modulePrefix;
@@ -124,7 +126,7 @@ public class ProjectReactor {
                 return;
             }
             // 如果非白名单的文件类型,重写内容,在生成文件
-            String content = replaceFileContent(file, groupId, artifactId, packageName, title, moduleArtifactIdPrefix, moduleIdPrefix);
+            String content = replaceFileContent(file, groupId, artifactId, artifactIdShort, packageName, title, moduleArtifactIdPrefix, moduleIdPrefix);
             writeFile(file, content, oldProjectDir, projectDir, packageName, artifactId, modulePrefix, uiFile);
         });
         log.info("[重写完成]共耗时:{} 秒", (System.currentTimeMillis() - start) / 1000);
@@ -137,10 +139,12 @@ public class ProjectReactor {
                 .filter(file -> !file.getPath().contains(separator + "target" + separator)
                         && !file.getPath().contains(separator + "node_modules" + separator)
                         && !file.getPath().contains(separator + ".idea" + separator)
-                        && !file.getPath().contains(separator + ".git" + separator)
-                        && !file.getPath().contains(separator + "UI/dist" + separator)
-                        && !file.getPath().contains(separator + ".vscode" + separator)
                         && !file.getPath().contains(separator + ".vs" + separator)
+                        && !file.getPath().contains(separator + ".vscode" + separator)
+                        && !file.getPath().contains(separator + ".visualstudio" + separator)
+                        && !file.getPath().contains(separator + ".git" + separator)
+                        && !file.getPath().contains(separator + ".data" + separator)
+                        && !file.getPath().contains(separator + "UI" + separator + "dist" + separator)
                         && !file.getPath().contains(separator + "vber" + separator + "logs" + separator)
                         && !file.getPath().contains(separator + "vber" + separator + "profile" + separator)
                         && !file.getPath().contains(separator + "com" + separator + "vber" + separator + "reactor" + separator)
@@ -161,7 +165,7 @@ public class ProjectReactor {
     }
 
     private static String replaceFileContent(File file, String groupIdNew,
-                                             String artifactIdNew, String packageNameNew,
+                                             String artifactIdNew, String artifactIdShortNew, String packageNameNew,
                                              String titleNew, String moduleArtifactIdPrefix, String moduleIdSuffix) {
         String content = FileUtil.readString(file, StandardCharsets.UTF_8);
         // 如果是白名单的文件类型,不进行重写
@@ -172,12 +176,14 @@ public class ProjectReactor {
         // 执行文件内容都重写
         return content.replaceAll(GROUP_ID, groupIdNew)
                 .replaceAll(PACKAGE_NAME, packageNameNew)
-                .replaceAll(MODULE_ARTIFACT_ID_PREFIX, moduleArtifactIdPrefix)
+                .replaceAll(MODULE_ARTIFACT_ID_PREFIX + "-", moduleArtifactIdPrefix + "-")
+                .replaceAll(MODULE_ARTIFACT_ID_PREFIX + "_", moduleArtifactIdPrefix + "_")
+                .replaceAll(MODULE_ID_PREFIX, moduleIdSuffix)
+                .replaceAll(ARTIFACT_ID_SHORT, artifactIdShortNew)
                 .replaceAll(ARTIFACT_ID_VERSION, artifactIdNew) // 带版本的ARTIFACT_ID也替换成无版本的!
                 .replaceAll(ARTIFACT_ID, artifactIdNew) // 必须放在最后替换,因为 ARTIFACT_ID 太短!
                 .replaceAll(StrUtil.upperFirst(ARTIFACT_ID), StrUtil.upperFirst(artifactIdNew))
-                .replaceAll(StrUtil.upperFirst(MODULE_ID_PREFIX), StrUtil.upperFirst(moduleIdSuffix))
-                .replaceAll("permission: \"no_auth\" //NEW PROJECT", "permission: \"\"") //隐藏生成新项目按钮
+                .replaceAll("permission: \"no_auth\" //NEW PROJECT", "permission: \"---\"") //隐藏生成新项目按钮
                 .replaceAll(TITLE, titleNew);
     }
 

+ 2 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-generator/src/main/java/com/vber/reactor/domain/ProjectInfo.java

@@ -23,6 +23,8 @@ public class ProjectInfo implements Serializable {
     private String groupId;
     @NotBlank(message = "新项目ArtifactId不能为空")
     private String artifactId;
+    @NotBlank(message = "新项目短名称不能为空")
+    private String artifactIdShort;
     @NotBlank(message = "新项目包名称不能为空")
     private String packageName;
     @NotBlank(message = "新项目系统标题不能为空")

+ 3 - 2
SERVER/VberAdminPlusV3/vber-modules/vber-generator/src/test/java/com/vber/reactor/ProjectReactorTest.java

@@ -10,12 +10,13 @@ public class ProjectReactorTest {
         // ========== 手动修改配置后运行 ==========
         String groupId = "com.va";
         String artifactId = "VberAdmin";
+        String artifactIdShort = "iwb";
         String packageName = "cn.vber";
         String title = "VberAdmin管理平台";
-        String modulePrefix = "vb-";
+        String modulePrefix = "vb";
         String projectDir = "D:\\Project\\VberPlus\\";
         // ========== 手动修改配置后运行 ==========
-        ProjectReactor.build(groupId, artifactId, packageName, title, projectDir, modulePrefix);
+        ProjectReactor.build(groupId, artifactId, artifactIdShort, packageName, title, projectDir, modulePrefix);
 
     }
 }

+ 11 - 1
UI/VAP_V3.VUE/src/views/tool/gen/index.vue

@@ -70,6 +70,9 @@ const opts = reactive<any>({
 			name: "生成新项目",
 			btnClass: "btn btn-light-info",
 			clickFun: handleProject,
+			disabledFun: () => {
+				return false
+			},
 			iconType: "class",
 			icon: "bi bi-bookmark-plus",
 			permission: "no_auth" //NEW PROJECT
@@ -235,7 +238,8 @@ const newProjectForm = ref<any>({
 	groupId: "com.vap",
 	artifactId: "VberAdminPlus",
 	packageName: "com.vber",
-	modulePrefix: "vber-",
+	modulePrefix: "vber",
+	artifactIdShort: "iwb",
 	title: "VAP后台管理系统",
 	projectDir: "D:\\Project\\" + dayjs().format("YYYYMMDDHHmmss") + "\\"
 })
@@ -252,6 +256,12 @@ const newProjectFormItem: any = [
 		placeholder: "请输入ARTIFACT ID",
 		required: true
 	},
+	{
+		field: "artifactIdShort",
+		label: "ARTIFACT ID SHORT",
+		placeholder: "请输入ARTIFACT ID SHORT",
+		required: true
+	},
 	{
 		field: "packageName",
 		label: "PACKAGE NAME",