diff --git a/blade-auth/pom.xml b/blade-auth/pom.xml index 1189c84..7b34166 100644 --- a/blade-auth/pom.xml +++ b/blade-auth/pom.xml @@ -8,7 +8,7 @@ SpringBlade org.springblade - 2.0.0 + 2.1.0 blade-auth diff --git a/blade-auth/src/main/java/org/springblade/auth/controller/AuthController.java b/blade-auth/src/main/java/org/springblade/auth/controller/AuthController.java index 6678159..ba1a919 100644 --- a/blade-auth/src/main/java/org/springblade/auth/controller/AuthController.java +++ b/blade-auth/src/main/java/org/springblade/auth/controller/AuthController.java @@ -19,7 +19,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; -import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.secure.AuthInfo; import org.springblade.core.secure.utils.SecureUtil; import org.springblade.core.tool.api.R; @@ -45,24 +44,24 @@ import java.util.Map; @Api(value = "用户授权认证", tags = "授权接口") public class AuthController { - IUserClient client; + private IUserClient client; - @ApiLog("登录用户验证") @PostMapping("token") - @ApiOperation(value = "获取认证token", notes = "传入账号:account,密码:password") - public R token(@ApiParam(value = "账号", required = true) @RequestParam String account, + @ApiOperation(value = "获取认证token", notes = "传入租户编号:tenantCode,账号:account,密码:password") + public R token(@ApiParam(value = "租户编号", required = true) @RequestParam String tenantCode, + @ApiParam(value = "账号", required = true) @RequestParam String account, @ApiParam(value = "密码", required = true) @RequestParam String password) { if (Func.hasEmpty(account, password)) { return R.fail("接口调用不合法"); } - R res = client.userInfo(account, DigestUtil.encrypt(password)); + R res = client.userInfo(tenantCode, account, DigestUtil.encrypt(password)); User user = res.getData().getUser(); //验证用户 - if (user == null || Func.isEmpty(user.getId())) { + if (Func.isEmpty(user.getId())) { return R.fail("用户名或密码不正确"); } @@ -70,6 +69,7 @@ public class AuthController { Map param = new HashMap<>(16); param.put(SecureUtil.USER_ID, Func.toStr(user.getId())); param.put(SecureUtil.ROLE_ID, user.getRoleId()); + param.put(SecureUtil.TENANT_CODE, user.getTenantCode()); param.put(SecureUtil.ACCOUNT, user.getAccount()); param.put(SecureUtil.USER_NAME, user.getRealName()); param.put(SecureUtil.ROLE_NAME, Func.join(res.getData().getRoles())); diff --git a/blade-common/pom.xml b/blade-common/pom.xml index 41c103a..c0e4754 100644 --- a/blade-common/pom.xml +++ b/blade-common/pom.xml @@ -5,7 +5,7 @@ SpringBlade org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java b/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java index 76f5e89..6a0d9d6 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java @@ -27,6 +27,16 @@ public interface CommonConstant { */ String SENTINEL_PROD_ADDR = "192.168.186.129:8858"; + /** + * sword 系统名 + */ + String SWORD_NAME = "sword"; + + /** + * saber 系统名 + */ + String SABER_NAME = "saber"; + /** * 顶级父节点id */ diff --git a/blade-gateway/pom.xml b/blade-gateway/pom.xml index 43c2d71..190e197 100644 --- a/blade-gateway/pom.xml +++ b/blade-gateway/pom.xml @@ -5,7 +5,7 @@ SpringBlade org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-ops/blade-admin/pom.xml b/blade-ops/blade-admin/pom.xml index 45ed799..5366747 100644 --- a/blade-ops/blade-admin/pom.xml +++ b/blade-ops/blade-admin/pom.xml @@ -5,7 +5,7 @@ blade-ops org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-ops/blade-develop/pom.xml b/blade-ops/blade-develop/pom.xml index 8df2e6f..9e4bfd9 100644 --- a/blade-ops/blade-develop/pom.xml +++ b/blade-ops/blade-develop/pom.xml @@ -6,7 +6,7 @@ org.springblade blade-ops - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java b/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java index c5eed5f..d9973ff 100644 --- a/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java +++ b/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java @@ -25,7 +25,7 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.develop.entity.Code; import org.springblade.develop.service.ICodeService; -import org.springblade.develop.support.BladeGenerator; +import org.springblade.develop.support.BladeCodeGenerator; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; @@ -37,7 +37,6 @@ import java.util.Map; * 控制器 * * @author Chill - * @since 2018-12-24 */ @RestController @AllArgsConstructor @@ -86,7 +85,7 @@ public class CodeController extends BladeController { * 删除 */ @PostMapping("/remove") - @ApiOperation(value = "物理删除", notes = "传入ids", position = 7) + @ApiOperation(value = "删除", notes = "传入ids", position = 7) public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(codeService.removeByIds(Func.toIntList(ids))); } @@ -96,11 +95,13 @@ public class CodeController extends BladeController { */ @PostMapping("/gen-code") @ApiOperation(value = "代码生成", notes = "传入ids", position = 8) - public R genCode(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + public R genCode(@ApiParam(value = "主键集合", required = true) @RequestParam String ids, @RequestParam(defaultValue = "sword") String system) { Collection codes = codeService.listByIds(Func.toIntList(ids)); codes.forEach(code -> { - BladeGenerator generator = new BladeGenerator(); + BladeCodeGenerator generator = new BladeCodeGenerator(); + generator.setSystemName(system); generator.setServiceName(code.getServiceName()); + generator.setCodeName(code.getCodeName()); generator.setPackageName(code.getPackageName()); generator.setPackageDir(code.getApiPath()); generator.setPackageWebDir(code.getWebPath()); diff --git a/blade-ops/blade-develop/src/main/java/org/springblade/develop/support/BladeGenerator.java b/blade-ops/blade-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java similarity index 69% rename from blade-ops/blade-develop/src/main/java/org/springblade/develop/support/BladeGenerator.java rename to blade-ops/blade-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java index a262b53..ba3ce22 100644 --- a/blade-ops/blade-develop/src/main/java/org/springblade/develop/support/BladeGenerator.java +++ b/blade-ops/blade-develop/src/main/java/org/springblade/develop/support/BladeCodeGenerator.java @@ -27,6 +27,7 @@ import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.CommonConstant; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springframework.core.io.ClassPathResource; @@ -44,7 +45,15 @@ import java.util.*; */ @Data @Slf4j -public class BladeGenerator { +public class BladeCodeGenerator { + /** + * 代码所在系统 + */ + private String systemName = CommonConstant.SWORD_NAME; + /** + * 代码模块名称 + */ + private String codeName; /** * 代码所在服务名 */ @@ -81,6 +90,10 @@ public class BladeGenerator { * 基础业务字段 */ private String[] superEntityColumns = {"id", "create_time", "create_user", "update_time", "update_user", "status", "is_deleted"}; + /** + * 租户字段 + */ + private String tenantColumn = "tenant_code"; /** * 是否启用swagger */ @@ -165,16 +178,25 @@ public class BladeGenerator { private InjectionConfig getInjectionConfig() { String servicePackage = serviceName.split("-").length > 1 ? serviceName.split("-")[1] : serviceName; // 自定义配置 + Map map = new HashMap<>(16); InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { - Map map = new HashMap<>(16); + map.put("codeName", codeName); map.put("serviceName", serviceName); map.put("servicePackage", servicePackage); + map.put("tenantColumn", tenantColumn); this.setMap(map); } }; List focList = new ArrayList<>(); + focList.add(new FileOutConfig("/templates/sql/menu.sql.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + map.put("entityKey", (tableInfo.getEntityName().toLowerCase())); + return getOutputDir() + "/" + "/sql/menu.mysql"; + } + }); focList.add(new FileOutConfig("/templates/entityVO.java.vm") { @Override public String outputFile(TableInfo tableInfo) { @@ -194,48 +216,63 @@ public class BladeGenerator { } }); if (Func.isNotBlank(packageWebDir)) { - focList.add(new FileOutConfig("/templates/sword/action.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/actions" + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; - } - }); - focList.add(new FileOutConfig("/templates/sword/model.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/models" + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; - } - }); - focList.add(new FileOutConfig("/templates/sword/service.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/services" + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; - } - }); - focList.add(new FileOutConfig("/templates/sword/list.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + ".js"; - } - }); - focList.add(new FileOutConfig("/templates/sword/add.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + "Add.js"; - } - }); - focList.add(new FileOutConfig("/templates/sword/edit.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + "Edit.js"; - } - }); - focList.add(new FileOutConfig("/templates/sword/view.js.vm") { - @Override - public String outputFile(TableInfo tableInfo) { - return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + "View.js"; - } - }); + if (Func.equals(systemName, CommonConstant.SWORD_NAME)) { + focList.add(new FileOutConfig("/templates/sword/action.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/actions" + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; + } + }); + focList.add(new FileOutConfig("/templates/sword/model.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/models" + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; + } + }); + focList.add(new FileOutConfig("/templates/sword/service.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/services" + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; + } + }); + focList.add(new FileOutConfig("/templates/sword/list.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + ".js"; + } + }); + focList.add(new FileOutConfig("/templates/sword/add.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + "Add.js"; + } + }); + focList.add(new FileOutConfig("/templates/sword/edit.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + "Edit.js"; + } + }); + focList.add(new FileOutConfig("/templates/sword/view.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/pages" + "/" + StringUtil.upperFirst(servicePackage) + "/" + tableInfo.getEntityName() + "/" + tableInfo.getEntityName() + "View.js"; + } + }); + } else if (Func.equals(systemName, CommonConstant.SABER_NAME)) { + focList.add(new FileOutConfig("/templates/saber/api.js.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/api" + "/" + servicePackage.toLowerCase() + "/" + tableInfo.getEntityName().toLowerCase() + ".js"; + } + }); + focList.add(new FileOutConfig("/templates/saber/crud.vue.vm") { + @Override + public String outputFile(TableInfo tableInfo) { + return getOutputWebDir() + "/views" + "/" + servicePackage.toLowerCase() + "/" + tableInfo.getEntityName().toLowerCase() + ".vue"; + } + }); + } } cfg.setFileOutConfigList(focList); return cfg; @@ -264,7 +301,7 @@ public class BladeGenerator { * @return outputDir */ public String getOutputDir() { - return Func.isBlank(packageDir) ? System.getProperty("user.dir") : packageDir + "/src/main/java"; + return (Func.isBlank(packageDir) ? System.getProperty("user.dir") + "/blade-ops/blade-develop" : packageDir) + "/src/main/java"; } /** @@ -273,7 +310,7 @@ public class BladeGenerator { * @return outputDir */ public String getOutputWebDir() { - return Func.isBlank(packageWebDir) ? System.getProperty("user.dir") : packageWebDir + "/src"; + return (Func.isBlank(packageWebDir) ? System.getProperty("user.dir") : packageWebDir) + "/src"; } /** diff --git a/blade-ops/blade-develop/src/main/resources/templates/controller.java.vm b/blade-ops/blade-develop/src/main/resources/templates/controller.java.vm index 49ff4c4..53f4578 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/controller.java.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/controller.java.vm @@ -52,7 +52,7 @@ import java.util.List; */ @RestController @AllArgsConstructor -@RequestMapping("#if($!{package.ModuleName})/$!{package.ModuleName}#end/$!{table.entityPath}") +@RequestMapping("#if($!{package.ModuleName})/$!{package.ModuleName}#end/$!{cfg.entityKey}") @Api(value = "$!{table.comment}", tags = "$!{table.comment}接口") #if($!{superControllerClass}) public class $!{table.controllerName} extends $!{superControllerClass} { @@ -140,7 +140,7 @@ public class $!{table.controllerName} { * 删除 $!{table.comment} */ @PostMapping("/remove") - @ApiOperation(value = "物理删除", notes = "传入ids", position = 7) + @ApiOperation(value = "删除", notes = "传入ids", position = 7) public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status($!{table.entityPath}Service.removeByIds(Func.toIntList(ids))); } diff --git a/blade-ops/blade-develop/src/main/resources/templates/entity.java.vm b/blade-ops/blade-develop/src/main/resources/templates/entity.java.vm index e182b7a..9ad9054 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/entity.java.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/entity.java.vm @@ -58,6 +58,7 @@ public class $!{entity} implements Serializable { ## ---------- BEGIN 字段循环遍历 ---------- #foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) #if($!{field.keyFlag}) #set($keyPropertyName=$!{field.propertyName}) #end @@ -98,7 +99,7 @@ public class $!{entity} implements Serializable { @TableLogic #end private $!{field.propertyType} $!{field.propertyName}; - +#end #end ## ---------- END 字段循环遍历 ---------- diff --git a/blade-ops/blade-develop/src/main/resources/templates/mapper.xml.vm b/blade-ops/blade-develop/src/main/resources/templates/mapper.xml.vm index 77eb3dc..9384ff7 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/mapper.xml.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/mapper.xml.vm @@ -19,26 +19,16 @@ #end #foreach($field in $!{table.fields}) -#if(!$!{field.keyFlag})##生成普通字段 +#if(!$!{field.keyFlag} && $!{field.name} != $!{cfg.tenantColumn})##生成普通字段 #end #end #end -#if($!{baseColumnList}) - - - select - #foreach($field in $!{table.commonFields}) - #if($!{field.name} == $!{field.propertyName})$!{field.name}#else$!{field.name} AS $!{field.propertyName}#end, - #end - $!{table.fieldNames} - -#end diff --git a/blade-ops/blade-develop/src/main/resources/templates/props/generator.properties b/blade-ops/blade-develop/src/main/resources/templates/props/generator.properties index 58bec8f..229dc31 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/props/generator.properties +++ b/blade-ops/blade-develop/src/main/resources/templates/props/generator.properties @@ -1,5 +1,5 @@ -spring.datasource.driver-class-name=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/bladex?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/blade?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=root -author=BladeX +author=Blade diff --git a/blade-ops/blade-develop/src/main/resources/templates/saber/api.js.vm b/blade-ops/blade-develop/src/main/resources/templates/saber/api.js.vm new file mode 100644 index 0000000..0ea8f9c --- /dev/null +++ b/blade-ops/blade-develop/src/main/resources/templates/saber/api.js.vm @@ -0,0 +1,50 @@ +import request from '@/router/axios'; + +export const getList = (current, size, params) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/list', + method: 'get', + params: { + ...params, + current, + size, + } + }) +} + +export const getDetail = (id) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/detail', + method: 'get', + params: { + id + } + }) +} + +export const remove = (ids) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/remove', + method: 'post', + params: { + ids, + } + }) +} + +export const add = (row) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/submit', + method: 'post', + data: row + }) +} + +export const update = (row) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/submit', + method: 'post', + data: row + }) +} + diff --git a/blade-ops/blade-develop/src/main/resources/templates/saber/crud.vue.vm b/blade-ops/blade-develop/src/main/resources/templates/saber/crud.vue.vm new file mode 100644 index 0000000..24dad04 --- /dev/null +++ b/blade-ops/blade-develop/src/main/resources/templates/saber/crud.vue.vm @@ -0,0 +1,176 @@ + + + + + diff --git a/blade-ops/blade-develop/src/main/resources/templates/sql/menu.sql.vm b/blade-ops/blade-develop/src/main/resources/templates/sql/menu.sql.vm new file mode 100644 index 0000000..753a969 --- /dev/null +++ b/blade-ops/blade-develop/src/main/resources/templates/sql/menu.sql.vm @@ -0,0 +1,11 @@ +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', 0, '$!{cfg.entityKey}', '$!{cfg.codeName}', 'menu', '/$!{cfg.servicePackage}/$!{cfg.entityKey}', NULL, 1, 1, 0, 1, NULL, 0); +set @parentid = (SELECT LAST_INSERT_ID()); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_add', '新增', 'add', '/$!{cfg.servicePackage}/$!{cfg.entityKey}/add', 'plus', 1, 2, 1, 1, NULL, 0); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_edit', '修改', 'edit', '/$!{cfg.servicePackage}/$!{cfg.entityKey}/edit', 'form', 2, 2, 1, 2, NULL, 0); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_delete', '删除', 'delete', '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/remove', 'delete', 3, 2, 1, 3, NULL, 0); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_view', '查看', 'view', '/$!{cfg.servicePackage}/$!{cfg.entityKey}/view', 'file-text', 4, 2, 1, 2, NULL, 0); diff --git a/blade-ops/blade-develop/src/main/resources/templates/sword/add.js.vm b/blade-ops/blade-develop/src/main/resources/templates/sword/add.js.vm index b1480a4..459b1bb 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/sword/add.js.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/sword/add.js.vm @@ -52,6 +52,7 @@ class $!{entity}Add extends PureComponent {
#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) {getFieldDecorator('$!{field.propertyName}', { rules: [ @@ -62,6 +63,7 @@ class $!{entity}Add extends PureComponent { ], })()} +#end #end
diff --git a/blade-ops/blade-develop/src/main/resources/templates/sword/edit.js.vm b/blade-ops/blade-develop/src/main/resources/templates/sword/edit.js.vm index 87d9903..ba2657c 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/sword/edit.js.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/sword/edit.js.vm @@ -10,7 +10,7 @@ const FormItem = Form.Item; @connect(({ $!{table.entityPath}, loading }) => ({ $!{table.entityPath}, - submitting: loading.effects['code/submit'], + submitting: loading.effects['$!{table.entityPath}/submit'], })) @Form.create() class $!{entity}Edit extends PureComponent { @@ -75,6 +75,7 @@ class $!{entity}Edit extends PureComponent {
#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) {getFieldDecorator('$!{field.propertyName}', { rules: [ @@ -86,6 +87,7 @@ class $!{entity}Edit extends PureComponent { initialValue: detail.$!{field.propertyName}, })()} +#end #end
diff --git a/blade-ops/blade-develop/src/main/resources/templates/sword/list.js.vm b/blade-ops/blade-develop/src/main/resources/templates/sword/list.js.vm index 72a6eef..ddb851b 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/sword/list.js.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/sword/list.js.vm @@ -10,7 +10,7 @@ const FormItem = Form.Item; @connect(({ $!{table.entityPath}, loading }) => ({ $!{table.entityPath}, - loading: loading.models.param, + loading: loading.models.$!{table.entityPath}, })) @Form.create() class $!{entity} extends PureComponent { @@ -57,10 +57,12 @@ class $!{entity} extends PureComponent { const columns = [ #foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) { title: '$!{field.comment}', dataIndex: '$!{field.propertyName}', }, +#end #end ]; diff --git a/blade-ops/blade-develop/src/main/resources/templates/sword/model.js.vm b/blade-ops/blade-develop/src/main/resources/templates/sword/model.js.vm index 54b40c1..9390b88 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/sword/model.js.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/sword/model.js.vm @@ -20,8 +20,12 @@ export default { yield put({ type: 'saveList', payload: { - list: response.data, - pagination: false, + list: response.data.records, + pagination: { + total: response.data.total, + current: response.data.current, + pageSize: response.data.size, + }, }, }); } diff --git a/blade-ops/blade-develop/src/main/resources/templates/sword/service.js.vm b/blade-ops/blade-develop/src/main/resources/templates/sword/service.js.vm index 47b9676..1ec606a 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/sword/service.js.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/sword/service.js.vm @@ -4,22 +4,22 @@ import func from '../utils/Func'; import request from '../utils/request'; export async function list(params) { - return request(`/api/$!{cfg.serviceName}/$!{table.entityPath}/list?$!{params}`); + return request(`/api/$!{cfg.serviceName}/$!{cfg.entityKey}/list?$!{params}`); } export async function submit(params) { - return request('/api/$!{cfg.serviceName}/$!{table.entityPath}/submit', { + return request('/api/$!{cfg.serviceName}/$!{cfg.entityKey}/submit', { method: 'POST', body: params, }); } export async function detail(params) { - return request(`/api/$!{cfg.serviceName}/$!{table.entityPath}/detail?$!{params}`); + return request(`/api/$!{cfg.serviceName}/$!{cfg.entityKey}/detail?$!{params}`); } export async function remove(params) { - return request('/api/$!{cfg.serviceName}/$!{table.entityPath}/remove', { + return request('/api/$!{cfg.serviceName}/$!{cfg.entityKey}/remove', { method: 'POST', body: func.toFormData(params), }); diff --git a/blade-ops/blade-develop/src/main/resources/templates/sword/view.js.vm b/blade-ops/blade-develop/src/main/resources/templates/sword/view.js.vm index 7ad0005..1104856 100644 --- a/blade-ops/blade-develop/src/main/resources/templates/sword/view.js.vm +++ b/blade-ops/blade-develop/src/main/resources/templates/sword/view.js.vm @@ -61,9 +61,11 @@ class $!{entity}View extends PureComponent {
#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) {detail.$!{field.propertyName}} +#end #end
diff --git a/blade-ops/blade-develop/src/main/java/org/springblade/develop/support/CodeGenerator.java b/blade-ops/blade-develop/src/test/java/org/springblade/test/CodeGenerator.java similarity index 58% rename from blade-ops/blade-develop/src/main/java/org/springblade/develop/support/CodeGenerator.java rename to blade-ops/blade-develop/src/test/java/org/springblade/test/CodeGenerator.java index b17da2e..c3aa49f 100644 --- a/blade-ops/blade-develop/src/main/java/org/springblade/develop/support/CodeGenerator.java +++ b/blade-ops/blade-develop/src/test/java/org/springblade/test/CodeGenerator.java @@ -13,9 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springblade.develop.support; +package org.springblade.test; +import org.springblade.develop.support.BladeCodeGenerator; + /** * 代码生成器 * @@ -23,14 +25,26 @@ package org.springblade.develop.support; */ public class CodeGenerator { + /** + * 代码生成的模块名 + */ + public static String CODE_NAME = "租户管理"; + /** + * 代码所在服务名 + */ + public static String SERVICE_NAME = "blade-system"; /** * 代码生成的包名 */ - public static String PACKAGE_NAME = "org.springblade.demo"; + public static String PACKAGE_NAME = "org.springblade.system"; /** - * 代码生成的地址 + * 前端代码生成所属系统 */ - public static String PACKAGE_DIR = "/blade-ops/blade-codegen/src/main/java"; + public static String SYSTEM_NAME = "sword"; + /** + * 前端代码生成地址 + */ + public static String PACKAGE_WEB_DIR = "/Users/chill/Workspaces/product/Sword"; /** * 需要去掉的表前缀 */ @@ -38,7 +52,7 @@ public class CodeGenerator { /** * 需要生成的表名(两者只能取其一) */ - public static String[] INCLUDE_TABLES = {"blade_blog"}; + public static String[] INCLUDE_TABLES = {"blade_tenant"}; /** * 需要排除的表名(两者只能取其一) */ @@ -46,24 +60,28 @@ public class CodeGenerator { /** * 是否包含基础业务字段 */ - public static Boolean HAS_SUPER_ENTITY = Boolean.FALSE; + public static Boolean HAS_SUPER_ENTITY = Boolean.TRUE; /** * 基础业务字段 */ - public static String[] SUPER_ENTITY_COLUNMS = {"id", "create_time", "create_user", "update_time", "update_user", "status", "is_deleted"}; + public static String[] SUPER_ENTITY_COLUMNS = {"id", "create_time", "create_user", "update_time", "update_user", "status", "is_deleted"}; + /** * RUN THIS */ - public static void generate() { - BladeGenerator generator = new BladeGenerator(); + public static void main(String[] args) { + BladeCodeGenerator generator = new BladeCodeGenerator(); + generator.setCodeName(CODE_NAME); + generator.setServiceName(SERVICE_NAME); + generator.setSystemName(SYSTEM_NAME); generator.setPackageName(PACKAGE_NAME); - generator.setPackageDir(PACKAGE_DIR); + generator.setPackageWebDir(PACKAGE_WEB_DIR); generator.setTablePrefix(TABLE_PREFIX); generator.setIncludeTables(INCLUDE_TABLES); generator.setExcludeTables(EXCLUDE_TABLES); generator.setHasSuperEntity(HAS_SUPER_ENTITY); - generator.setSuperEntityColumns(SUPER_ENTITY_COLUNMS); + generator.setSuperEntityColumns(SUPER_ENTITY_COLUMNS); generator.run(); } diff --git a/blade-ops/blade-develop/src/test/resources/templates/controller.java.vm b/blade-ops/blade-develop/src/test/resources/templates/controller.java.vm new file mode 100644 index 0000000..53f4578 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/controller.java.vm @@ -0,0 +1,150 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package $!{package.Controller}; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import javax.validation.Valid; + +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.system.feign.IDictClient; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springframework.web.bind.annotation.*; +#if($!{superEntityClass}) +import org.springframework.web.bind.annotation.RequestParam; +#end +import com.baomidou.mybatisplus.core.metadata.IPage; +import $!{package.Entity}.$!{entity}; +#set($voPackage=$package.Entity.replace("entity","vo")) +import $!{voPackage}.$!{entity}VO; +#set($wrapperPackage=$package.Entity.replace("entity","wrapper")) +import $!{wrapperPackage}.$!{entity}Wrapper; +import $!{package.Service}.$!{table.serviceName}; +#if($!{superControllerClassPackage}) +import $!{superControllerClassPackage}; +#end +#if(!$!{superEntityClass}) +#end +import java.util.List; + +/** + * $!{table.comment} 控制器 + * + * @author $!{author} + * @since $!{date} + */ +@RestController +@AllArgsConstructor +@RequestMapping("#if($!{package.ModuleName})/$!{package.ModuleName}#end/$!{cfg.entityKey}") +@Api(value = "$!{table.comment}", tags = "$!{table.comment}接口") +#if($!{superControllerClass}) +public class $!{table.controllerName} extends $!{superControllerClass} { +#else +public class $!{table.controllerName} { +#end + + private $!{table.serviceName} $!{table.entityPath}Service; + + private IDictClient dictClient; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperation(value = "详情", notes = "传入$!{table.entityPath}", position = 1) + public R<$!{entity}VO> detail($!{entity} $!{table.entityPath}) { + $!{entity} detail = $!{table.entityPath}Service.getOne(Condition.getQueryWrapper($!{table.entityPath})); + $!{entity}Wrapper $!{table.entityPath}Wrapper = new $!{entity}Wrapper(dictClient); + return R.data($!{table.entityPath}Wrapper.entityVO(detail)); + } + + /** + * 分页 $!{table.comment} + */ + @GetMapping("/list") + @ApiOperation(value = "分页", notes = "传入$!{table.entityPath}", position = 2) + public R> list($!{entity} $!{table.entityPath}, Query query) { + IPage<$!{entity}> pages = $!{table.entityPath}Service.page(Condition.getPage(query), Condition.getQueryWrapper($!{table.entityPath})); + $!{entity}Wrapper $!{table.entityPath}Wrapper = new $!{entity}Wrapper(dictClient); + return R.data($!{table.entityPath}Wrapper.pageVO(pages)); + } + + /** + * 自定义分页 $!{table.comment} + */ + @GetMapping("/page") + @ApiOperation(value = "分页", notes = "传入$!{table.entityPath}", position = 3) + public R> page($!{entity}VO $!{table.entityPath}, Query query) { + IPage<$!{entity}VO> pages = $!{table.entityPath}Service.select$!{entity}Page(Condition.getPage(query), $!{table.entityPath}); + return R.data(pages); + } + + /** + * 新增 $!{table.comment} + */ + @PostMapping("/save") + @ApiOperation(value = "新增", notes = "传入$!{table.entityPath}", position = 4) + public R save(@Valid @RequestBody $!{entity} $!{table.entityPath}) { + return R.status($!{table.entityPath}Service.save($!{table.entityPath})); + } + + /** + * 修改 $!{table.comment} + */ + @PostMapping("/update") + @ApiOperation(value = "修改", notes = "传入$!{table.entityPath}", position = 5) + public R update(@Valid @RequestBody $!{entity} $!{table.entityPath}) { + return R.status($!{table.entityPath}Service.updateById($!{table.entityPath})); + } + + /** + * 新增或修改 $!{table.comment} + */ + @PostMapping("/submit") + @ApiOperation(value = "新增或修改", notes = "传入$!{table.entityPath}", position = 6) + public R submit(@Valid @RequestBody $!{entity} $!{table.entityPath}) { + return R.status($!{table.entityPath}Service.saveOrUpdate($!{table.entityPath})); + } + + #if($!{superEntityClass}) + + /** + * 删除 $!{table.comment} + */ + @PostMapping("/remove") + @ApiOperation(value = "逻辑删除", notes = "传入ids", position = 7) + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status($!{table.entityPath}Service.deleteLogic(Func.toIntList(ids))); + } + + #else + + /** + * 删除 $!{table.comment} + */ + @PostMapping("/remove") + @ApiOperation(value = "删除", notes = "传入ids", position = 7) + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status($!{table.entityPath}Service.removeByIds(Func.toIntList(ids))); + } + + #end + +} diff --git a/blade-ops/blade-develop/src/test/resources/templates/entity.java.vm b/blade-ops/blade-develop/src/test/resources/templates/entity.java.vm new file mode 100644 index 0000000..9ad9054 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/entity.java.vm @@ -0,0 +1,162 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package $!{package.Entity}; + +#foreach($pkg in $!{table.importPackages}) +import $!{pkg}; +#end +#if($!{entityLombokModel}) +import lombok.Data; +import lombok.EqualsAndHashCode; +#end +#if($!{swagger2}) +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +#end + +/** + * $!{table.comment}实体类 + * + * @author $!{author} + * @since $!{date} + */ +#if($!{entityLombokModel}) +@Data +#end +#if($!{table.convert}) +@TableName("$!{table.name}") +#end +#if($!{superEntityClass}) +@EqualsAndHashCode(callSuper = true) +#end +#if($!{swagger2}) +@ApiModel(value = "$!{entity}对象", description = #if ("$!{table.comment}"=="")"$!{entity}对象"#else"$!{table.comment}"#end) +#end +#if($!{superEntityClass}) +public class $!{entity} extends $!{superEntityClass}#if($!{activeRecord})<$!{entity}>#end { +#elseif($!{activeRecord}) +@Accessors(chain = true) +public class $!{entity} extends Model<$!{entity}> { +#else +public class $!{entity} implements Serializable { +#end + + private static final long serialVersionUID = 1L; + +## ---------- BEGIN 字段循环遍历 ---------- +#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) +#if($!{field.keyFlag}) +#set($keyPropertyName=$!{field.propertyName}) +#end +#if("$!field.comment" != "") + /** + * $!{field.comment} + */ + #if($!{swagger2}) + @ApiModelProperty(value = "$!{field.comment}") + #end +#end +#if($!{field.keyFlag}) +## 主键 +#if($!{field.keyIdentityFlag}) + @TableId(value = "$!{field.name}", type = IdType.AUTO) +#elseif(!$null.isNull($!{idType}) && "$!idType" != "") + @TableId(value = "$!{field.name}", type = IdType.$!{idType}) +#elseif($!{field.convert}) + @TableId("$!{field.name}") +#end +## 普通字段 +#elseif($!{field.fill}) +## ----- 存在字段填充设置 ----- +#if($!{field.convert}) + @TableField(value = "$!{field.name}", fill = FieldFill.$!{field.fill}) +#else + @TableField(fill = FieldFill.$!{field.fill}) +#end +#elseif($!{field.convert}) + @TableField("$!{field.name}") +#end +## 乐观锁注解 +#if($!{versionFieldName}==$!{field.name}) + @Version +#end +## 逻辑删除注解 +#if($!{logicDeleteFieldName}==$!{field.name}) + @TableLogic +#end + private $!{field.propertyType} $!{field.propertyName}; +#end +#end +## ---------- END 字段循环遍历 ---------- + +#if(!$!{entityLombokModel}) +#foreach($field in $!{table.fields}) +#if($!{field.propertyType.equals("boolean")}) +#set($getprefix="is") +#else +#set($getprefix="get") +#end + + public $!{field.propertyType} $!{getprefix}$!{field.capitalName}() { + return $!{field.propertyName}; + } + +#if($!{entityBuilderModel}) + public $!{entity} set$!{field.capitalName}($!{field.propertyType} $!{field.propertyName}) { +#else + public void set$!{field.capitalName}($!{field.propertyType} $!{field.propertyName}) { +#end + this.$!{field.propertyName} = $!{field.propertyName}; +#if($!{entityBuilderModel}) + return this; +#end + } +#end +#end + +#if($!{entityColumnConstant}) +#foreach($field in $!{table.fields}) + public static final String $!{field.name.toUpperCase()} = "$!{field.name}"; + +#end +#end +#if($!{activeRecord}) + @Override + protected Serializable pkVal() { +#if($!{keyPropertyName}) + return this.$!{keyPropertyName}; +#else + return this.id; +#end + } + +#end +#if(!$!{entityLombokModel}) + @Override + public String toString() { + return "$!{entity}{" + +#foreach($field in $!{table.fields}) +#if($!{velocityCount}==1) + "$!{field.propertyName}=" + $!{field.propertyName} + +#else + ", $!{field.propertyName}=" + $!{field.propertyName} + +#end +#end + "}"; + } +#end +} diff --git a/blade-ops/blade-develop/src/test/resources/templates/entityDTO.java.vm b/blade-ops/blade-develop/src/test/resources/templates/entityDTO.java.vm new file mode 100644 index 0000000..a7f0512 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/entityDTO.java.vm @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#set($dtoPackage=$package.Entity.replace("entity","dto")) +package $!{dtoPackage}; + +import $!{package.Entity}.$!{entity}; +#if($!{entityLombokModel}) +import lombok.Data; +import lombok.EqualsAndHashCode; +#end + +/** + * $!{table.comment}数据传输对象实体类 + * + * @author $!{author} + * @since $!{date} + */ +#if($!{entityLombokModel}) +@Data +@EqualsAndHashCode(callSuper = true) +#end +public class $!{entity}DTO extends $!{entity} { + private static final long serialVersionUID = 1L; + +} diff --git a/blade-ops/blade-develop/src/test/resources/templates/entityVO.java.vm b/blade-ops/blade-develop/src/test/resources/templates/entityVO.java.vm new file mode 100644 index 0000000..cc88136 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/entityVO.java.vm @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#set($voPackage=$package.Entity.replace("entity","vo")) +package $!{voPackage}; + +import $!{package.Entity}.$!{entity}; +#if($!{entityLombokModel}) +import lombok.Data; +import lombok.EqualsAndHashCode; +#end +#if($!{swagger2}) +import io.swagger.annotations.ApiModel; +#end + +/** + * $!{table.comment}视图实体类 + * + * @author $!{author} + * @since $!{date} + */ +#if($!{entityLombokModel}) +@Data +@EqualsAndHashCode(callSuper = true) +#end +#if($!{swagger2}) +@ApiModel(value = "$!{entity}VO对象", description = #if ("$!{table.comment}"=="")"$!{entity}VO对象"#else"$!{table.comment}"#end) +#end +public class $!{entity}VO extends $!{entity} { + private static final long serialVersionUID = 1L; + +} diff --git a/blade-ops/blade-develop/src/test/resources/templates/mapper.java.vm b/blade-ops/blade-develop/src/test/resources/templates/mapper.java.vm new file mode 100644 index 0000000..81f3422 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/mapper.java.vm @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package $!{package.Mapper}; + +import $!{package.Entity}.$!{entity}; +#set($voPackage=$package.Entity.replace("entity","vo")) +import $!{voPackage}.$!{entity}VO; +import $!{superMapperClassPackage}; +import com.baomidou.mybatisplus.core.metadata.IPage; +import java.util.List; + +/** + * $!{table.comment} Mapper 接口 + * + * @author $!{author} + * @since $!{date} + */ +#if($!{kotlin}) +interface $!{table.mapperName} : $!{superMapperClass}<$!{entity}> +#else +public interface $!{table.mapperName} extends $!{superMapperClass}<$!{entity}> { + + /** + * 自定义分页 + * + * @param page + * @param $!{table.entityPath} + * @return + */ + List<$!{entity}VO> select$!{entity}Page(IPage page, $!{entity}VO $!{table.entityPath}); + +} +#end diff --git a/blade-ops/blade-develop/src/test/resources/templates/mapper.xml.vm b/blade-ops/blade-develop/src/test/resources/templates/mapper.xml.vm new file mode 100644 index 0000000..9384ff7 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/mapper.xml.vm @@ -0,0 +1,34 @@ + + + + +#if($!{enableCache}) + + + +#end +#if($!{baseResultMap}) + + +#foreach($field in $!{table.fields}) +#if($!{field.keyFlag})##生成主键排在第一位 + +#end +#end +#foreach($field in $!{table.commonFields})##生成公共字段 + +#end +#foreach($field in $!{table.fields}) +#if(!$!{field.keyFlag} && $!{field.name} != $!{cfg.tenantColumn})##生成普通字段 + +#end +#end + + +#end + + + + diff --git a/blade-ops/blade-develop/src/test/resources/templates/props/generator.properties b/blade-ops/blade-develop/src/test/resources/templates/props/generator.properties new file mode 100644 index 0000000..229dc31 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/props/generator.properties @@ -0,0 +1,5 @@ +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/blade?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&serverTimezone=GMT%2B8 +spring.datasource.username=root +spring.datasource.password=root +author=Blade diff --git a/blade-ops/blade-develop/src/test/resources/templates/saber/api.js.vm b/blade-ops/blade-develop/src/test/resources/templates/saber/api.js.vm new file mode 100644 index 0000000..0ea8f9c --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/saber/api.js.vm @@ -0,0 +1,50 @@ +import request from '@/router/axios'; + +export const getList = (current, size, params) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/list', + method: 'get', + params: { + ...params, + current, + size, + } + }) +} + +export const getDetail = (id) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/detail', + method: 'get', + params: { + id + } + }) +} + +export const remove = (ids) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/remove', + method: 'post', + params: { + ids, + } + }) +} + +export const add = (row) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/submit', + method: 'post', + data: row + }) +} + +export const update = (row) => { + return request({ + url: '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/submit', + method: 'post', + data: row + }) +} + diff --git a/blade-ops/blade-develop/src/test/resources/templates/saber/crud.vue.vm b/blade-ops/blade-develop/src/test/resources/templates/saber/crud.vue.vm new file mode 100644 index 0000000..24dad04 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/saber/crud.vue.vm @@ -0,0 +1,176 @@ + + + + + diff --git a/blade-ops/blade-develop/src/test/resources/templates/service.java.vm b/blade-ops/blade-develop/src/test/resources/templates/service.java.vm new file mode 100644 index 0000000..4b37a25 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/service.java.vm @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package $!{package.Service}; + +import $!{package.Entity}.$!{entity}; +#set($voPackage=$package.Entity.replace("entity","vo")) +import $!{voPackage}.$!{entity}VO; +import $!{superServiceClassPackage}; +import com.baomidou.mybatisplus.core.metadata.IPage; + +/** + * $!{table.comment} 服务类 + * + * @author $!{author} + * @since $!{date} + */ +#if($!{kotlin}) +interface $!{table.serviceName} : $!{superServiceClass}<$!{entity}> +#else +public interface $!{table.serviceName} extends $!{superServiceClass}<$!{entity}> { + + /** + * 自定义分页 + * + * @param page + * @param $!{table.entityPath} + * @return + */ + IPage<$!{entity}VO> select$!{entity}Page(IPage<$!{entity}VO> page, $!{entity}VO $!{table.entityPath}); + +} +#end diff --git a/blade-ops/blade-develop/src/test/resources/templates/serviceImpl.java.vm b/blade-ops/blade-develop/src/test/resources/templates/serviceImpl.java.vm new file mode 100644 index 0000000..d025d13 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/serviceImpl.java.vm @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package $!{package.ServiceImpl}; + +import $!{package.Entity}.$!{entity}; +#set($voPackage=$package.Entity.replace("entity","vo")) +import $!{voPackage}.$!{entity}VO; +import $!{package.Mapper}.$!{table.mapperName}; +import $!{package.Service}.$!{table.serviceName}; +import $!{superServiceImplClassPackage}; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; + +/** + * $!{table.comment} 服务实现类 + * + * @author $!{author} + * @since $!{date} + */ +@Service +#if($!{kotlin}) +open class $!{table.serviceImplName} : $!{superServiceImplClass}<$!{table.mapperName}, $!{entity}>(), $!{table.serviceName} { + +} +#else +public class $!{table.serviceImplName} extends $!{superServiceImplClass}<$!{table.mapperName}, $!{entity}> implements $!{table.serviceName} { + + @Override + public IPage<$!{entity}VO> select$!{entity}Page(IPage<$!{entity}VO> page, $!{entity}VO $!{table.entityPath}) { + return page.setRecords(baseMapper.select$!{entity}Page(page, $!{table.entityPath})); + } + +} +#end diff --git a/blade-ops/blade-develop/src/test/resources/templates/sql/menu.sql.vm b/blade-ops/blade-develop/src/test/resources/templates/sql/menu.sql.vm new file mode 100644 index 0000000..753a969 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sql/menu.sql.vm @@ -0,0 +1,11 @@ +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', 0, '$!{cfg.entityKey}', '$!{cfg.codeName}', 'menu', '/$!{cfg.servicePackage}/$!{cfg.entityKey}', NULL, 1, 1, 0, 1, NULL, 0); +set @parentid = (SELECT LAST_INSERT_ID()); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_add', '新增', 'add', '/$!{cfg.servicePackage}/$!{cfg.entityKey}/add', 'plus', 1, 2, 1, 1, NULL, 0); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_edit', '修改', 'edit', '/$!{cfg.servicePackage}/$!{cfg.entityKey}/edit', 'form', 2, 2, 1, 2, NULL, 0); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_delete', '删除', 'delete', '/api/$!{cfg.serviceName}/$!{cfg.entityKey}/remove', 'delete', 3, 2, 1, 3, NULL, 0); +INSERT INTO `blade_menu`(`tenant_code`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`) +VALUES ('000000', @parentid, '$!{cfg.entityKey}_view', '查看', 'view', '/$!{cfg.servicePackage}/$!{cfg.entityKey}/view', 'file-text', 4, 2, 1, 2, NULL, 0); diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/action.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/action.js.vm new file mode 100644 index 0000000..e0eb476 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/action.js.vm @@ -0,0 +1,37 @@ +#set($upperEntityPath=$table.entityPath.toUpperCase()) +export const $!{upperEntityPath}_NAMESPACE = '$!{table.entityPath}'; + +export function $!{upperEntityPath}_LIST(payload) { + return { + type: `${$!{upperEntityPath}_NAMESPACE}/fetchList`, + payload, + }; +} + +export function $!{upperEntityPath}_DETAIL(id) { + return { + type: `${$!{upperEntityPath}_NAMESPACE}/fetchDetail`, + payload: { id }, + }; +} + +export function $!{upperEntityPath}_CLEAR_DETAIL() { + return { + type: `${$!{upperEntityPath}_NAMESPACE}/clearDetail`, + payload: {}, + }; +} + +export function $!{upperEntityPath}_SUBMIT(payload) { + return { + type: `${$!{upperEntityPath}_NAMESPACE}/submit`, + payload, + }; +} + +export function $!{upperEntityPath}_REMOVE(payload) { + return { + type: `${$!{upperEntityPath}_NAMESPACE}/remove`, + payload, + }; +} diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/add.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/add.js.vm new file mode 100644 index 0000000..459b1bb --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/add.js.vm @@ -0,0 +1,75 @@ +#set($upperEntityPath=$table.entityPath.toUpperCase()) +import React, { PureComponent } from 'react'; +import { Form, Input, Card, Button } from 'antd'; +import { connect } from 'dva'; +import Panel from '../../../components/Panel'; +import styles from '../../../layouts/Sword.less'; +import { $!{upperEntityPath}_SUBMIT } from '../../../actions/$!{table.entityPath}'; + +const FormItem = Form.Item; + +@connect(({ loading }) => ({ + submitting: loading.effects['$!{table.entityPath}/submit'], +})) +@Form.create() +class $!{entity}Add extends PureComponent { + handleSubmit = e => { + e.preventDefault(); + const { dispatch, form } = this.props; + form.validateFieldsAndScroll((err, values) => { + if (!err) { + dispatch($!{upperEntityPath}_SUBMIT(values)); + } + }); + }; + + render() { + const { + form: { getFieldDecorator }, + submitting, + } = this.props; + + const formItemLayout = { + labelCol: { + xs: { span: 24 }, + sm: { span: 7 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 12 }, + md: { span: 10 }, + }, + }; + + const action = ( + + ); + + return ( + +

+ +#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) + + {getFieldDecorator('$!{field.propertyName}', { + rules: [ + { + required: true, + message: '请输入$!{field.comment}', + }, + ], + })()} + +#end +#end + +
+ + ); + } +} + +export default $!{entity}Add; diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/edit.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/edit.js.vm new file mode 100644 index 0000000..ba2657c --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/edit.js.vm @@ -0,0 +1,99 @@ +#set($upperEntityPath=$table.entityPath.toUpperCase()) +import React, { PureComponent } from 'react'; +import { Form, Input, Card, Button } from 'antd'; +import { connect } from 'dva'; +import Panel from '../../../components/Panel'; +import styles from '../../../layouts/Sword.less'; +import { $!{upperEntityPath}_DETAIL, $!{upperEntityPath}_SUBMIT } from '../../../actions/$!{table.entityPath}'; + +const FormItem = Form.Item; + +@connect(({ $!{table.entityPath}, loading }) => ({ + $!{table.entityPath}, + submitting: loading.effects['$!{table.entityPath}/submit'], +})) +@Form.create() +class $!{entity}Edit extends PureComponent { + componentWillMount() { + const { + dispatch, + match: { + params: { id }, + }, + } = this.props; + dispatch($!{upperEntityPath}_DETAIL(id)); + } + + handleSubmit = e => { + e.preventDefault(); + const { + dispatch, + match: { + params: { id }, + }, + form, + } = this.props; + form.validateFieldsAndScroll((err, values) => { + if (!err) { + const params = { + id, + ...values, + }; + console.log(params); + dispatch($!{upperEntityPath}_SUBMIT(params)); + } + }); + }; + + render() { + const { + form: { getFieldDecorator }, + $!{table.entityPath}: { detail }, + submitting, + } = this.props; + + const formItemLayout = { + labelCol: { + xs: { span: 24 }, + sm: { span: 7 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 12 }, + md: { span: 10 }, + }, + }; + + const action = ( + + ); + + return ( + +
+ +#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) + + {getFieldDecorator('$!{field.propertyName}', { + rules: [ + { + required: true, + message: '请输入$!{field.comment}', + }, + ], + initialValue: detail.$!{field.propertyName}, + })()} + +#end +#end + +
+
+ ); + } +} + +export default $!{entity}Edit; diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/list.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/list.js.vm new file mode 100644 index 0000000..ddb851b --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/list.js.vm @@ -0,0 +1,84 @@ +#set($upperEntityPath=$table.entityPath.toUpperCase()) +import React, { PureComponent } from 'react'; +import { connect } from 'dva'; +import { Button, Col, Form, Input, Row } from 'antd'; +import Panel from '../../../components/Panel'; +import { $!{upperEntityPath}_LIST } from '../../../actions/$!{table.entityPath}'; +import Grid from '../../../components/Sword/Grid'; + +const FormItem = Form.Item; + +@connect(({ $!{table.entityPath}, loading }) => ({ + $!{table.entityPath}, + loading: loading.models.$!{table.entityPath}, +})) +@Form.create() +class $!{entity} extends PureComponent { + // ============ 查询 =============== + handleSearch = params => { + const { dispatch } = this.props; + dispatch($!{upperEntityPath}_LIST(params)); + }; + + // ============ 查询表单 =============== + renderSearchForm = onReset => { + const { form } = this.props; + const { getFieldDecorator } = form; + + return ( + + + + {getFieldDecorator('name')()} + + + +
+ + +
+ +
+ ); + }; + + render() { + const code = '$!{table.entityPath}'; + + const { + form, + loading, + $!{table.entityPath}: { data }, + } = this.props; + + const columns = [ +#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) + { + title: '$!{field.comment}', + dataIndex: '$!{field.propertyName}', + }, +#end +#end + ]; + + return ( + + + + ); + } +} +export default $!{entity}; diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/model.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/model.js.vm new file mode 100644 index 0000000..9390b88 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/model.js.vm @@ -0,0 +1,88 @@ +#set($upperEntityPath=$table.entityPath.toUpperCase()) +import { message } from 'antd'; +import router from 'umi/router'; +import { $!{upperEntityPath}_NAMESPACE } from '../actions/$!{table.entityPath}'; +import { list, submit, detail, remove } from '../services/$!{table.entityPath}'; + +export default { + namespace: $!{upperEntityPath}_NAMESPACE, + state: { + data: { + list: [], + pagination: false, + }, + detail: {}, + }, + effects: { + *fetchList({ payload }, { call, put }) { + const response = yield call(list, payload); + if (response.success) { + yield put({ + type: 'saveList', + payload: { + list: response.data.records, + pagination: { + total: response.data.total, + current: response.data.current, + pageSize: response.data.size, + }, + }, + }); + } + }, + *fetchDetail({ payload }, { call, put }) { + const response = yield call(detail, payload); + if (response.success) { + yield put({ + type: 'saveDetail', + payload: { + detail: response.data, + }, + }); + } + }, + *clearDetail({ payload }, { put }) { + yield put({ + type: 'removeDetail', + payload: { payload }, + }); + }, + *submit({ payload }, { call }) { + const response = yield call(submit, payload); + if (response.success) { + message.success('提交成功'); + router.push('/$!{cfg.servicePackage}/$!{table.entityPath}'); + } + }, + *remove({ payload }, { call }) { + const { + data: { keys }, + success, + } = payload; + const response = yield call(remove, { ids: keys }); + if (response.success) { + success(); + } + }, + }, + reducers: { + saveList(state, action) { + return { + ...state, + data: action.payload, + }; + }, + saveDetail(state, action) { + return { + ...state, + detail: action.payload.detail, + }; + }, + removeDetail(state) { + return { + ...state, + detail: {}, + }; + }, + }, +}; diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/service.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/service.js.vm new file mode 100644 index 0000000..1ec606a --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/service.js.vm @@ -0,0 +1,26 @@ +#set($params="$" + "{stringify" + "(params)" + "}") +import { stringify } from 'qs'; +import func from '../utils/Func'; +import request from '../utils/request'; + +export async function list(params) { + return request(`/api/$!{cfg.serviceName}/$!{cfg.entityKey}/list?$!{params}`); +} + +export async function submit(params) { + return request('/api/$!{cfg.serviceName}/$!{cfg.entityKey}/submit', { + method: 'POST', + body: params, + }); +} + +export async function detail(params) { + return request(`/api/$!{cfg.serviceName}/$!{cfg.entityKey}/detail?$!{params}`); +} + +export async function remove(params) { + return request('/api/$!{cfg.serviceName}/$!{cfg.entityKey}/remove', { + method: 'POST', + body: func.toFormData(params), + }); +} diff --git a/blade-ops/blade-develop/src/test/resources/templates/sword/view.js.vm b/blade-ops/blade-develop/src/test/resources/templates/sword/view.js.vm new file mode 100644 index 0000000..1104856 --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/sword/view.js.vm @@ -0,0 +1,76 @@ +#set($upperEntityPath=$table.entityPath.toUpperCase()) +import React, { PureComponent } from 'react'; +import router from 'umi/router'; +import { Form, Card, Button } from 'antd'; +import { connect } from 'dva'; +import Panel from '../../../components/Panel'; +import styles from '../../../layouts/Sword.less'; +import { $!{upperEntityPath}_DETAIL } from '../../../actions/$!{table.entityPath}'; + +const FormItem = Form.Item; + +@connect(({ $!{table.entityPath} }) => ({ + $!{table.entityPath}, +})) +@Form.create() +class $!{entity}View extends PureComponent { + componentWillMount() { + const { + dispatch, + match: { + params: { id }, + }, + } = this.props; + dispatch($!{upperEntityPath}_DETAIL(id)); + } + + handleEdit = () => { + const { + match: { + params: { id }, + }, + } = this.props; + router.push(`/$!{cfg.servicePackage}/$!{table.entityPath}/edit/$!{id}`); + }; + + render() { + const { + $!{table.entityPath}: { detail }, + } = this.props; + + const formItemLayout = { + labelCol: { + xs: { span: 24 }, + sm: { span: 7 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 12 }, + md: { span: 10 }, + }, + }; + + const action = ( + + ); + + return ( + +
+ +#foreach($field in $!{table.fields}) +#if($!{field.name}!=$!{cfg.tenantColumn}) + + {detail.$!{field.propertyName}} + +#end +#end + +
+
+ ); + } +} +export default $!{entity}View; diff --git a/blade-ops/blade-develop/src/test/resources/templates/wrapper.java.vm b/blade-ops/blade-develop/src/test/resources/templates/wrapper.java.vm new file mode 100644 index 0000000..0f79a8e --- /dev/null +++ b/blade-ops/blade-develop/src/test/resources/templates/wrapper.java.vm @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#set($wrapperPackage=$package.Entity.replace("entity","wrapper")) +package $!{wrapperPackage}; + +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.system.feign.IDictClient; +import $!{package.Entity}.$!{entity}; +#set($voPackage=$package.Entity.replace("entity","vo")) +import $!{voPackage}.$!{entity}VO; + +/** + * $!{table.comment}包装类,返回视图层所需的字段 + * + * @author $!{author} + * @since $!{date} + */ +@AllArgsConstructor +public class $!{entity}Wrapper extends BaseEntityWrapper<$!{entity}, $!{entity}VO> { + + private IDictClient dictClient; + + @Override + public $!{entity}VO entityVO($!{entity} $!{table.entityPath}) { + $!{entity}VO $!{table.entityPath}VO = BeanUtil.copy($!{table.entityPath}, $!{entity}VO.class); + + /*R dict = dictClient.getValue("$!{table.entityPath}" , $!{table.entityPath}VO.getCategory()); + if (dict.isSuccess()) { + String categoryName = dict.getData(); + $!{table.entityPath}VO.setCategoryName(categoryName); + }*/ + + return $!{table.entityPath}VO; + } + +} diff --git a/blade-ops/pom.xml b/blade-ops/pom.xml index 6e616cf..4d523a3 100644 --- a/blade-ops/pom.xml +++ b/blade-ops/pom.xml @@ -5,7 +5,7 @@ SpringBlade org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service-api/blade-desk-api/pom.xml b/blade-service-api/blade-desk-api/pom.xml index 6c41bdd..d5fa13c 100644 --- a/blade-service-api/blade-desk-api/pom.xml +++ b/blade-service-api/blade-desk-api/pom.xml @@ -5,7 +5,7 @@ blade-service-api org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java index 7c7065c..41ce214 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java @@ -51,7 +51,7 @@ public class Notice extends BaseEntity { * 发布日期 */ @ApiModelProperty(value = "发布日期") - private Date date; + private Date releaseTime; /** * 内容 diff --git a/blade-service-api/blade-dict-api/pom.xml b/blade-service-api/blade-dict-api/pom.xml index 3b8f611..1bd0f2e 100644 --- a/blade-service-api/blade-dict-api/pom.xml +++ b/blade-service-api/blade-dict-api/pom.xml @@ -5,7 +5,7 @@ blade-service-api org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java index 1933829..82f671d 100644 --- a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java +++ b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java @@ -17,6 +17,7 @@ package org.springblade.system.feign; import org.springblade.core.tool.api.R; import org.springblade.system.entity.Dict; +import org.springframework.stereotype.Component; import java.util.List; @@ -25,6 +26,7 @@ import java.util.List; * * @author Chill */ +@Component public class IDictClientFallback implements IDictClient { @Override public R getValue(String code, Integer dictKey) { diff --git a/blade-service-api/blade-system-api/pom.xml b/blade-service-api/blade-system-api/pom.xml index 0847d6d..add7ad5 100644 --- a/blade-service-api/blade-system-api/pom.xml +++ b/blade-service-api/blade-system-api/pom.xml @@ -5,7 +5,7 @@ blade-service-api org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java index 3891925..70ca428 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java @@ -23,7 +23,6 @@ import org.springblade.system.entity.Dept; * 数据传输对象实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java index 8346ded..80513ce 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java @@ -23,7 +23,6 @@ import java.io.Serializable; * 数据传输对象实体类 * * @author Chill - * @since 2018-12-24 */ @Data public class MenuDTO implements Serializable { diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java index cd22ebc..c5b9631 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java @@ -23,7 +23,6 @@ import org.springblade.system.entity.Param; * 数据传输对象实体类 * * @author Chill - * @since 2018-12-28 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java index 76df81d..c1c8dc1 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java @@ -23,7 +23,6 @@ import org.springblade.system.entity.Role; * 数据传输对象实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java index 137e850..2d7e899 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java @@ -23,7 +23,6 @@ import org.springblade.system.entity.RoleMenu; * 数据传输对象实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java index b2c1561..a899fb2 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java @@ -29,7 +29,6 @@ import java.io.Serializable; * 实体类 * * @author Chill - * @since 2018-12-24 */ @Data @TableName("blade_dept") @@ -45,6 +44,12 @@ public class Dept implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Integer id; + /** + * 租户编号 + */ + @ApiModelProperty(value = "租户编号") + private String tenantCode; + /** * 父主键 */ @@ -58,9 +63,9 @@ public class Dept implements Serializable { private String deptName; /** - * 部门全程 + * 部门全称 */ - @ApiModelProperty(value = "部门全程") + @ApiModelProperty(value = "部门全称") private String fullName; /** diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java index 1c364da..94a97bf 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java @@ -30,7 +30,6 @@ import java.io.Serializable; * 实体类 * * @author Chill - * @since 2018-12-24 */ @Data @TableName("blade_menu") diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java index 15976b2..7392e9d 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java @@ -26,7 +26,6 @@ import org.springblade.core.mp.base.BaseEntity; * 实体类 * * @author Chill - * @since 2018-12-28 */ @Data @TableName("blade_param") diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java index 69a3314..2424087 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java @@ -29,7 +29,6 @@ import java.io.Serializable; * 实体类 * * @author Chill - * @since 2018-12-24 */ @Data @TableName("blade_role") @@ -45,6 +44,12 @@ public class Role implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Integer id; + /** + * 租户编号 + */ + @ApiModelProperty(value = "租户编号") + private String tenantCode; + /** * 父主键 */ diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java index d2281ef..06d146d 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java @@ -28,7 +28,6 @@ import java.io.Serializable; * 实体类 * * @author Chill - * @since 2018-12-24 */ @Data @TableName("blade_role_menu") diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java new file mode 100644 index 0000000..f80520e --- /dev/null +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("blade_tenant") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "Tenant对象", description = "Tenant对象") +public class Tenant extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 租户编号 + */ + @ApiModelProperty(value = "租户编号") + private String tenantCode; + /** + * 租户名称 + */ + @ApiModelProperty(value = "租户名称") + private String tenantName; + /** + * 联系人 + */ + @ApiModelProperty(value = "联系人") + private String linkman; + /** + * 联系电话 + */ + @ApiModelProperty(value = "联系电话") + private String contactNumber; + /** + * 联系地址 + */ + @ApiModelProperty(value = "联系地址") + private String address; + + +} diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java new file mode 100644 index 0000000..a705c4a --- /dev/null +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java @@ -0,0 +1,83 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.system.entity.Dept; +import org.springblade.system.entity.Role; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Feign接口类 + * + * @author Chill + */ +@FeignClient( + value = AppConstant.APPLICATION_SYSTEM_NAME, + fallback = ISysClientFallback.class +) +public interface ISysClient { + + String API_PREFIX = "/sys"; + + /** + * 获取部门名 + * + * @param id 主键 + * @return 部门名 + */ + @GetMapping(API_PREFIX + "/getDeptName") + String getDeptName(@RequestParam("id") Integer id); + + /** + * 获取部门 + * + * @param id 主键 + * @return Dept + */ + @GetMapping(API_PREFIX + "/getDept") + Dept getDept(@RequestParam("id") Integer id); + + /** + * 获取角色名 + * + * @param id 主键 + * @return 角色名 + */ + @GetMapping(API_PREFIX + "/getRoleName") + String getRoleName(@RequestParam("id") Integer id); + + /** + * 获取角色别名 + * + * @param id 主键 + * @return 角色别名 + */ + @GetMapping(API_PREFIX + "/getRoleAlias") + String getRoleAlias(@RequestParam("id") Integer id); + + /** + * 获取角色 + * + * @param id 主键 + * @return Role + */ + @GetMapping(API_PREFIX + "/getRole") + Role getRole(@RequestParam("id") Integer id); + +} diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java new file mode 100644 index 0000000..2ce4b3d --- /dev/null +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.feign; + +import org.springblade.system.entity.Dept; +import org.springblade.system.entity.Role; +import org.springframework.stereotype.Component; + +/** + * Feign失败配置 + * + * @author Chill + */ +@Component +public class ISysClientFallback implements ISysClient { + @Override + public String getDeptName(Integer id) { + return null; + } + + @Override + public Dept getDept(Integer id) { + return null; + } + + @Override + public String getRoleName(Integer id) { + return null; + } + + @Override + public String getRoleAlias(Integer id) { + return null; + } + + @Override + public Role getRole(Integer id) { + return null; + } +} diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java index 7ad5e5c..5a2c0fa 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java @@ -29,7 +29,6 @@ import java.util.List; * 视图实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java index 3cd06e9..6ca3d87 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java @@ -29,7 +29,6 @@ import java.util.List; * 视图实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java index 50b7b57..b8c063e 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java @@ -24,7 +24,6 @@ import org.springblade.system.entity.Param; * 视图实体类 * * @author Chill - * @since 2018-12-28 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java index 03b5643..d8099a1 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java @@ -24,7 +24,6 @@ import org.springblade.system.entity.RoleMenu; * 视图实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java index 28792a0..34d7149 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java @@ -29,7 +29,6 @@ import java.util.List; * 视图实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/blade-service-api/blade-user-api/pom.xml b/blade-service-api/blade-user-api/pom.xml index af11500..3510cf7 100644 --- a/blade-service-api/blade-user-api/pom.xml +++ b/blade-service-api/blade-user-api/pom.xml @@ -5,7 +5,7 @@ blade-service-api org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java index c52747b..af809cc 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java @@ -18,7 +18,7 @@ package org.springblade.system.user.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; -import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.base.TenantEntity; import java.time.LocalDateTime; @@ -30,7 +30,7 @@ import java.time.LocalDateTime; @Data @TableName("blade_user") @EqualsAndHashCode(callSuper = true) -public class User extends BaseEntity { +public class User extends TenantEntity { private static final long serialVersionUID = 1L; diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java index abf7908..9214fc7 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestParam; /** * User Feign接口类 + * * @author Chill */ @FeignClient( @@ -37,11 +38,12 @@ public interface IUserClient { /** * 获取用户信息 * + * @param tenantCode 租户编号 * @param account 账号 * @param password 密码 * @return */ - @GetMapping(API_PREFIX + "/userInfo") - R userInfo(@RequestParam("account") String account, @RequestParam("password") String password); + @GetMapping(API_PREFIX + "/user-info") + R userInfo(@RequestParam("tenantCode") String tenantCode, @RequestParam("account") String account, @RequestParam("password") String password); } diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java index b8392f6..16b0658 100644 --- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java +++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java @@ -15,26 +15,20 @@ */ package org.springblade.system.user.vo; -import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; -import org.springblade.core.tool.node.INode; import org.springblade.system.user.entity.User; -import java.util.ArrayList; -import java.util.List; - /** * 视图实体类 * * @author Chill - * @since 2018-12-24 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "UserVO对象", description = "UserVO对象") -public class UserVO extends User implements INode { +public class UserVO extends User { private static final long serialVersionUID = 1L; /** @@ -42,25 +36,6 @@ public class UserVO extends User implements INode { */ private Integer id; - /** - * 父节点ID - */ - private Integer parentId; - - /** - * 子孙节点 - */ - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private List children; - - @Override - public List getChildren() { - if (this.children == null) { - this.children = new ArrayList<>(); - } - return this.children; - } - /** * 角色名 */ diff --git a/blade-service-api/pom.xml b/blade-service-api/pom.xml index df61f04..ad6db60 100644 --- a/blade-service-api/pom.xml +++ b/blade-service-api/pom.xml @@ -5,13 +5,13 @@ SpringBlade org.springblade - 2.0.0 + 2.1.0 4.0.0 blade-service-api ${project.artifactId} - 2.0.0 + 2.1.0 pom SpringBlade 微服务API集合 diff --git a/blade-service/blade-desk/pom.xml b/blade-service/blade-desk/pom.xml index f76ece3..c3e6ae5 100644 --- a/blade-service/blade-desk/pom.xml +++ b/blade-service/blade-desk/pom.xml @@ -6,7 +6,7 @@ org.springblade blade-service - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml index dd4bf7d..24e4329 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml @@ -11,6 +11,7 @@ + diff --git a/blade-service/blade-log/pom.xml b/blade-service/blade-log/pom.xml index b9b67ef..29203ef 100644 --- a/blade-service/blade-log/pom.xml +++ b/blade-service/blade-log/pom.xml @@ -5,7 +5,7 @@ blade-service org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service/blade-system/pom.xml b/blade-service/blade-system/pom.xml index 7a9ab77..81b925d 100644 --- a/blade-service/blade-system/pom.xml +++ b/blade-service/blade-system/pom.xml @@ -5,7 +5,7 @@ blade-service org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java index 93e89e8..9de9759 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java @@ -15,11 +15,14 @@ */ package org.springblade.system.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.*; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; +import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.node.INode; import org.springblade.core.tool.utils.Func; import org.springblade.system.entity.Dept; @@ -37,7 +40,6 @@ import java.util.Map; * 控制器 * * @author Chill - * @since 2018-12-24 */ @RestController @AllArgsConstructor @@ -67,8 +69,9 @@ public class DeptController extends BladeController { @ApiImplicitParam(name = "fullName", value = "部门全称", paramType = "query", dataType = "string") }) @ApiOperation(value = "列表", notes = "传入dept", position = 2) - public R> list(@ApiIgnore @RequestParam Map dept) { - List list = deptService.list(Condition.getQueryWrapper(dept, Dept.class)); + public R> list(@ApiIgnore @RequestParam Map dept, BladeUser bladeUser) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(dept, Dept.class); + List list = deptService.list((!bladeUser.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE)) ? queryWrapper.lambda().eq(Dept::getTenantCode, bladeUser.getTenantCode()) : queryWrapper); DeptWrapper deptWrapper = new DeptWrapper(); return R.data(deptWrapper.listNodeVO(list)); } @@ -80,8 +83,8 @@ public class DeptController extends BladeController { */ @GetMapping("/tree") @ApiOperation(value = "树形结构", notes = "树形结构", position = 3) - public R> tree() { - List tree = deptService.tree(); + public R> tree(String tenantCode, BladeUser bladeUser) { + List tree = deptService.tree(Func.toStr(tenantCode, bladeUser.getTenantCode())); return R.data(tree); } @@ -90,16 +93,18 @@ public class DeptController extends BladeController { */ @PostMapping("/submit") @ApiOperation(value = "新增或修改", notes = "传入dept", position = 6) - public R submit(@Valid @RequestBody Dept dept) { + public R submit(@Valid @RequestBody Dept dept, BladeUser user) { + if (Func.isEmpty(dept.getId())) { + dept.setTenantCode(user.getTenantCode()); + } return R.status(deptService.saveOrUpdate(dept)); } - /** * 删除 */ @PostMapping("/remove") - @ApiOperation(value = "物理删除", notes = "传入ids", position = 7) + @ApiOperation(value = "删除", notes = "传入ids", position = 7) public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(deptService.removeByIds(Func.toIntList(ids))); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java index 2d90332..2f89c39 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java @@ -26,6 +26,7 @@ import org.springblade.system.entity.Dict; import org.springblade.system.service.IDictService; import org.springblade.system.vo.DictVO; import org.springblade.system.wrapper.DictWrapper; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; @@ -33,11 +34,13 @@ import javax.validation.Valid; import java.util.List; import java.util.Map; +import static org.springblade.common.cache.CacheNames.DICT_LIST; +import static org.springblade.common.cache.CacheNames.DICT_VALUE; + /** * 控制器 * * @author Chill - * @since 2018-12-24 */ @RestController @AllArgsConstructor @@ -92,7 +95,7 @@ public class DictController extends BladeController { @PostMapping("/submit") @ApiOperation(value = "新增或修改", notes = "传入dict", position = 6) public R submit(@Valid @RequestBody Dict dict) { - return R.status(dictService.saveOrUpdate(dict)); + return R.status(dictService.submit(dict)); } @@ -100,7 +103,8 @@ public class DictController extends BladeController { * 删除 */ @PostMapping("/remove") - @ApiOperation(value = "物理删除", notes = "传入ids", position = 7) + @CacheEvict(cacheNames = {DICT_LIST, DICT_VALUE}) + @ApiOperation(value = "删除", notes = "传入ids", position = 7) public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(dictService.removeByIds(Func.toIntList(ids))); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java index f38af6d..9dcfc30 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java @@ -39,7 +39,6 @@ import java.util.Map; * 控制器 * * @author Chill - * @since 2018-12-24 */ @RestController @AllArgsConstructor @@ -113,8 +112,8 @@ public class MenuController extends BladeController { */ @GetMapping("/grant-tree") @ApiOperation(value = "权限分配树形结构", notes = "权限分配树形结构", position = 6) - public R> grantTree() { - return R.data(menuService.grantTree()); + public R> grantTree(BladeUser user) { + return R.data(menuService.grantTree(user)); } /** @@ -140,14 +139,13 @@ public class MenuController extends BladeController { * 删除 */ @PostMapping("/remove") - @ApiOperation(value = "物理删除", notes = "传入ids", position = 9) + @ApiOperation(value = "删除", notes = "传入ids", position = 9) public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(menuService.removeByIds(Func.toIntList(ids))); } /** * 获取配置的角色权限 - * @return */ @GetMapping("auth-routes") @ApiOperation(value = "菜单的角色权限", position = 8) diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java index 6f5f9a0..cb5a0cc 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java @@ -38,7 +38,6 @@ import java.util.Map; * 控制器 * * @author Chill - * @since 2018-12-28 */ @RestController @AllArgsConstructor diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java index 71a22fc..33a1c0a 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java @@ -15,13 +15,15 @@ */ package org.springblade.system.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.*; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; +import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.node.INode; -import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; import org.springblade.system.entity.Role; import org.springblade.system.service.IRoleService; @@ -38,7 +40,6 @@ import java.util.Map; * 控制器 * * @author Chill - * @since 2018-12-24 */ @RestController @AllArgsConstructor @@ -68,8 +69,9 @@ public class RoleController extends BladeController { @ApiImplicitParam(name = "roleAlias", value = "角色别名", paramType = "query", dataType = "string") }) @ApiOperation(value = "列表", notes = "传入role", position = 2) - public R> list(@ApiIgnore @RequestParam Map role) { - List list = roleService.list(Condition.getQueryWrapper(role, Role.class)); + public R> list(@ApiIgnore @RequestParam Map role, BladeUser bladeUser) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(role, Role.class); + List list = roleService.list((!bladeUser.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE)) ? queryWrapper.lambda().eq(Role::getTenantCode, bladeUser.getTenantCode()) : queryWrapper); RoleWrapper roleWrapper = new RoleWrapper(roleService); return R.data(roleWrapper.listNodeVO(list)); } @@ -79,8 +81,8 @@ public class RoleController extends BladeController { */ @GetMapping("/tree") @ApiOperation(value = "树形结构", notes = "树形结构", position = 3) - public R> tree() { - List tree = roleService.tree(); + public R> tree(String tenantCode, BladeUser bladeUser) { + List tree = roleService.tree(Func.toStr(tenantCode, bladeUser.getTenantCode())); return R.data(tree); } @@ -89,7 +91,10 @@ public class RoleController extends BladeController { */ @PostMapping("/submit") @ApiOperation(value = "新增或修改", notes = "传入role", position = 6) - public R submit(@Valid @RequestBody Role role) { + public R submit(@Valid @RequestBody Role role, BladeUser user) { + if (Func.isEmpty(role.getId())) { + role.setTenantCode(user.getTenantCode()); + } return R.status(roleService.saveOrUpdate(role)); } @@ -98,7 +103,7 @@ public class RoleController extends BladeController { * 删除 */ @PostMapping("/remove") - @ApiOperation(value = "物理删除", notes = "传入ids", position = 7) + @ApiOperation(value = "删除", notes = "传入ids", position = 7) public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(roleService.removeByIds(Func.toIntList(ids))); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java new file mode 100644 index 0000000..19a552a --- /dev/null +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java @@ -0,0 +1,119 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.*; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.constant.BladeConstant; +import org.springblade.core.tool.utils.Func; +import org.springblade.system.entity.Tenant; +import org.springblade.system.service.ITenantService; +import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/tenant") +@ApiIgnore +@Api(value = "租户管理", tags = "接口") +public class TenantController extends BladeController { + + private ITenantService tenantService; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperation(value = "详情", notes = "传入tenant", position = 1) + public R detail(Tenant tenant) { + Tenant detail = tenantService.getOne(Condition.getQueryWrapper(tenant)); + return R.data(detail); + } + + /** + * 分页 + */ + @GetMapping("/list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "tenantCode", value = "参数名称", paramType = "query", dataType = "string"), + @ApiImplicitParam(name = "tenantName", value = "角色别名", paramType = "query", dataType = "string"), + @ApiImplicitParam(name = "contactNumber", value = "联系电话", paramType = "query", dataType = "string") + }) + @ApiOperation(value = "分页", notes = "传入tenant", position = 2) + public R> list(@ApiIgnore @RequestParam Map tenant, Query query, BladeUser bladeUser) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(tenant, Tenant.class); + IPage pages = tenantService.page(Condition.getPage(query), (!bladeUser.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE)) ? queryWrapper.lambda().eq(Tenant::getTenantCode, bladeUser.getTenantCode()) : queryWrapper); + return R.data(pages); + } + + /** + * 下拉数据源 + */ + @GetMapping("/select") + @ApiOperation(value = "下拉数据源", notes = "传入tenant", position = 3) + public R> select(Tenant tenant, BladeUser bladeUser) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(tenant); + List list = tenantService.list((!bladeUser.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE)) ? queryWrapper.lambda().eq(Tenant::getTenantCode, bladeUser.getTenantCode()) : queryWrapper); + return R.data(list); + } + + /** + * 自定义分页 + */ + @GetMapping("/page") + @ApiOperation(value = "分页", notes = "传入tenant", position = 4) + public R> page(Tenant tenant, Query query) { + IPage pages = tenantService.selectTenantPage(Condition.getPage(query), tenant); + return R.data(pages); + } + + /** + * 新增或修改 + */ + @PostMapping("/submit") + @ApiOperation(value = "新增或修改", notes = "传入tenant", position = 7) + public R submit(@Valid @RequestBody Tenant tenant) { + return R.status(tenantService.saveTenant(tenant)); + } + + + /** + * 删除 + */ + @PostMapping("/remove") + @ApiOperation(value = "逻辑删除", notes = "传入ids", position = 8) + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status(tenantService.deleteLogic(Func.toIntList(ids))); + } + + +} diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java b/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java index 8e9838e..b10e0b1 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java @@ -1,3 +1,18 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springblade.system.feign; diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java b/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java new file mode 100644 index 0000000..ab84373 --- /dev/null +++ b/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.feign; + +import lombok.AllArgsConstructor; +import org.springblade.system.entity.Dept; +import org.springblade.system.entity.Role; +import org.springblade.system.service.IDeptService; +import org.springblade.system.service.IRoleService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +/** + * 系统服务Feign实现类 + * + * @author Chill + */ +@ApiIgnore +@RestController +@AllArgsConstructor +public class SysClient implements ISysClient { + + IDeptService deptService; + + IRoleService roleService; + + @Override + @GetMapping(API_PREFIX + "/getDeptName") + public String getDeptName(Integer id) { + return deptService.getById(id).getDeptName(); + } + + @Override + @GetMapping(API_PREFIX + "/getDept") + public Dept getDept(Integer id) { + return deptService.getById(id); + } + + @Override + @GetMapping(API_PREFIX + "/getRoleName") + public String getRoleName(Integer id) { + return roleService.getById(id).getRoleName(); + } + + @Override + @GetMapping(API_PREFIX + "/getRoleAlias") + public String getRoleAlias(Integer id) { + return roleService.getById(id).getRoleAlias(); + } + + @Override + @GetMapping(API_PREFIX + "/getRole") + public Role getRole(Integer id) { + return roleService.getById(id); + } +} diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java index 6398950..fd5cb57 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java @@ -26,7 +26,6 @@ import java.util.List; * Mapper 接口 * * @author Chill - * @since 2018-12-24 */ public interface DeptMapper extends BaseMapper { @@ -42,8 +41,9 @@ public interface DeptMapper extends BaseMapper { /** * 获取树形节点 * + * @param tenantCode * @return */ - List tree(); + List tree(String tenantCode); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml index 03261ff..6458be5 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml @@ -32,7 +32,10 @@ diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java index 33d5916..1a511ff 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java @@ -26,7 +26,6 @@ import java.util.List; * Mapper 接口 * * @author Chill - * @since 2018-12-24 */ public interface DictMapper extends BaseMapper { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml index 57236ba..18f5744 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml @@ -38,12 +38,19 @@ from blade_dict where code = #{param1} and dict_key = #{param2} limit 1 + + + diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java index 22afbd9..8104f9a 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java @@ -27,7 +27,6 @@ import java.util.List; * Mapper 接口 * * @author Chill - * @since 2018-12-24 */ public interface MenuMapper extends BaseMapper

{ @@ -54,6 +53,13 @@ public interface MenuMapper extends BaseMapper { */ List grantTree(); + /** + * 授权树形结构 + * + * @return + */ + List grantTreeByRole(List roleId); + /** * 所有菜单 * diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml index a2b70a5..2d0d55f 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml @@ -38,7 +38,7 @@ + + diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java index 209e303..943edf4 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java @@ -26,7 +26,6 @@ import java.util.List; * Mapper 接口 * * @author Chill - * @since 2018-12-24 */ public interface RoleMenuMapper extends BaseMapper { diff --git a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/config/DictFeignConfiguration.java b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java similarity index 61% rename from blade-service-api/blade-dict-api/src/main/java/org/springblade/system/config/DictFeignConfiguration.java rename to blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java index 300c643..dea6bab 100644 --- a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/config/DictFeignConfiguration.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java @@ -13,23 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springblade.system.config; +package org.springblade.system.mapper; -import org.springblade.system.feign.IDictClientFallback; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.system.entity.Tenant; + +import java.util.List; /** - * 字典feign失败配置 + * Mapper 接口 * * @author Chill */ -@Configuration -public class DictFeignConfiguration { +public interface TenantMapper extends BaseMapper { - @Bean - public IDictClientFallback dictClientFallback() { - return new IDictClientFallback(); - } + /** + * 自定义分页 + * + * @param page + * @param tenant + * @return + */ + List selectTenantPage(IPage page, Tenant tenant); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml new file mode 100644 index 0000000..4f06512 --- /dev/null +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java index f633c98..eb1dae0 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java @@ -26,7 +26,6 @@ import java.util.List; * 服务类 * * @author Chill - * @since 2018-12-24 */ public interface IDeptService extends IService { @@ -42,8 +41,9 @@ public interface IDeptService extends IService { /** * 树形结构 * + * @param tenantCode * @return */ - List tree(); + List tree(String tenantCode); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java index f117be7..7ba84a8 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java @@ -26,7 +26,6 @@ import java.util.List; * 服务类 * * @author Chill - * @since 2018-12-24 */ public interface IDictService extends IService { @@ -63,4 +62,11 @@ public interface IDictService extends IService { */ List getList(String code); + /** + * 新增或修改 + * @param dict + * @return + */ + boolean submit(Dict dict); + } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java index e4075bb..aaff845 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java @@ -28,7 +28,6 @@ import java.util.List; * 服务类 * * @author Chill - * @since 2018-12-24 */ public interface IMenuService extends IService { @@ -67,9 +66,10 @@ public interface IMenuService extends IService { /** * 授权树形结构 * + * @param user * @return */ - List grantTree(); + List grantTree(BladeUser user); /** * 默认选中节点 @@ -81,6 +81,7 @@ public interface IMenuService extends IService { /** * 获取配置的角色权限 + * * @param user * @return */ diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java index 9f06d9c..14f012d 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java @@ -24,7 +24,6 @@ import org.springblade.system.vo.ParamVO; * 服务类 * * @author Chill - * @since 2018-12-28 */ public interface IParamService extends BaseService { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java index f17ac78..8d44de3 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java @@ -22,7 +22,6 @@ import org.springblade.system.entity.RoleMenu; * 服务类 * * @author Chill - * @since 2018-12-24 */ public interface IRoleMenuService extends IService { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java index 84ac8b5..f7fa56f 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java @@ -27,7 +27,6 @@ import java.util.List; * 服务类 * * @author Chill - * @since 2018-12-24 */ public interface IRoleService extends IService { @@ -43,9 +42,10 @@ public interface IRoleService extends IService { /** * 树形结构 * + * @param tenantCode * @return */ - List tree(); + List tree(String tenantCode); /** * 权限配置 diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java new file mode 100644 index 0000000..653d695 --- /dev/null +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.system.entity.Tenant; + +/** + * 服务类 + * + * @author Chill + */ +public interface ITenantService extends BaseService { + + /** + * 自定义分页 + * + * @param page + * @param tenant + * @return + */ + IPage selectTenantPage(IPage page, Tenant tenant); + + /** + * 新增 + * + * @param tenant + * @return + */ + boolean saveTenant(Tenant tenant); + +} diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java index 86c9686..030dde9 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java @@ -30,7 +30,6 @@ import java.util.List; * 服务实现类 * * @author Chill - * @since 2018-12-24 */ @Service public class DeptServiceImpl extends ServiceImpl implements IDeptService { @@ -41,8 +40,8 @@ public class DeptServiceImpl extends ServiceImpl implements ID } @Override - public List tree() { - return ForestNodeMerger.merge(baseMapper.tree()); + public List tree(String tenantCode) { + return ForestNodeMerger.merge(baseMapper.tree(tenantCode)); } } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java index cde6a06..d319c12 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java @@ -15,7 +15,10 @@ */ package org.springblade.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.exceptions.ApiException; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.core.tool.node.ForestNodeMerger; import org.springblade.core.tool.utils.Func; @@ -24,6 +27,7 @@ import org.springblade.system.entity.Dict; import org.springblade.system.mapper.DictMapper; import org.springblade.system.service.IDictService; import org.springblade.system.vo.DictVO; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -36,7 +40,6 @@ import static org.springblade.common.cache.CacheNames.DICT_VALUE; * 服务实现类 * * @author Chill - * @since 2018-12-24 */ @Service public class DictServiceImpl extends ServiceImpl implements IDictService { @@ -54,8 +57,7 @@ public class DictServiceImpl extends ServiceImpl implements ID @Override @Cacheable(cacheNames = DICT_VALUE, key = "#code+'_'+#dictKey") public String getValue(String code, Integer dictKey) { - String value = Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY); - return value; + return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY); } @Override @@ -64,4 +66,14 @@ public class DictServiceImpl extends ServiceImpl implements ID return baseMapper.getList(code); } + @Override + @CacheEvict(cacheNames = {DICT_LIST, DICT_VALUE}) + public boolean submit(Dict dict) { + LambdaQueryWrapper lqw = Wrappers.query().lambda().eq(Dict::getCode, dict.getCode()).eq(Dict::getDictKey, dict.getDictKey()); + Integer cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(Dict::getId, dict.getId())); + if (cnt > 0) { + throw new ApiException("当前字典键值已存在!"); + } + return saveOrUpdate(dict); + } } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java index 7cb16bc..c7c4cd9 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.springblade.core.secure.BladeUser; +import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.node.ForestNodeMerger; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; @@ -40,7 +41,6 @@ import java.util.stream.Collectors; * 服务实现类 * * @author Chill - * @since 2018-12-24 */ @Service @AllArgsConstructor @@ -86,8 +86,8 @@ public class MenuServiceImpl extends ServiceImpl implements IM } @Override - public List grantTree() { - return ForestNodeMerger.merge(baseMapper.grantTree()); + public List grantTree(BladeUser user) { + return ForestNodeMerger.merge(user.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toIntList(user.getRoleId()))); } @Override diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java index daddb5e..9cbd623 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java @@ -27,7 +27,6 @@ import org.springframework.stereotype.Service; * 服务实现类 * * @author Chill - * @since 2018-12-28 */ @Service public class ParamServiceImpl extends BaseServiceImpl implements IParamService { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java index fe27cee..2217cd2 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java @@ -25,7 +25,6 @@ import org.springframework.stereotype.Service; * 服务实现类 * * @author Chill - * @since 2018-12-24 */ @Service public class RoleMenuServiceImpl extends ServiceImpl implements IRoleMenuService { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java index 87fdefc..bb0c1d1 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java @@ -37,7 +37,6 @@ import java.util.List; * 服务实现类 * * @author Chill - * @since 2018-12-24 */ @Service @Validated @@ -52,8 +51,8 @@ public class RoleServiceImpl extends ServiceImpl implements IR } @Override - public List tree() { - return ForestNodeMerger.merge(baseMapper.tree()); + public List tree(String tenantCode) { + return ForestNodeMerger.merge(baseMapper.tree(tenantCode)); } @Override diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java new file mode 100644 index 0000000..4655e84 --- /dev/null +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springblade.system.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.tenant.TenantId; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.constant.BladeConstant; +import org.springblade.core.tool.utils.Func; +import org.springblade.system.entity.Dept; +import org.springblade.system.entity.Role; +import org.springblade.system.entity.Tenant; +import org.springblade.system.mapper.DeptMapper; +import org.springblade.system.mapper.RoleMapper; +import org.springblade.system.mapper.TenantMapper; +import org.springblade.system.service.ITenantService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +@AllArgsConstructor +public class TenantServiceImpl extends BaseServiceImpl implements ITenantService { + + private final TenantId tenantId; + private final RoleMapper roleMapper; + private final DeptMapper deptMapper; + + @Override + public IPage selectTenantPage(IPage page, Tenant tenant) { + return page.setRecords(baseMapper.selectTenantPage(page, tenant)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean saveTenant(Tenant tenant) { + if (Func.isEmpty(tenant.getId())) { + List tenants = baseMapper.selectList(Wrappers.query().lambda().eq(Tenant::getIsDeleted, BladeConstant.DB_NOT_DELETED)); + List codes = tenants.stream().map(Tenant::getTenantCode).collect(Collectors.toList()); + String tenantCode = getTenantCode(codes); + tenant.setTenantCode(tenantCode); + // 新建租户对应的默认角色 + Role role = new Role(); + role.setTenantCode(tenantCode); + role.setParentId(0); + role.setRoleName("管理员"); + role.setRoleAlias("admin"); + role.setSort(2); + role.setIsDeleted(0); + roleMapper.insert(role); + // 新建租户对应的默认部门 + Dept dept = new Dept(); + dept.setTenantCode(tenantCode); + dept.setParentId(0); + dept.setDeptName(tenant.getTenantName()); + dept.setFullName(tenant.getTenantName()); + dept.setSort(2); + dept.setIsDeleted(0); + deptMapper.insert(dept); + } + return super.saveOrUpdate(tenant); + } + + private String getTenantCode(List codes) { + String code = tenantId.generate(); + if (codes.contains(code)) { + return getTenantCode(codes); + } + return code; + } + +} diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java index 955509f..f386d3e 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java @@ -33,7 +33,6 @@ import java.util.stream.Collectors; * 包装类,返回视图层所需的字段 * * @author Chill - * @since 2018-12-24 */ @AllArgsConstructor public class DeptWrapper extends BaseEntityWrapper { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java index 05d3c4b..9db42e4 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java @@ -33,7 +33,6 @@ import java.util.stream.Collectors; * 包装类,返回视图层所需的字段 * * @author Chill - * @since 2018-12-24 */ @AllArgsConstructor public class DictWrapper extends BaseEntityWrapper { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java index 40bb04e..75f4b21 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java @@ -34,7 +34,6 @@ import java.util.stream.Collectors; * 包装类,返回视图层所需的字段 * * @author Chill - * @since 2018-12-24 */ @AllArgsConstructor public class MenuWrapper extends BaseEntityWrapper { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ParamWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ParamWrapper.java index f811039..26d7e41 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ParamWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ParamWrapper.java @@ -26,7 +26,6 @@ import org.springblade.system.vo.ParamVO; * 包装类,返回视图层所需的字段 * * @author Chill - * @since 2018-12-28 */ @AllArgsConstructor public class ParamWrapper extends BaseEntityWrapper { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleMenuWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleMenuWrapper.java index 99d630a..e87d78b 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleMenuWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleMenuWrapper.java @@ -26,7 +26,6 @@ import org.springblade.system.vo.RoleMenuVO; * 包装类,返回视图层所需的字段 * * @author Chill - * @since 2018-12-24 */ @AllArgsConstructor public class RoleMenuWrapper extends BaseEntityWrapper { diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java index f3d9aba..c1ae009 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java @@ -33,7 +33,6 @@ import java.util.stream.Collectors; * 包装类,返回视图层所需的字段 * * @author Chill - * @since 2018-12-24 */ @AllArgsConstructor public class RoleWrapper extends BaseEntityWrapper { diff --git a/blade-service/blade-user/pom.xml b/blade-service/blade-user/pom.xml index ca174d8..9d5cfda 100644 --- a/blade-service/blade-user/pom.xml +++ b/blade-service/blade-user/pom.xml @@ -5,7 +5,7 @@ blade-service org.springblade - 2.0.0 + 2.1.0 4.0.0 diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java index a2ccb5d..d36fbaf 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java @@ -16,6 +16,7 @@ package org.springblade.system.user.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -24,7 +25,9 @@ import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.utils.DigestUtil; import org.springblade.core.tool.utils.Func; import org.springblade.system.feign.IDictClient; @@ -72,8 +75,9 @@ public class UserController { @ApiImplicitParam(name = "realName", value = "姓名", paramType = "query", dataType = "string") }) @ApiOperation(value = "列表", notes = "传入account和realName", position = 2) - public R> list(@ApiIgnore @RequestParam Map user, Query query) { - IPage pages = userService.page(Condition.getPage(query), Condition.getQueryWrapper(user, User.class)); + public R> list(@ApiIgnore @RequestParam Map user, Query query, BladeUser bladeUser) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(user, User.class); + IPage pages = userService.page(Condition.getPage(query), (!bladeUser.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE)) ? queryWrapper.lambda().eq(User::getTenantCode, bladeUser.getTenantCode()) : queryWrapper); UserWrapper userWrapper = new UserWrapper(userService, dictClient); return R.data(userWrapper.pageVO(pages)); } @@ -90,6 +94,15 @@ public class UserController { return R.status(userService.saveOrUpdate(user)); } + /** + * 修改 + */ + @PostMapping("/update") + @ApiOperation(value = "修改", notes = "传入User", position = 3) + public R update(@Valid @RequestBody User user) { + return R.status(userService.updateById(user)); + } + /** * 删除 */ diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java index da21f60..670adb7 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java @@ -34,9 +34,9 @@ public class UserClient implements IUserClient { IUserService service; @Override - @GetMapping(API_PREFIX + "/userInfo") - public R userInfo(String account, String password) { - return R.data(service.userInfo(account, password)); + @GetMapping(API_PREFIX + "/user-info") + public R userInfo(String tenantCode, String account, String password) { + return R.data(service.userInfo(tenantCode, account, password)); } } diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java index 71e8541..6ec0f97 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java @@ -40,11 +40,12 @@ public interface UserMapper extends BaseMapper { /** * 获取用户 * + * @param tenantCode * @param account * @param password * @return */ - User getUser(String account, String password); + User getUser(String tenantCode, String account, String password); /** * 获取角色名 diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml b/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml index 8cbd7d0..c4eada6 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml @@ -5,6 +5,7 @@ + @@ -45,7 +46,7 @@ FROM blade_user WHERE - account = #{param1} AND password = #{param2} + tenant_code = #{param1} and account = #{param2} AND password = #{param3}