🎉 2.4.1.RELEASE

This commit is contained in:
smallchill 2019-08-19 22:26:45 +08:00
parent 061cdac58e
commit f7f9875031
20 changed files with 129 additions and 61 deletions

View File

@ -1,7 +1,7 @@
<p align="center"> <p align="center">
<img src="https://img.shields.io/badge/license-LGPL%20v3-blue.svg" alt="Build Status"> <img src="https://img.shields.io/badge/license-LGPL%20v3-blue.svg" alt="Build Status">
<img src="https://img.shields.io/badge/Spring%20Cloud-Greenwich.SR2-blue.svg" alt="Coverage Status"> <img src="https://img.shields.io/badge/Spring%20Cloud-Greenwich.SR2-blue.svg" alt="Coverage Status">
<img src="https://img.shields.io/badge/Spring%20Boot-2.1.6.RELEASE-blue.svg" alt="Downloads"> <img src="https://img.shields.io/badge/Spring%20Boot-2.1.7.RELEASE-blue.svg" alt="Downloads">
</p> </p>
## SpringBlade微服务开发平台 ## SpringBlade微服务开发平台

View File

@ -5,7 +5,7 @@
<parent> <parent>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -75,7 +75,7 @@ mybatis-plus:
swagger: swagger:
title: SpringBlade 接口文档系统 title: SpringBlade 接口文档系统
description: SpringBlade 接口文档系统 description: SpringBlade 接口文档系统
version: 2.4.0 version: 2.4.1
license: Powered By SpringBlade license: Powered By SpringBlade
licenseUrl: https://bladex.vip licenseUrl: https://bladex.vip
terms-of-service-url: https://bladex.vip terms-of-service-url: https://bladex.vip

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -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"};
/** /**

View File

@ -16,12 +16,14 @@
package org.springblade.develop.support; package org.springblade.develop.support;
import com.baomidou.mybatisplus.annotation.DbType; 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.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; 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.converts.PostgreSqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
@ -86,10 +88,14 @@ public class BladeCodeGenerator {
* 是否包含基础业务字段 * 是否包含基础业务字段
*/ */
private Boolean hasSuperEntity = Boolean.FALSE; 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 * 是否启用swagger
*/ */
private Boolean isSwagger2 = Boolean.TRUE; private Boolean isSwagger2 = Boolean.TRUE;
/**
* 数据库驱动名
*/
private String driverName;
/**
* 数据库链接地址
*/
private String url;
/**
* 数据库用户名
*/
private String username;
/**
* 数据库密码
*/
private String password;
public void run() { public void run() {
Properties props = getProperties(); Properties props = getProperties();
@ -121,18 +143,21 @@ public class BladeCodeGenerator {
gc.setSwagger2(isSwagger2); gc.setSwagger2(isSwagger2);
mpg.setGlobalConfig(gc); mpg.setGlobalConfig(gc);
DataSourceConfig dsc = new DataSourceConfig(); 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())) { if (StringUtil.containsAny(driverName, DbType.MYSQL.getDb())) {
dsc.setDbType(DbType.MYSQL); dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert()); dsc.setTypeConvert(new MySqlTypeConvert());
} else { } else if (StringUtil.containsAny(driverName, DbType.POSTGRE_SQL.getDb())) {
dsc.setDbType(DbType.POSTGRE_SQL); dsc.setDbType(DbType.POSTGRE_SQL);
dsc.setTypeConvert(new PostgreSqlTypeConvert()); dsc.setTypeConvert(new PostgreSqlTypeConvert());
} else {
dsc.setDbType(DbType.ORACLE);
dsc.setTypeConvert(new OracleTypeConvert());
} }
dsc.setUrl(props.getProperty("spring.datasource.url"));
dsc.setDriverName(driverName); dsc.setDriverName(driverName);
dsc.setUsername(props.getProperty("spring.datasource.username")); dsc.setUrl(Func.toStr(this.url, props.getProperty("spring.datasource.url")));
dsc.setPassword(props.getProperty("spring.datasource.password")); 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); mpg.setDataSource(dsc);
// 策略配置 // 策略配置
StrategyConfig strategy = new StrategyConfig(); StrategyConfig strategy = new StrategyConfig();
@ -186,6 +211,7 @@ public class BladeCodeGenerator {
map.put("serviceName", serviceName); map.put("serviceName", serviceName);
map.put("servicePackage", servicePackage); map.put("servicePackage", servicePackage);
map.put("tenantColumn", tenantColumn); map.put("tenantColumn", tenantColumn);
map.put("hasWrapper", hasWrapper);
this.setMap(map); this.setMap(map);
} }
}; };
@ -194,7 +220,12 @@ public class BladeCodeGenerator {
@Override @Override
public String outputFile(TableInfo tableInfo) { public String outputFile(TableInfo tableInfo) {
map.put("entityKey", (tableInfo.getEntityName().toLowerCase())); 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") { 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; return getOutputDir() + "/" + packageName.replace(".", "/") + "/" + "dto" + "/" + tableInfo.getEntityName() + "DTO" + StringPool.DOT_JAVA;
} }
}); });
if (hasWrapper) {
focList.add(new FileOutConfig("/templates/wrapper.java.vm") { focList.add(new FileOutConfig("/templates/wrapper.java.vm") {
@Override @Override
public String outputFile(TableInfo tableInfo) { public String outputFile(TableInfo tableInfo) {
return getOutputDir() + "/" + packageName.replace(".", "/") + "/" + "wrapper" + "/" + tableInfo.getEntityName() + "Wrapper" + StringPool.DOT_JAVA; return getOutputDir() + "/" + packageName.replace(".", "/") + "/" + "wrapper" + "/" + tableInfo.getEntityName() + "Wrapper" + StringPool.DOT_JAVA;
} }
}); });
}
if (Func.isNotBlank(packageWebDir)) { if (Func.isNotBlank(packageWebDir)) {
if (Func.equals(systemName, DevelopConstant.SWORD_NAME)) { if (Func.equals(systemName, DevelopConstant.SWORD_NAME)) {
focList.add(new FileOutConfig("/templates/sword/action.js.vm") { focList.add(new FileOutConfig("/templates/sword/action.js.vm") {

View File

@ -1,11 +1,11 @@
/** /**
* Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
* <p> * <p>
* 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 not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* <p> * <p>
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.gnu.org/licenses/lgpl.html
* <p> * <p>
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
@ -16,8 +16,8 @@
package $!{package.Controller}; package $!{package.Controller};
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiOperationSupport; import io.swagger.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import javax.validation.Valid; import javax.validation.Valid;
@ -35,14 +35,15 @@ import $!{package.Entity}.$!{entity};
#set($voPackage=$package.Entity.replace("entity","vo")) #set($voPackage=$package.Entity.replace("entity","vo"))
import $!{voPackage}.$!{entity}VO; import $!{voPackage}.$!{entity}VO;
#set($wrapperPackage=$package.Entity.replace("entity","wrapper")) #set($wrapperPackage=$package.Entity.replace("entity","wrapper"))
#if($!{cfg.hasWrapper})
import $!{wrapperPackage}.$!{entity}Wrapper; import $!{wrapperPackage}.$!{entity}Wrapper;
#end
import $!{package.Service}.$!{table.serviceName}; import $!{package.Service}.$!{table.serviceName};
#if($!{superControllerClassPackage}) #if($!{superControllerClassPackage})
import $!{superControllerClassPackage}; import $!{superControllerClassPackage};
#end #end
#if(!$!{superEntityClass}) #if(!$!{superEntityClass})
#end #end
import java.util.List;
/** /**
* $!{table.comment} 控制器 * $!{table.comment} 控制器
@ -62,6 +63,7 @@ public class $!{table.controllerName} {
private $!{table.serviceName} $!{table.entityPath}Service; private $!{table.serviceName} $!{table.entityPath}Service;
#if($!{cfg.hasWrapper})
/** /**
* 详情 * 详情
*/ */
@ -84,6 +86,30 @@ public class $!{table.controllerName} {
return R.data($!{entity}Wrapper.build().pageVO(pages)); return R.data($!{entity}Wrapper.build().pageVO(pages));
} }
#else
/**
* 详情
*/
@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<IPage<$!{entity}>> 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} * 自定义分页 $!{table.comment}
*/ */
@ -143,7 +169,7 @@ public class $!{table.controllerName} {
* 删除 $!{table.comment} * 删除 $!{table.comment}
*/ */
@PostMapping("/remove") @PostMapping("/remove")
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 8)
@ApiOperation(value = "删除", notes = "传入ids") @ApiOperation(value = "删除", notes = "传入ids")
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status($!{table.entityPath}Service.removeByIds(Func.toIntList(ids))); return R.status($!{table.entityPath}Service.removeByIds(Func.toIntList(ids)));

View File

@ -1,6 +1,7 @@
<template> <template>
<basic-container> <basic-container>
<avue-crud :option="option" <avue-crud :option="option"
:table-loading="loading"
:data="data" :data="data"
:page="page" :page="page"
:permission="permissionList" :permission="permissionList"
@ -38,6 +39,7 @@
return { return {
form: {}, form: {},
query: {}, query: {},
loading: true,
page: { page: {
pageSize: 10, pageSize: 10,
currentPage: 1, currentPage: 1,
@ -172,6 +174,10 @@
selectionChange(list) { selectionChange(list) {
this.selectionList = list; this.selectionList = list;
}, },
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage){ currentChange(currentPage){
this.page.currentPage = currentPage; this.page.currentPage = currentPage;
}, },
@ -179,10 +185,13 @@
this.page.pageSize = pageSize; this.page.pageSize = pageSize;
}, },
onLoad(page, params = {}) { onLoad(page, params = {}) {
this.loading = true;
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
const data = res.data.data; const data = res.data.data;
this.page.total = data.total; this.page.total = data.total;
this.data = data.records; this.data = data.records;
this.loading = false;
this.selectionClear();
}); });
} }
} }

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -25,7 +25,7 @@ public interface AppConstant {
/** /**
* 应用版本 * 应用版本
*/ */
String APPLICATION_VERSION = "2.4.0"; String APPLICATION_VERSION = "2.4.1";
/** /**
* 基础包 * 基础包

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -55,7 +55,7 @@ public class SwaggerProperties {
/** /**
* 版本 * 版本
**/ **/
private String version = "2.4.0"; private String version = "2.4.1";
/** /**
* 许可证 * 许可证
**/ **/

View File

@ -5,7 +5,7 @@
<parent> <parent>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<version>2.4.0</version> <version>2.4.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<artifactId>blade-tool</artifactId> <artifactId>blade-tool</artifactId>
<version>2.4.0</version> <version>2.4.1</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>blade-tool</name> <name>blade-tool</name>
<description> <description>
@ -36,13 +36,13 @@
</scm> </scm>
<properties> <properties>
<blade.tool.version>2.4.0</blade.tool.version> <blade.tool.version>2.4.1</blade.tool.version>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<maven.plugin.version>3.8.0</maven.plugin.version> <maven.plugin.version>3.8.0</maven.plugin.version>
<swagger.version>2.9.2</swagger.version> <swagger.version>2.9.2</swagger.version>
<swagger.models.version>1.5.21</swagger.models.version> <swagger.models.version>1.5.21</swagger.models.version>
<swagger.bootstrapui.version>1.9.5</swagger.bootstrapui.version> <swagger.bootstrapui.version>1.9.4</swagger.bootstrapui.version>
<mybatis.plus.version>3.1.2</mybatis.plus.version> <mybatis.plus.version>3.1.2</mybatis.plus.version>
<curator.framework.version>4.0.1</curator.framework.version> <curator.framework.version>4.0.1</curator.framework.version>
<protostuff.version>1.6.0</protostuff.version> <protostuff.version>1.6.0</protostuff.version>
@ -51,7 +51,7 @@
<mica.auto.version>1.1.0</mica.auto.version> <mica.auto.version>1.1.0</mica.auto.version>
<alibaba.cloud.version>2.1.0.RELEASE</alibaba.cloud.version> <alibaba.cloud.version>2.1.0.RELEASE</alibaba.cloud.version>
<spring.boot.version>2.1.6.RELEASE</spring.boot.version> <spring.boot.version>2.1.7.RELEASE</spring.boot.version>
<spring.cloud.version>Greenwich.SR2</spring.cloud.version> <spring.cloud.version>Greenwich.SR2</spring.cloud.version>
<spring.platform.version>Cairo-SR8</spring.platform.version> <spring.platform.version>Cairo-SR8</spring.platform.version>