diff --git a/README.md b/README.md index 1b1dc10..a765d99 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Build Status Coverage Status - Downloads + Downloads

## SpringBlade微服务开发平台 diff --git a/blade-core-boot/pom.xml b/blade-core-boot/pom.xml index f6481a0..7382cba 100644 --- a/blade-core-boot/pom.xml +++ b/blade-core-boot/pom.xml @@ -5,7 +5,7 @@ org.springblade blade-tool - 2.4.0 + 2.4.1 4.0.0 diff --git a/blade-core-boot/src/main/resources/bootstrap.yml b/blade-core-boot/src/main/resources/bootstrap.yml index fb2e8d3..a3a0049 100644 --- a/blade-core-boot/src/main/resources/bootstrap.yml +++ b/blade-core-boot/src/main/resources/bootstrap.yml @@ -75,7 +75,7 @@ mybatis-plus: swagger: title: SpringBlade 接口文档系统 description: SpringBlade 接口文档系统 - version: 2.4.0 + version: 2.4.1 license: Powered By SpringBlade licenseUrl: https://bladex.vip terms-of-service-url: https://bladex.vip diff --git a/blade-core-cloud/pom.xml b/blade-core-cloud/pom.xml index a16cad2..878f352 100644 --- a/blade-core-cloud/pom.xml +++ b/blade-core-cloud/pom.xml @@ -5,7 +5,7 @@ blade-tool org.springblade - 2.4.0 + 2.4.1 4.0.0 diff --git a/blade-core-develop/pom.xml b/blade-core-develop/pom.xml index 561615f..cc9d1a9 100644 --- a/blade-core-develop/pom.xml +++ b/blade-core-develop/pom.xml @@ -5,7 +5,7 @@ blade-tool org.springblade - 2.4.0 + 2.4.1 4.0.0 diff --git a/blade-core-develop/src/main/java/org/springblade/develop/CodeGenerator.java b/blade-core-develop/src/main/java/org/springblade/develop/CodeGenerator.java index 483dcec..2115088 100644 --- a/blade-core-develop/src/main/java/org/springblade/develop/CodeGenerator.java +++ b/blade-core-develop/src/main/java/org/springblade/develop/CodeGenerator.java @@ -64,7 +64,7 @@ public class CodeGenerator { /** * 基础业务字段 */ - public static String[] SUPER_ENTITY_COLUMNS = {"id", "create_time", "create_user", "update_time", "update_user", "status", "is_deleted"}; + public static String[] SUPER_ENTITY_COLUMNS = {"create_time", "create_user", "update_time", "update_user", "status", "is_deleted"}; /** diff --git a/blade-core-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java b/blade-core-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java index 83de2ca..395fb63 100644 --- a/blade-core-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java +++ b/blade-core-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java @@ -16,12 +16,14 @@ package org.springblade.develop.support; import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; +import com.baomidou.mybatisplus.generator.config.converts.OracleTypeConvert; import com.baomidou.mybatisplus.generator.config.converts.PostgreSqlTypeConvert; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; @@ -86,10 +88,14 @@ public class BladeCodeGenerator { * 是否包含基础业务字段 */ private Boolean hasSuperEntity = Boolean.FALSE; + /** + * 是否包含包装器 + */ + private Boolean hasWrapper = Boolean.FALSE; /** * 基础业务字段 */ - private String[] superEntityColumns = {"id", "create_time", "create_user", "update_time", "update_user", "status", "is_deleted"}; + private String[] superEntityColumns = {"create_time", "create_user", "create_dept", "update_time", "update_user", "status", "is_deleted"}; /** * 租户字段 */ @@ -98,6 +104,22 @@ public class BladeCodeGenerator { * 是否启用swagger */ private Boolean isSwagger2 = Boolean.TRUE; + /** + * 数据库驱动名 + */ + private String driverName; + /** + * 数据库链接地址 + */ + private String url; + /** + * 数据库用户名 + */ + private String username; + /** + * 数据库密码 + */ + private String password; public void run() { Properties props = getProperties(); @@ -121,18 +143,21 @@ public class BladeCodeGenerator { gc.setSwagger2(isSwagger2); mpg.setGlobalConfig(gc); DataSourceConfig dsc = new DataSourceConfig(); - String driverName = props.getProperty("spring.datasource.driver-class-name"); + String driverName = Func.toStr(this.driverName, props.getProperty("spring.datasource.driver-class-name")); if (StringUtil.containsAny(driverName, DbType.MYSQL.getDb())) { dsc.setDbType(DbType.MYSQL); dsc.setTypeConvert(new MySqlTypeConvert()); - } else { + } else if (StringUtil.containsAny(driverName, DbType.POSTGRE_SQL.getDb())) { dsc.setDbType(DbType.POSTGRE_SQL); dsc.setTypeConvert(new PostgreSqlTypeConvert()); + } else { + dsc.setDbType(DbType.ORACLE); + dsc.setTypeConvert(new OracleTypeConvert()); } - dsc.setUrl(props.getProperty("spring.datasource.url")); dsc.setDriverName(driverName); - dsc.setUsername(props.getProperty("spring.datasource.username")); - dsc.setPassword(props.getProperty("spring.datasource.password")); + dsc.setUrl(Func.toStr(this.url, props.getProperty("spring.datasource.url"))); + dsc.setUsername(Func.toStr(this.username, props.getProperty("spring.datasource.username"))); + dsc.setPassword(Func.toStr(this.password, props.getProperty("spring.datasource.password"))); mpg.setDataSource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); @@ -186,6 +211,7 @@ public class BladeCodeGenerator { map.put("serviceName", serviceName); map.put("servicePackage", servicePackage); map.put("tenantColumn", tenantColumn); + map.put("hasWrapper", hasWrapper); this.setMap(map); } }; @@ -194,7 +220,12 @@ public class BladeCodeGenerator { @Override public String outputFile(TableInfo tableInfo) { map.put("entityKey", (tableInfo.getEntityName().toLowerCase())); - return getOutputDir() + "/" + "/templates/sql/" + tableInfo.getEntityName().toLowerCase() + ".menu.mysql"; + map.put("menuId", IdWorker.getId()); + map.put("addMenuId", IdWorker.getId()); + map.put("editMenuId", IdWorker.getId()); + map.put("removeMenuId", IdWorker.getId()); + map.put("viewMenuId", IdWorker.getId()); + return getOutputDir() + "/" + "/sql/" + tableInfo.getEntityName().toLowerCase() + ".menu.mysql"; } }); focList.add(new FileOutConfig("/templates/entityVO.java.vm") { @@ -209,12 +240,14 @@ public class BladeCodeGenerator { return getOutputDir() + "/" + packageName.replace(".", "/") + "/" + "dto" + "/" + tableInfo.getEntityName() + "DTO" + StringPool.DOT_JAVA; } }); - focList.add(new FileOutConfig("/templates/wrapper.java.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputDir() + "/" + packageName.replace(".", "/") + "/" + "wrapper" + "/" + tableInfo.getEntityName() + "Wrapper" + StringPool.DOT_JAVA; - } - }); + if (hasWrapper) { + focList.add(new FileOutConfig("/templates/wrapper.java.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputDir() + "/" + packageName.replace(".", "/") + "/" + "wrapper" + "/" + tableInfo.getEntityName() + "Wrapper" + StringPool.DOT_JAVA; + } + }); + } if (Func.isNotBlank(packageWebDir)) { if (Func.equals(systemName, DevelopConstant.SWORD_NAME)) { focList.add(new FileOutConfig("/templates/sword/action.js.vm") { diff --git a/blade-core-develop/src/main/resources/templates/controller.java.vm b/blade-core-develop/src/main/resources/templates/controller.java.vm index 95ba868..e145040 100644 --- a/blade-core-develop/src/main/resources/templates/controller.java.vm +++ b/blade-core-develop/src/main/resources/templates/controller.java.vm @@ -1,11 +1,11 @@ /** * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). *

- * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

- * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.gnu.org/licenses/lgpl.html *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -16,8 +16,8 @@ package $!{package.Controller}; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperationSupport; +import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import javax.validation.Valid; @@ -35,14 +35,15 @@ import $!{package.Entity}.$!{entity}; #set($voPackage=$package.Entity.replace("entity","vo")) import $!{voPackage}.$!{entity}VO; #set($wrapperPackage=$package.Entity.replace("entity","wrapper")) +#if($!{cfg.hasWrapper}) import $!{wrapperPackage}.$!{entity}Wrapper; +#end import $!{package.Service}.$!{table.serviceName}; #if($!{superControllerClassPackage}) import $!{superControllerClassPackage}; #end #if(!$!{superEntityClass}) #end -import java.util.List; /** * $!{table.comment} 控制器 @@ -62,11 +63,12 @@ public class $!{table.controllerName} { private $!{table.serviceName} $!{table.entityPath}Service; +#if($!{cfg.hasWrapper}) /** - * 详情 - */ + * 详情 + */ @GetMapping("/detail") - @ApiOperationSupport(order = 1) + @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入$!{table.entityPath}") public R<$!{entity}VO> detail($!{entity} $!{table.entityPath}) { $!{entity} detail = $!{table.entityPath}Service.getOne(Condition.getQueryWrapper($!{table.entityPath})); @@ -74,21 +76,45 @@ public class $!{table.controllerName} { } /** - * 分页 $!{table.comment} - */ + * 分页 $!{table.comment} + */ @GetMapping("/list") - @ApiOperationSupport(order = 2) + @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入$!{table.entityPath}") public R> list($!{entity} $!{table.entityPath}, Query query) { IPage<$!{entity}> pages = $!{table.entityPath}Service.page(Condition.getPage(query), Condition.getQueryWrapper($!{table.entityPath})); return R.data($!{entity}Wrapper.build().pageVO(pages)); } +#else /** - * 自定义分页 $!{table.comment} - */ + * 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入$!{table.entityPath}") + public R<$!{entity}> detail($!{entity} $!{table.entityPath}) { + $!{entity} detail = $!{table.entityPath}Service.getOne(Condition.getQueryWrapper($!{table.entityPath})); + return R.data(detail); + } + + /** + * 分页 $!{table.comment} + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入$!{table.entityPath}") + public R> list($!{entity} $!{table.entityPath}, Query query) { + IPage<$!{entity}> pages = $!{table.entityPath}Service.page(Condition.getPage(query), Condition.getQueryWrapper($!{table.entityPath})); + return R.data(pages); + } +#end + + /** + * 自定义分页 $!{table.comment} + */ @GetMapping("/page") - @ApiOperationSupport(order = 3) + @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入$!{table.entityPath}") public R> page($!{entity}VO $!{table.entityPath}, Query query) { IPage<$!{entity}VO> pages = $!{table.entityPath}Service.select$!{entity}Page(Condition.getPage(query), $!{table.entityPath}); @@ -96,30 +122,30 @@ public class $!{table.controllerName} { } /** - * 新增 $!{table.comment} - */ + * 新增 $!{table.comment} + */ @PostMapping("/save") - @ApiOperationSupport(order = 4) + @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入$!{table.entityPath}") public R save(@Valid @RequestBody $!{entity} $!{table.entityPath}) { return R.status($!{table.entityPath}Service.save($!{table.entityPath})); } /** - * 修改 $!{table.comment} - */ + * 修改 $!{table.comment} + */ @PostMapping("/update") - @ApiOperationSupport(order = 5) + @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入$!{table.entityPath}") public R update(@Valid @RequestBody $!{entity} $!{table.entityPath}) { return R.status($!{table.entityPath}Service.updateById($!{table.entityPath})); } /** - * 新增或修改 $!{table.comment} - */ + * 新增或修改 $!{table.comment} + */ @PostMapping("/submit") - @ApiOperationSupport(order = 6) + @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入$!{table.entityPath}") public R submit(@Valid @RequestBody $!{entity} $!{table.entityPath}) { return R.status($!{table.entityPath}Service.saveOrUpdate($!{table.entityPath})); @@ -128,10 +154,10 @@ public class $!{table.controllerName} { #if($!{superEntityClass}) /** - * 删除 $!{table.comment} - */ + * 删除 $!{table.comment} + */ @PostMapping("/remove") - @ApiOperationSupport(order = 7) + @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status($!{table.entityPath}Service.deleteLogic(Func.toIntList(ids))); @@ -140,10 +166,10 @@ public class $!{table.controllerName} { #else /** - * 删除 $!{table.comment} - */ + * 删除 $!{table.comment} + */ @PostMapping("/remove") - @ApiOperationSupport(order = 7) + @ApiOperationSupport(order = 8) @ApiOperation(value = "删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status($!{table.entityPath}Service.removeByIds(Func.toIntList(ids))); diff --git a/blade-core-develop/src/main/resources/templates/saber/crud.vue.vm b/blade-core-develop/src/main/resources/templates/saber/crud.vue.vm index df1482e..319a467 100644 --- a/blade-core-develop/src/main/resources/templates/saber/crud.vue.vm +++ b/blade-core-develop/src/main/resources/templates/saber/crud.vue.vm @@ -1,6 +1,7 @@