From 5d75b8294fec4455a12e715c794b5bc4dbe3003b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Tue, 16 Jul 2024 14:07:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90):=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=A8=A1=E6=9D=BF=E9=80=9A=E8=BF=87github=20?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=9B=B4=E6=96=B0=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit e449f424e2dec78c61a2e3a5984f06230b91fca8) --- db/0pigxx_boot.sql | 2 +- db/8pigxx_codegen.sql | 2 +- .../controller/GenTemplateController.java | 10 +++ .../codegen/service/GenTemplateService.java | 6 ++ .../service/impl/GenTemplateServiceImpl.java | 65 +++++++++++++++++-- .../service/impl/GeneratorServiceImpl.java | 23 ++++--- .../pigx/codegen/util/GeneratorStyleEnum.java | 4 +- 7 files changed, 92 insertions(+), 20 deletions(-) diff --git a/db/0pigxx_boot.sql b/db/0pigxx_boot.sql index c4a0e5f59..42859cdc2 100644 --- a/db/0pigxx_boot.sql +++ b/db/0pigxx_boot.sql @@ -2397,7 +2397,7 @@ CREATE TABLE `gen_table` ( `package_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '项目包名', `version` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '项目版本号', `i18n` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '是否生成带有i18n 0 不带有 1带有', - `style` bigint DEFAULT '1' COMMENT '代码风格', + `style` bigint DEFAULT NULL COMMENT '代码风格', `child_table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子表名称', `main_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主表关联键', `child_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子表关联键', diff --git a/db/8pigxx_codegen.sql b/db/8pigxx_codegen.sql index 2b3a5ca90..64816c65b 100644 --- a/db/8pigxx_codegen.sql +++ b/db/8pigxx_codegen.sql @@ -151,7 +151,7 @@ CREATE TABLE `gen_table` ( `package_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '项目包名', `version` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '项目版本号', `i18n` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '是否生成带有i18n 0 不带有 1带有', - `style` bigint DEFAULT '1' COMMENT '代码风格', + `style` bigint DEFAULT NULL COMMENT '代码风格', `child_table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子表名称', `main_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主表关联键', `child_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子表关联键', diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/controller/GenTemplateController.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/controller/GenTemplateController.java index b09ec494c..e8bffec57 100644 --- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/controller/GenTemplateController.java +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/controller/GenTemplateController.java @@ -167,5 +167,15 @@ public class GenTemplateController { return genTemplateService.onlineUpdate(); } + /** + * 检查版本 + * @return {@link R } + */ + @Operation(summary = "在线检查模板", description = "在线检查模板") + @GetMapping("/checkVersion") + @PreAuthorize("@pms.hasPermission('codegen_template_view')") + public R checkVersion() { + return genTemplateService.checkVersion(); + } } diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/GenTemplateService.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/GenTemplateService.java index 53692057f..7e6e3035d 100644 --- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/GenTemplateService.java +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/GenTemplateService.java @@ -29,6 +29,12 @@ import com.pig4cloud.pigx.common.core.util.R; */ public interface GenTemplateService extends IService { + /** + * 检查版本 + * @return {@link R } + */ + R checkVersion(); + /** * 在线更新 diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GenTemplateServiceImpl.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GenTemplateServiceImpl.java index 9ec494f0b..ffd5b1408 100644 --- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GenTemplateServiceImpl.java +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GenTemplateServiceImpl.java @@ -25,6 +25,7 @@ import cn.hutool.json.JSONUtil; import cn.smallbun.screw.core.constant.DefaultConstants; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.codegen.config.PigxCodeGenDefaultProperties; import com.pig4cloud.pigx.codegen.entity.GenGroupEntity; import com.pig4cloud.pigx.codegen.entity.GenTemplateEntity; import com.pig4cloud.pigx.codegen.entity.GenTemplateGroupEntity; @@ -40,7 +41,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -55,6 +58,8 @@ import java.util.Set; public class GenTemplateServiceImpl extends ServiceImpl implements GenTemplateService { + private final PigxCodeGenDefaultProperties defaultProperties; + private final GenTemplateGroupMapper genTemplateGroupMapper; private final GenGroupMapper genGroupMapper; @@ -68,12 +73,10 @@ public class GenTemplateServiceImpl extends ServiceImpl configAndVersion = getConfigAndVersion(); + JSONObject configJsonObj = (JSONObject) configAndVersion.get("configJsonObj"); + String versionFile = (String) configAndVersion.get("versionFile"); // 查询出全部的模板组名称 Set cgtmConfigGroupNames = configJsonObj.keySet(); @@ -90,10 +93,58 @@ public class GenTemplateServiceImpl extends ServiceImpl configAndVersion = getConfigAndVersion(); + JSONObject configJsonObj = (JSONObject) configAndVersion.get("configJsonObj"); + String versionFile = (String) configAndVersion.get("versionFile"); + + // 查询出全部的模板组名称 + boolean exists = false; + Set cgtmConfigGroupNames = configJsonObj.keySet(); + for (String cgtmConfigGroupName : cgtmConfigGroupNames) { + exists = genGroupMapper.exists(Wrappers.lambdaQuery() + .eq(GenGroupEntity::getGroupName, cgtmConfigGroupName + versionFile)); + } + + return R.ok(exists); + } + + /** + * 获取配置和版本 + * + * @return {@link Map }<{@link String }, {@link Object }> + */ + private Map getConfigAndVersion() { + // 获取 config.json 和 version 文件 + String configFile = getCGTMFile("config.json"); + String versionFile = getCGTMFile("VERSION"); + + // 解析 config.json + JSONObject configJsonObj = JSONUtil.parseObj(configFile); + + // 将 configJsonObj 和 versionFile 放入 Map 中 + Map configAndVersion = new HashMap<>(); + configAndVersion.put("configJsonObj", configJsonObj); + configAndVersion.put("versionFile", versionFile); + + return configAndVersion; + } + + /** * 插入模板文件 * diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GeneratorServiceImpl.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GeneratorServiceImpl.java index bb10ea51b..d00e03908 100755 --- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GeneratorServiceImpl.java +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/service/impl/GeneratorServiceImpl.java @@ -25,6 +25,7 @@ import cn.hutool.core.text.NamingCase; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pig4cloud.pigx.codegen.config.PigxCodeGenDefaultProperties; import com.pig4cloud.pigx.codegen.entity.GenFormConf; import com.pig4cloud.pigx.codegen.entity.GenTable; @@ -34,6 +35,7 @@ import com.pig4cloud.pigx.codegen.service.*; import com.pig4cloud.pigx.codegen.util.GeneratorStyleEnum; import com.pig4cloud.pigx.codegen.util.VelocityKit; import com.pig4cloud.pigx.codegen.util.vo.GroupVO; +import com.pig4cloud.pigx.common.core.exception.CheckedException; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -188,16 +190,17 @@ public class GeneratorServiceImpl implements GeneratorService { Map dataModel = getDataModel(genTable.getId()); // 获取模板信息,Lambda 表达式简化代码 - GenTemplateEntity genTemplateEntity = Optional - .ofNullable(genTemplateService.getById(GeneratorStyleEnum.VFORM_JSON.getTemplateId())) - .orElseThrow(() -> new Exception("模板不存在")); - + GenTemplateEntity genTemplateEntity = genTemplateService.getOneOpt(Wrappers.lambdaQuery() + .likeRight(GenTemplateEntity::getTemplateName, GeneratorStyleEnum.VFORM_JSON.getDesc()) + .orderByDesc(GenTemplateEntity::getCreateTime) + ) + .orElseThrow(() -> new CheckedException("模板不存在")); // 渲染模板并返回结果 return VelocityKit.renderStr(genTemplateEntity.getTemplateCode(), dataModel); } /** - * 获取表单设计器需要的 JSON 方法 + * 获取sfc vue * * @param id 表单配置 ID * @return JSON 字符串 @@ -220,10 +223,12 @@ public class GeneratorServiceImpl implements GeneratorService { // 遍历 widgetList dataModel.put("resultMap", resultMap); - // 获取模板信息 - GenTemplateEntity genTemplateEntity = Optional - .ofNullable(genTemplateService.getById(GeneratorStyleEnum.VFORM_FORM.getTemplateId())) - .orElseThrow(() -> new Exception("模板不存在")); + // 获取模板信息 查询模板中最新的 vform.json 文件 + GenTemplateEntity genTemplateEntity = genTemplateService.getOneOpt(Wrappers.lambdaQuery() + .likeRight(GenTemplateEntity::getTemplateName, GeneratorStyleEnum.VFORM_VUE.getDesc()) + .orderByDesc(GenTemplateEntity::getCreateTime) + ) + .orElseThrow(() -> new CheckedException("模板不存在")); // 渲染模板并返回结果 return VelocityKit.renderStr(genTemplateEntity.getTemplateCode(), dataModel); diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/util/GeneratorStyleEnum.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/util/GeneratorStyleEnum.java index 1de308c33..ce9fac70d 100644 --- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/util/GeneratorStyleEnum.java +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/util/GeneratorStyleEnum.java @@ -12,9 +12,9 @@ import lombok.Getter; @AllArgsConstructor public enum GeneratorStyleEnum { - VFORM_JSON(1L, "element-plus 风格"), + VFORM_JSON(1L, "vform.json"), - VFORM_FORM(2L, "uview 风格"); + VFORM_VUE(2L, "vform.vue"); /** * 对应模板ID