diff --git a/src/main/java/com/youlai/system/model/entity/GenConfig.java b/src/main/java/com/youlai/system/model/entity/GenConfig.java index 59dcd5c5..97d9e6ef 100644 --- a/src/main/java/com/youlai/system/model/entity/GenConfig.java +++ b/src/main/java/com/youlai/system/model/entity/GenConfig.java @@ -3,7 +3,6 @@ package com.youlai.system.model.entity; import com.baomidou.mybatisplus.annotation.*; import com.youlai.system.common.base.BaseEntity; -import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -44,7 +43,7 @@ public class GenConfig extends BaseEntity { private String businessName; /** - * 上级菜单ID + * 父菜单ID */ private Long parentMenuId; diff --git a/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java b/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java index fbc215ea..0609ecb0 100644 --- a/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java +++ b/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java @@ -93,7 +93,6 @@ public class GenFieldConfig extends BaseEntity { */ private Integer isRequired; - /** * TypeScript类型 */ @@ -101,12 +100,8 @@ public class GenFieldConfig extends BaseEntity { @JsonIgnore private String tsType; - /** * 字典类型 */ private String dictType; - - @TableLogic - private Integer isDeleted; } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/form/GenConfigForm.java b/src/main/java/com/youlai/system/model/form/GenConfigForm.java index ffb6ecb3..7e2ea6a2 100644 --- a/src/main/java/com/youlai/system/model/form/GenConfigForm.java +++ b/src/main/java/com/youlai/system/model/form/GenConfigForm.java @@ -38,6 +38,9 @@ public class GenConfigForm { @Schema(description = "作者",example = "youlaitech") private String author; + @Schema(description = "上级菜单ID",example = "1") + private Long parentMenuId; + @Schema(description = "字段配置列表") private List fieldConfigs; diff --git a/src/main/java/com/youlai/system/service/SysMenuService.java b/src/main/java/com/youlai/system/service/SysMenuService.java index 26f359c3..f084c223 100644 --- a/src/main/java/com/youlai/system/service/SysMenuService.java +++ b/src/main/java/com/youlai/system/service/SysMenuService.java @@ -63,4 +63,12 @@ public interface SysMenuService extends IService { * @param id 菜单ID */ boolean deleteMenu(Long id); + + /** + * 为代码生成添加菜单 + * + * @param parentMenuId 父菜单ID + * @param entityName 实体名 + */ + void addMenuForCodeGeneration(Long parentMenuId,String businessName, String entityName); } diff --git a/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java b/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java index 725b3b21..c4c2f97c 100644 --- a/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java @@ -30,6 +30,7 @@ import com.youlai.system.model.vo.TablePageVO; import com.youlai.system.service.GeneratorService; import com.youlai.system.service.GenConfigService; import com.youlai.system.service.GenFieldConfigService; +import com.youlai.system.service.SysMenuService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -52,6 +53,7 @@ public class GeneratorServiceImpl implements GeneratorService { private final GenConfigService genConfigService; private final GenFieldConfigService genFieldConfigService; private final GenConfigConverter genConfigConverter; + private final SysMenuService menuService; /** * 数据表分页列表 @@ -98,9 +100,6 @@ public class GeneratorServiceImpl implements GeneratorService { String entityName = StrUtil.toCamelCase(StrUtil.removePrefix(tableName, tableName.split("_")[0])); genConfig.setEntityName(entityName); - String packageName = SystemApplication.class.getPackageName(); - genConfig.setPackageName(packageName); - genConfig.setAuthor(generatorProperties.getDefaultConfig().getAuthor()); } @@ -125,7 +124,7 @@ public class GeneratorServiceImpl implements GeneratorService { .filter(item -> StrUtil.equals(item.getColumnName(), columnName)) .findFirst() .orElseGet(() -> createDefaultFieldConfig(tableColumn)); - if (genFieldConfig.getFieldSort() == null){ + if (genFieldConfig.getFieldSort() == null) { genFieldConfig.setFieldSort(++maxSort); } // 根据列类型设置字段类型 @@ -172,6 +171,12 @@ public class GeneratorServiceImpl implements GeneratorService { GenConfig genConfig = genConfigConverter.toGenConfig(formData); genConfigService.saveOrUpdate(genConfig); + // 如果选择上级菜单 + Long parentMenuId = formData.getParentMenuId(); + if (parentMenuId != null) { + menuService.addMenuForCodeGeneration(parentMenuId,genConfig.getBusinessName(),genConfig.getEntityName()); + } + List genFieldConfigs = genConfigConverter.toGenFieldConfig(formData.getFieldConfigs()); if (CollectionUtil.isEmpty(genFieldConfigs)) { diff --git a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java index d15a4f45..65b968ed 100644 --- a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java @@ -351,4 +351,41 @@ public class SysMenuServiceImpl extends ServiceImpl impl } + /** + * 为代码生成添加菜单 + * + * @param parentMenuId 父菜单ID + * @param entityName 实体名称 + */ + @Override + public void addMenuForCodeGeneration(Long parentMenuId, String businessName, String entityName) { + SysMenu parentMenu = this.getById(parentMenuId); + Assert.notNull(parentMenu, "父菜单不存在"); + + long count = this.count(new LambdaQueryWrapper().eq(SysMenu::getRouteName, entityName)); + if (count > 0) { + return; + } + + SysMenu menu = new SysMenu(); + menu.setParentId(parentMenuId); + menu.setName(businessName); + + menu.setRouteName(entityName); + menu.setRoutePath(StrUtil.toUnderlineCase(entityName)); + menu.setComponent(StrUtil.toUnderlineCase(entityName) + "/index"); + menu.setType(MenuTypeEnum.CATALOG); + menu.setSort(0); + menu.setVisible(1); + boolean result = this.save(menu); + + if (result) { + // 生成treePath + String treePath = generateMenuTreePath(parentMenuId); + menu.setTreePath(treePath); + this.updateById(menu); + } + + } + }