diff --git a/README.md b/README.md index d06cabc..75b7337 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Freedom Admin -基于 **Spring Boot 2.7.10** 的后台管理系统后端服务,提供用户、角色、部门、权限等基础管理能力,并内置基于 Beetl 模板引擎的代码生成器。 +基于 **Spring Boot 2.7.10** 的后台管理系统后端服务,提供用户、角色、部门、权限等基础管理能力。 ## 技术栈 @@ -9,7 +9,7 @@ | 核心框架 | Spring Boot 2.7.10 | | 安全框架 | Spring Security 3.3.2 + JWT(jjwt 0.9.1) | | ORM | MyBatis-Plus 3.5.7 + PageHelper 2.1.0 | -| 模板引擎 | Thymeleaf(登录页等)、Beetl 3.16.2(代码生成) | +| 模板引擎 | Thymeleaf(登录页等) | | 数据库 | MySQL 8.0(utf8mb4) | | 连接池 | HikariCP | | 其他 | Lombok、Fastjson、Guava、Spring Mail | @@ -32,7 +32,6 @@ freedom-admin │ └── util/ # 工具类 └── src/main/resources/ ├── mapper/ # MyBatis XML 映射文件 - ├── btl/ # 代码生成 Beetl 模板 ├── logback-spring.xml # 日志配置(控制台 UTF-8) └── application.yml # 应用配置 ``` @@ -54,7 +53,6 @@ freedom-admin - **角色管理**:角色 CRUD、角色-权限绑定 - **部门管理**:树形部门结构 - **权限管理**:菜单 / 权限点维护,驱动前端动态路由 -- **代码生成器**:读取数据库表结构,一键生成 Controller / Service / Mapper / Entity / Vue 等全套代码 - **邮件服务**:基于 Spring Mail 的邮件发送能力 - **系统特性**:统一异常处理、PageHelper 分页、逻辑删除、接口权限控制 @@ -101,23 +99,6 @@ java -jar target/freedom-admin-1.0.1.jar 启动后服务地址:`http://localhost:8800` -## 代码生成器 API - -| 接口 | 方法 | 说明 | -| ---- | ---- | ---- | -| `/generator/findListWithPage` | GET | 分页查询数据库表列表 | -| `/generator/getTableSelectList` | GET | 获取表下拉列表 | -| `/generator/execute` | POST | 执行代码生成 | - -生成参数示例: - -``` -POST /generator/execute -Content-Type: application/x-www-form-urlencoded - -tableName=your_table_name&ruleStr=[{"rule":"value"}] -``` - ## 注意事项 - JWT 密钥与过期时间在 `application.yml` 的 `jwt` 节点配置,生产环境请务必更换密钥。 diff --git a/SQLER图.md b/SQLER图.md index e722427..324f460 100644 --- a/SQLER图.md +++ b/SQLER图.md @@ -96,27 +96,6 @@ erDiagram boolean delFlag } - %% 生成器配置表 - GeneratorConfig { - bigint id PK - varchar tableName - varchar tableComment - varchar author - varchar packageName - varchar moduleName - varchar functionName - varchar entityName - varchar mapperName - varchar serviceName - varchar serviceImplName - varchar controllerName - varchar createBy - datetime createDate - varchar updateBy - datetime updateDate - boolean delFlag - } - %% 关系定义 TSysUser ||--o{ TSysUserRole : "拥有" TSysRole ||--o{ TSysUserRole : "分配" diff --git a/sql/init.sql b/sql/init.sql index 3b5f08c..15cd8ff 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -158,9 +158,7 @@ VALUES (2, 1, 'sys:user', '用户管理', '用户管理', 2, 'ios-person', '/sys/user', 'sys/user/user-list', 1, 'admin', NOW(), 0), (3, 1, 'sys:role', '角色管理', '角色管理', 2, 'ios-people', '/sys/role', 'sys/role/role-list', 2, 'admin', NOW(), 0), (4, 1, 'sys:dept', '部门管理', '部门管理', 2, 'ios-home', '/sys/dept', 'sys/dept/dept-list', 3, 'admin', NOW(), 0), - (5, 1, 'sys:permission', '权限管理', '权限管理', 2, 'ios-key', '/sys/permission', 'sys/permission/permission-list', 4, 'admin', NOW(), 0), - (6, 0, 'generator', '代码生成', '代码生成器', 1, 'ios-hammer', '', '', 2, 'admin', NOW(), 0), - (7, 6, 'gen:code', '代码生成', '代码生成器', 2, 'ios-cog', '/code/index', 'code/index', 1, 'admin', NOW(), 0); + (5, 1, 'sys:permission', '权限管理', '权限管理', 2, 'ios-key', '/sys/permission', 'sys/permission/permission-list', 4, 'admin', NOW(), 0); -- 用户-角色关联:admin -> 超级管理员 INSERT INTO `t_sys_user_role` (`id`, `user_id`, `role_id`, `create_by`, `create_time`) @@ -173,6 +171,4 @@ VALUES (2, 1, 2, 'admin', NOW()), (3, 1, 3, 'admin', NOW()), (4, 1, 4, 'admin', NOW()), - (5, 1, 5, 'admin', NOW()), - (6, 1, 6, 'admin', NOW()), - (7, 1, 7, 'admin', NOW()); + (5, 1, 5, 'admin', NOW()); diff --git a/src/main/java/com/freedom/admin/controller/GeneratorController.java b/src/main/java/com/freedom/admin/controller/GeneratorController.java deleted file mode 100644 index 83873d9..0000000 --- a/src/main/java/com/freedom/admin/controller/GeneratorController.java +++ /dev/null @@ -1,541 +0,0 @@ -package com.freedom.admin.controller; - -import com.alibaba.fastjson.JSON; -import com.freedom.admin.base.BaseController; -import com.freedom.admin.common.Result; -import com.freedom.admin.entity.GeneratorConfig; -import com.freedom.admin.entity.GeneratorTableVO; -import com.freedom.admin.service.GeneratorService; -import com.github.pagehelper.PageInfo; -import org.apache.commons.lang3.StringUtils; -import org.apache.ibatis.annotations.Param; -import org.beetl.core.Configuration; -import org.beetl.core.GroupTemplate; -import org.beetl.core.Template; -import org.beetl.core.resource.ClasspathResourceLoader; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.security.PermitAll; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @description: TODO - * @author: zhangjiaxun - * @date: 2021年03月20日 20:05:00 - */ -@RestController -@RequestMapping("generator") -public class GeneratorController extends BaseController { - - - @Autowired - private GeneratorService generatorService; - - /** - * 列表查询 - * - * @param pageNum 当前页 - * @param pageSize 页数 - * @return Result - */ - @RequestMapping("findListWithPage") - @PermitAll - public Result findListWithPage(@Param("pageNum") int pageNum, - @Param("pageSize") int pageSize, - GeneratorTableVO generatorTableVO) { - PageInfo pageInfo = generatorService.getTableListWithPage(pageNum, pageSize, generatorTableVO); - return Result.ok().setData(pageInfo); - } - - /** - * 获取table下拉列表数据 - * - * @return Result - */ - @RequestMapping("getTableSelectList") - @PermitAll - public Result getTableSelectList() { - List> tableSelectList = generatorService.getTableSelectList(); - return Result.ok().setData(tableSelectList); - } - - /** - * 执行代码生成操作 - * @param tableName - * @param ruleStr - * @return - */ - @RequestMapping("execute") - @PermitAll - public Result execute(String tableName, String ruleStr) { - // 转换 - List> ruleList = (List>) JSON.parse(ruleStr); - - //模板路径 - ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader("/btl/"); - Configuration cfg = null; - try { - cfg = Configuration.defaultConfiguration(); - } catch (IOException e) { - e.printStackTrace(); - } - GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); - // 生成代码 - Map result = null; - try { - result = generateCode(gt, tableName, ruleList); - } catch (Exception e) { - e.printStackTrace(); - } - return Result.ok().setData(result); - } - - /** - * 生成代码 - * - * @param gt - * @throws IOException - */ - private Map generateCode(GroupTemplate gt, - String tableName, - List> ruleList) throws Exception { - GeneratorConfig generatorConfig = new GeneratorConfig(); - // 前端代码文件生成配置 - generatorConfig.setFrontProjectDir("D:/workspace-sfzbs/freedom-web"); - generatorConfig.setViewParentDir("info"); - // 后端代码文件生成配置 - generatorConfig.setAfterProjectDir("D:/workspace-sfzbs/freedom-admin"); - generatorConfig.setMapperPackage("com.freedom.admin.mapper"); - generatorConfig.setEntityPackage("com.freedom.admin.entity"); - generatorConfig.setServicePackage("com.freedom.admin.service"); - generatorConfig.setServiceImplPackage("com.freedom.admin.service.impl"); - generatorConfig.setControllerPackage("com.freedom.admin.controller"); - generatorConfig.setBasePackage("com.freedom.admin.base"); - generatorConfig.setAuthor("zhangjiaxun"); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm"); - generatorConfig.setDate(simpleDateFormat.toString()); - // 选用模板 - generatorConfig.setUsingTemplate("apiJsTemplate,viewTemplate,mapperXmlTemplate,mapperTemplate,entityTemplate,serviceTemplate,serviceImplTemplate,controllerTemplate"); - - generatorConfig.setTableName(tableName); - generatorConfig.setClassName(underlineToCamel(tableName,false)); - generatorConfig.setClassNameLowerCase(underlineToCamel(tableName,true)); - generatorConfig.setResourceName(underlineToHyphen(tableName)); - - Map result = new HashMap<>(); - if (generatorConfig.getUsingTemplate().contains("apiJsTemplate")){ - Template apiJsTemplate = gt.getTemplate("apiJs.btl"); - result.put(".js",generateApiJs(apiJsTemplate, generatorConfig, ruleList)); - } - - if (generatorConfig.getUsingTemplate().contains("viewTemplate")){ - Template viewTemplate = gt.getTemplate("view.btl"); - result.put(".vue",generateView(viewTemplate, generatorConfig, ruleList)); - } - - if (generatorConfig.getUsingTemplate().contains("mapperXmlTemplate")){ - Template mapperXmlTemplate = gt.getTemplate("mapperXml.btl"); - result.put("mapper.xml",generateMapperXml(mapperXmlTemplate, generatorConfig, ruleList)); - } - - if (generatorConfig.getUsingTemplate().contains("mapperTemplate")){ - Template mapperTemplate = gt.getTemplate("mapper.btl"); - result.put("mapper.java",generateMapper(mapperTemplate, generatorConfig)); - } - - if (generatorConfig.getUsingTemplate().contains("entityTemplate")){ - Template entityTemplate= gt.getTemplate("entity.btl"); - result.put("entity.java",generateEntity(entityTemplate, generatorConfig, ruleList)); - } - - if (generatorConfig.getUsingTemplate().contains("serviceTemplate")){ - Template serviceTemplate = gt.getTemplate("service.btl"); - result.put("service.java",generateService(serviceTemplate, generatorConfig)); - } - - if (generatorConfig.getUsingTemplate().contains("serviceImplTemplate")){ - Template serviceImplTemplate = gt.getTemplate("serviceImpl.btl"); - result.put("serviceImpl.java",generateServiceImpl(serviceImplTemplate, generatorConfig)); - } - - if (generatorConfig.getUsingTemplate().contains("controllerTemplate")){ - Template controllerTemplate = gt.getTemplate("controller.btl"); - result.put("controller.java",generateController(controllerTemplate, generatorConfig)); - } - - return result; - } - - /** - * 代码生成:generateApiJs - */ - private String generateApiJs(Template apiJsTemplate, - GeneratorConfig generatorConfig, - List> ruleList) throws IOException { - OutputStream out = null; - - //生成mapper代码 - apiJsTemplate.binding("generatorConfig", generatorConfig); - apiJsTemplate.binding("ruleList", ruleList); - String apiJsResult = apiJsTemplate.render(); - - //创建文件 - String apiJsFileUrl = generatorConfig.getFrontProjectDir() + "/src/api/"+ generatorConfig.getViewParentDir() +"/" + generatorConfig.getResourceName() + ".js"; - File apiJsFile = new File(apiJsFileUrl); - File apiJsDir = apiJsFile.getParentFile(); - if (!apiJsDir.exists()) { - apiJsDir.mkdirs(); - } - if (apiJsFile.exists()) { - apiJsFile.delete(); - } - if (!apiJsFile.exists()) { - // 若文件存在则不重新生成 - apiJsFile.createNewFile(); - out = new FileOutputStream(apiJsFile); - apiJsTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - return apiJsFileUrl; - } - - /** - * 代码生成:generateView - */ - private String generateView(Template viewTemplate, - GeneratorConfig generatorConfig, - List> ruleList) throws IOException { - OutputStream out = null; - - //生成mapper代码 - viewTemplate.binding("generatorConfig", generatorConfig); - viewTemplate.binding("ruleList", ruleList); - String viewResult = viewTemplate.render(); - - //创建文件 - String viewFileUrl = generatorConfig.getFrontProjectDir() + "/src/view/" + generatorConfig.getViewParentDir() + "/" + generatorConfig.getResourceName() + ".vue"; - File viewFile = new File(viewFileUrl); - File viewDir = viewFile.getParentFile(); - if (!viewDir.exists()) { - viewDir.mkdirs(); - } - if (viewFile.exists()) { - viewFile.delete(); - } - if (!viewFile.exists()) { - // 若文件存在则不重新生成 - viewFile.createNewFile(); - out = new FileOutputStream(viewFile); - viewTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - return viewFileUrl; - } - - /** - * 代码生成:generateMapperXml - */ - private String generateMapperXml(Template mapperXmlTemplate, - GeneratorConfig generatorConfig, - List> ruleList) throws IOException { - OutputStream out = null; - - //生成mapper代码 - mapperXmlTemplate.binding("generatorConfig", generatorConfig); - mapperXmlTemplate.binding("ruleList", ruleList); - String mapperXmlResult = mapperXmlTemplate.render(); - - //创建文件 - String mapperXmlFileUrl = generatorConfig.getAfterProjectDir() + "/src/main/resources/mapper/" + generatorConfig.getClassName() + "Mapper.xml"; - File mapperXmlFile = new File(mapperXmlFileUrl); - File mapperXmlDir = mapperXmlFile.getParentFile(); - if (!mapperXmlDir.exists()) { - mapperXmlDir.mkdirs(); - } - if (mapperXmlFile.exists()) { - mapperXmlFile.delete(); - } - if (!mapperXmlFile.exists()) { - // 若文件存在则不重新生成 - mapperXmlFile.createNewFile(); - out = new FileOutputStream(mapperXmlFile); - mapperXmlTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - return mapperXmlFileUrl; - } - - /** - * 代码生成:generateMapper - */ - private String generateMapper(Template mapperTemplate, GeneratorConfig generatorConfig) throws IOException { - OutputStream out = null; - - //生成mapper代码 - mapperTemplate.binding("generatorConfig", generatorConfig); - String mapperResult = mapperTemplate.render(); - - //创建文件 - String mapperFileUrl = generatorConfig.getAfterProjectDir() + "/src/main/java/" + dotToLine(generatorConfig.getMapperPackage()) + "/" + generatorConfig.getClassName() + "Mapper.java"; - File mapperFile = new File(mapperFileUrl); - File mapperDir = mapperFile.getParentFile(); - if (!mapperDir.exists()) { - mapperDir.mkdirs(); - } - if (mapperFile.exists()) { - mapperFile.delete(); - } - if (!mapperFile.exists()) { - // 若文件存在则不重新生成 - mapperFile.createNewFile(); - out = new FileOutputStream(mapperFile); - mapperTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - - return mapperFileUrl; - } - - /** - * 代码生成:generateEntity - */ - private String generateEntity(Template entityTemplate, - GeneratorConfig generatorConfig, - List> ruleList) throws IOException { - OutputStream out = null; - - //生成generatorConfig代码 - entityTemplate.binding("generatorConfig", generatorConfig); - entityTemplate.binding("ruleList", ruleList); - String generatorConfigResult = entityTemplate.render(); - - //创建文件 - String entityFileUrl = generatorConfig.getAfterProjectDir() + "/src/main/java/" + dotToLine(generatorConfig.getEntityPackage()) + "/" + generatorConfig.getClassName() + ".java"; - File entityFile = new File(entityFileUrl); - File entityDir = entityFile.getParentFile(); - if (!entityDir.exists()) { - entityDir.mkdirs(); - } - if (entityFile.exists()) { - entityFile.delete(); - } - if (!entityFile.exists()) { - // 若文件存在则不重新生成 - entityFile.createNewFile(); - out = new FileOutputStream(entityFile); - entityTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - - return entityFileUrl; - } - - /** - * 代码生成:generateService - */ - private String generateService(Template serviceTemplate, GeneratorConfig generatorConfig) throws IOException { - OutputStream out = null; - - //生成service代码 - serviceTemplate.binding("generatorConfig", generatorConfig); - String serviceResult = serviceTemplate.render(); - - //创建文件 - String serviceFileUrl = generatorConfig.getAfterProjectDir() + "/src/main/java/" + dotToLine(generatorConfig.getServicePackage()) + "/" + generatorConfig.getClassName() + "Service.java"; - File serviceFile = new File(serviceFileUrl); - File serviceDir = serviceFile.getParentFile(); - if (!serviceDir.exists()) { - serviceDir.mkdirs(); - } - if (serviceFile.exists()) { - serviceFile.delete(); - } - if (!serviceFile.exists()) { - // 若文件存在则不重新生成 - serviceFile.createNewFile(); - out = new FileOutputStream(serviceFile); - serviceTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - - return serviceFileUrl; - } - - /** - * 代码生成:generateServiceImpl - */ - private String generateServiceImpl(Template serviceImplTemplate, GeneratorConfig generatorConfig) throws IOException { - OutputStream out = null; - - //生成serviceImpl代码 - serviceImplTemplate.binding("generatorConfig", generatorConfig); - String serviceImplResult = serviceImplTemplate.render(); - - //创建文件 - String serviceImplFileUrl = generatorConfig.getAfterProjectDir() + "/src/main/java/" + dotToLine(generatorConfig.getServiceImplPackage()) + "/" + generatorConfig.getClassName() + "ServiceImpl.java"; - File serviceImplFile = new File(serviceImplFileUrl); - File serviceImplDir = serviceImplFile.getParentFile(); - if (!serviceImplDir.exists()) { - serviceImplDir.mkdirs(); - } - if (serviceImplFile.exists()) { - serviceImplFile.delete(); - } - if (!serviceImplFile.exists()) { - // 若文件存在则不重新生成 - serviceImplFile.createNewFile(); - out = new FileOutputStream(serviceImplFile); - serviceImplTemplate.renderTo(out); - } - - if (out != null) { - out.close(); - } - - return serviceImplFileUrl; - } - - /** - * 代码生成:generateController - */ - private String generateController(Template controllerTemplate, GeneratorConfig generatorConfig) throws IOException { - OutputStream out = null; - - //生成controller代码 - controllerTemplate.binding("generatorConfig", generatorConfig); - String controllerResult = controllerTemplate.render(); - - //创建文件 - String controllerFileUrl = generatorConfig.getAfterProjectDir() + "/src/main/java/" + dotToLine(generatorConfig.getControllerPackage()) + "/" + generatorConfig.getClassName() + "Controller.java"; - File controllerFile = new File(controllerFileUrl); - File controllerDir = controllerFile.getParentFile(); - if (!controllerDir.exists()) { - controllerDir.mkdirs(); - } - if (controllerFile.exists()) { - controllerFile.delete(); - } - if (!controllerFile.exists()) { - // 若文件存在则不重新生成 - controllerFile.createNewFile(); - out = new FileOutputStream(controllerFile); - controllerTemplate.renderTo(out); - } - if (out != null) { - out.close(); - } - - return controllerFileUrl; - } - - /** - * 工具方法:点转斜线 - * - * @param str - */ - private String dotToLine(String str) { - return str.replace(".", "/"); - } - - /** - * 工具方法:下划线_转连字符- - * - * @param str - */ - private String underlineToHyphen(String str) { - return str.replace("_", "-"); - } - - /** - * 下划线转驼峰法 - * @param line 源字符串 - * @param smallCamel 大小驼峰,是否为小驼峰 - * @return 转换后的字符串 - */ - private String underlineToCamel(String line,boolean smallCamel){ - if(line==null||"".equals(line)){ - return ""; - } - StringBuffer sb = new StringBuffer(); - Pattern pattern = Pattern.compile("([A-Za-z\\d]+)(_)?"); - Matcher matcher = pattern.matcher(line); - while(matcher.find()){ - String word = matcher.group(); - sb.append(smallCamel&&matcher.start()==0?Character.toLowerCase(word.charAt(0)):Character.toUpperCase(word.charAt(0))); - int index=word.lastIndexOf('_'); - if(index>0){ - sb.append(word.substring(1, index).toLowerCase()); - }else{ - sb.append(word.substring(1).toLowerCase()); - } - } - return sb.toString(); - } - - /** - * 工具方法:驼峰法转下划线 - * - * @param str - */ - private String cameltoUnderline(String str) { - - if (StringUtils.isBlank(str)) { - return ""; - } - if (str.length() == 1) { - return str.toLowerCase(); - } - StringBuffer sb = new StringBuffer(); - for (int i = 1; i < str.length(); i++) { - if (Character.isUpperCase(str.charAt(i))) { - sb.append("_" + Character.toLowerCase(str.charAt(i))); - } else { - sb.append(str.charAt(i)); - } - } - return (str.charAt(0) + sb.toString()).toLowerCase(); - } - - /** - * 工具方法:首字母小写 - * - * @param str - */ - private String first2LowerCase(String str) { - - if (StringUtils.isBlank(str)) { - return ""; - } - if (str.length() == 1) { - return str.toLowerCase(); - } - StringBuffer sb = new StringBuffer(); - sb.append(Character.toLowerCase(str.charAt(0))); - sb.append(str.substring(1, str.length())); - return sb.toString(); - } - -} diff --git a/src/main/java/com/freedom/admin/entity/GeneratorConfig.java b/src/main/java/com/freedom/admin/entity/GeneratorConfig.java deleted file mode 100644 index b38acf2..0000000 --- a/src/main/java/com/freedom/admin/entity/GeneratorConfig.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.freedom.admin.entity; - -import lombok.Data; - -/** - * @author zhangjiaxun - * @date 2020/06/19 14:00 - * @description 生成代码的配置 - */ -@Data -public class GeneratorConfig { - - /** - * 前端项目所在系统路径 - * */ - private String frontProjectDir; - - /** - * 后端项目所在系统路径 - * */ - private String afterProjectDir; - - /** - * mapper文件生成路径 - * */ - private String mapperPackage; - - /** - * entity文件生成路径 - * */ - private String entityPackage; - - /** - * service文件生成路径 - * */ - private String servicePackage; - - /** - * serviceImpl文件生成路径 - * */ - private String serviceImplPackage; - - /** - * controller文件生成路径 - * */ - private String controllerPackage; - - /** - * 通用mapper文件路径 - * */ - private String basePackage; - - /** - * config文件路径 - * */ - private String configPackage; - - /** - * author作者名称 - * */ - private String author; - - /** - * date日期 - * */ - private String date; - - /** - * viewParentDir描述 - * */ - private String description; - - /** - * 类名 - * */ - private String className; - - /** - * 类名-小驼峰 - * */ - private String classNameLowerCase; - - /** - * 表名 - * */ - private String tableName; - - /** - * 资源名 - * */ - private String resourceName; - - /** - * 视图父目录 - * */ - private String viewParentDir; - - /** - * 使用模板 - * */ - private String usingTemplate; - -} diff --git a/src/main/java/com/freedom/admin/entity/GeneratorTableVO.java b/src/main/java/com/freedom/admin/entity/GeneratorTableVO.java deleted file mode 100644 index 3359827..0000000 --- a/src/main/java/com/freedom/admin/entity/GeneratorTableVO.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.freedom.admin.entity; - -import lombok.Data; - -/** - * @description: 生成数据表的信息-值对象 - * @author: zhangjiaxun - * @date: 2021年03月20日 20:23:00 - */ -@Data -public class GeneratorTableVO { - - /** - * 表名 - */ - private String tableName; - - /** - * 字段名 - */ - private String columnName; - - /** - * 字段类型 - */ - private String columnType; - - /** - * 数据类型 - */ - private String dataType; - - /** - * 字段长度 - */ - private Double characterMaximumLength; - - /** - * 是否主键 - */ - private String isColumnKey; - - /** - * 是否为空 - */ - private String isNullable; - - /** - * 字段默认值 - */ - private String columnDefault; - - /** - * 注释 - */ - private String columnComment; - -} diff --git a/src/main/java/com/freedom/admin/mapper/GeneratorMapper.java b/src/main/java/com/freedom/admin/mapper/GeneratorMapper.java deleted file mode 100644 index 7777ba6..0000000 --- a/src/main/java/com/freedom/admin/mapper/GeneratorMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.freedom.admin.mapper; - -import com.freedom.admin.entity.GeneratorTableVO; - -import java.util.List; -import java.util.Map; - -/** - * @description: TODO - * @author: zhangjiaxun - * @date: 2021年03月20日 22:28:00 - */ -public interface GeneratorMapper { - - /** - * 分页查询mysql数据表 - * - * @return List> - * */ - List getTableListWithPage(GeneratorTableVO generatorTableVO); - - /** - * 获取mysql表数据下拉列表数据 - * - * @return List> - * */ - List> getTableSelectList(); - -} diff --git a/src/main/java/com/freedom/admin/service/GeneratorService.java b/src/main/java/com/freedom/admin/service/GeneratorService.java deleted file mode 100644 index 86a3ce6..0000000 --- a/src/main/java/com/freedom/admin/service/GeneratorService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.freedom.admin.service; - -import com.freedom.admin.entity.GeneratorTableVO; -import com.github.pagehelper.PageInfo; - -import java.util.List; -import java.util.Map; - -/** - * @author: zhangjiaxun - * @date: 2021年03月20日 22:21:00 - * @description: 业务层接口-代码生成业务接口 - */ -public interface GeneratorService { - - /** - * 分页查询mysql数据表 - * - * @return List> - * */ - PageInfo getTableListWithPage(int pageNum, int pageSize, GeneratorTableVO generatorTableVO); - - /** - * 获取mysql表数据下拉列表数据 - * - * @return List> - * */ - List> getTableSelectList(); - -} diff --git a/src/main/java/com/freedom/admin/service/impl/GeneratorServiceImpl.java b/src/main/java/com/freedom/admin/service/impl/GeneratorServiceImpl.java deleted file mode 100644 index d68357d..0000000 --- a/src/main/java/com/freedom/admin/service/impl/GeneratorServiceImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.freedom.admin.service.impl; - -import com.freedom.admin.entity.GeneratorTableVO; -import com.freedom.admin.mapper.GeneratorMapper; -import com.freedom.admin.service.GeneratorService; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Map; - -/** - * @author zhangjiaxun - * @date 2021/2/4 9:29 - * @description 业务层实现-代码生成业务 - */ -@Service -@Log4j2 -public class GeneratorServiceImpl implements GeneratorService { - - @Autowired - private GeneratorMapper generatorMapper; - - @Override - public PageInfo getTableListWithPage(int pageNum, int pageSize, GeneratorTableVO generatorTableVO) { - PageHelper.startPage(pageNum, pageSize); - List list = generatorMapper.getTableListWithPage(generatorTableVO); - PageInfo pageInfo = new PageInfo<>(list); - return pageInfo; - } - - @Override - public List> getTableSelectList() { - return generatorMapper.getTableSelectList(); - } - -} diff --git a/src/main/resources/btl/apiJs.btl b/src/main/resources/btl/apiJs.btl deleted file mode 100644 index 6a1fd21..0000000 --- a/src/main/resources/btl/apiJs.btl +++ /dev/null @@ -1,50 +0,0 @@ -import axios from '@/libs/api.request' -import {getToken} from "@/libs/util" - -/** 获取列表 **/ -export const getDataList = (data) => { - return axios.request({ - url: '${generatorConfig.resourceName}/findPageList', - headers: { - "Authorization": getToken() - }, - data: data, - method: 'post' - }) -} - -/** 新增 **/ -export const add = (data) => { - return axios.request({ - url: '${generatorConfig.resourceName}/add', - headers: { - "Authorization": getToken() - }, - data: data, - method: 'post' - }) -} - -/** 更新 **/ -export const update = (data) => { - return axios.request({ - url: '${generatorConfig.resourceName}/update', - headers: { - "Authorization": getToken() - }, - data: data, - method: 'post' - }) -} - -/** 删除 **/ -export const remove = (data) => { - return axios.request({ - url: '${generatorConfig.resourceName}/remove', - headers: { - "Authorization": getToken() - }, - data: data, - method: 'post' - }) -} diff --git a/src/main/resources/btl/controller.btl b/src/main/resources/btl/controller.btl deleted file mode 100644 index c3bd2be..0000000 --- a/src/main/resources/btl/controller.btl +++ /dev/null @@ -1,98 +0,0 @@ -package com.freedom.admin.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import ${generatorConfig.basePackage}.BaseController; -import com.freedom.admin.common.Result; -import ${generatorConfig.entityPackage}.${generatorConfig.className}; -import ${generatorConfig.servicePackage}.${generatorConfig.className}Service; -import lombok.extern.log4j.Log4j2; -import org.apache.commons.lang3.StringUtils; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.security.PermitAll; -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * @author ${generatorConfig.author} - * @date ${generatorConfig.date} - * @description 控制层-${generatorConfig.description} - */ -@RestController -@RequestMapping("${generatorConfig.resourceName}") -@Log4j2 -public class ${generatorConfig.className}Controller extends BaseController { - - @Autowired - private ${generatorConfig.className}Service ${generatorConfig.classNameLowerCase}Service; - - /** - * 获取数据列表 - * */ - @RequestMapping("/findPageList") - @PermitAll - public Result<${generatorConfig.className}> findPageList(@Param("pageNum") long pageNum, - @Param("pageSize") long pageSize, - ${generatorConfig.className} ${generatorConfig.classNameLowerCase}){ - QueryWrapper<${generatorConfig.className}> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("del_flag",0); - Page<${generatorConfig.className}> page = ${generatorConfig.classNameLowerCase}Service.page(new Page<>(pageNum,pageSize), queryWrapper); - return Result.ok().setData(page); - } - - /** - * 新增 - * */ - @RequestMapping("/add") - @PermitAll - public Result<${generatorConfig.className}> add(${generatorConfig.className} ${generatorConfig.classNameLowerCase}){ - try { - ${generatorConfig.classNameLowerCase}.setCreateBy(getUsername()); - ${generatorConfig.classNameLowerCase}.setCreateDate(new Date()); - boolean save = ${generatorConfig.classNameLowerCase}Service.save(${generatorConfig.classNameLowerCase}); - return Result.ok().setData(save); - } catch (Exception e) { - return Result.error(); - } - } - - /** - * 更新 - * */ - @RequestMapping("/update") - @PermitAll - public Result update(${generatorConfig.className} ${generatorConfig.classNameLowerCase}){ - try { - ${generatorConfig.classNameLowerCase}.setUpdateBy(getUsername()); - ${generatorConfig.classNameLowerCase}.setUpdateDate(new Date()); - boolean update = ${generatorConfig.classNameLowerCase}Service.updateById(${generatorConfig.classNameLowerCase}); - return Result.ok().setData(update); - } catch (Exception e) { - return Result.error(); - } - - } - - /** - * 删除 - * */ - @RequestMapping("/remove") - @PermitAll - public Result remove(${generatorConfig.className} ${generatorConfig.classNameLowerCase}){ - try { - ${generatorConfig.classNameLowerCase}.setUpdateBy(getUsername()); - ${generatorConfig.classNameLowerCase}.setUpdateDate(new Date()); - boolean remove = ${generatorConfig.classNameLowerCase}Service.removeById(${generatorConfig.classNameLowerCase}.getId()); - return Result.ok().setData(remove); - } catch (Exception e) { - return Result.error(); - } - - } - -} \ No newline at end of file diff --git a/src/main/resources/btl/entity.btl b/src/main/resources/btl/entity.btl deleted file mode 100644 index 1c60553..0000000 --- a/src/main/resources/btl/entity.btl +++ /dev/null @@ -1,27 +0,0 @@ -package com.freedom.admin.entity; - -import java.io.Serializable; -import java.util.Date; -import lombok.Data; - -/** - * @author ${generatorConfig.author} - * @date ${generatorConfig.date} - * @description ${generatorConfig.tableName} ${generatorConfig.description} - */ -@Data -public class ${generatorConfig.className} implements Serializable { -<% - for(rule in ruleList){ -%> - /** - * ${rule.variableComment} - * - */ - private ${rule.variableType} ${rule.variableName}; -<% - } -%> - - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/src/main/resources/btl/mapper.btl b/src/main/resources/btl/mapper.btl deleted file mode 100644 index 40cccb5..0000000 --- a/src/main/resources/btl/mapper.btl +++ /dev/null @@ -1,13 +0,0 @@ -package com.freedom.admin.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import ${generatorConfig.entityPackage}.${generatorConfig.className}; - -/** - * @author ${generatorConfig.author} - * @date ${generatorConfig.date} - * @description 数据访问层-${generatorConfig.description} -*/ -public interface ${generatorConfig.className}Mapper extends BaseMapper<${generatorConfig.className}> { - -} \ No newline at end of file diff --git a/src/main/resources/btl/mapperXml.btl b/src/main/resources/btl/mapperXml.btl deleted file mode 100644 index a4354eb..0000000 --- a/src/main/resources/btl/mapperXml.btl +++ /dev/null @@ -1,30 +0,0 @@ - - - - -<% - for(rule in ruleList){ -%> - -<% - } -%> - - - -<% - for(rule in ruleList){ - if(rule.index == ruleList.~size){ -%> - a.${rule.columnName} AS ${rule.variableName} -<% - }else{ -%> - a.${rule.columnName} AS ${rule.variableName}, -<% - } - } -%> - - - \ No newline at end of file diff --git a/src/main/resources/btl/service.btl b/src/main/resources/btl/service.btl deleted file mode 100644 index f6802a7..0000000 --- a/src/main/resources/btl/service.btl +++ /dev/null @@ -1,13 +0,0 @@ -package com.freedom.admin.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import ${generatorConfig.entityPackage}.${generatorConfig.className}; - -/** - * @author ${generatorConfig.author} - * @date ${generatorConfig.date} - * @description 业务接口层-${generatorConfig.description} - */ -public interface ${generatorConfig.className}Service extends IService<${generatorConfig.className}> { - -} diff --git a/src/main/resources/btl/serviceImpl.btl b/src/main/resources/btl/serviceImpl.btl deleted file mode 100644 index 5222b05..0000000 --- a/src/main/resources/btl/serviceImpl.btl +++ /dev/null @@ -1,18 +0,0 @@ -package com.freedom.admin.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import ${generatorConfig.entityPackage}.${generatorConfig.className}; -import ${generatorConfig.mapperPackage}.${generatorConfig.className}Mapper; -import ${generatorConfig.servicePackage}.${generatorConfig.className}Service; -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -/** - * @author ${generatorConfig.author} - * @date ${generatorConfig.date} - * @description 业务层实现-${generatorConfig.description} - */ -@Service -public class ${generatorConfig.className}ServiceImpl extends ServiceImpl<${generatorConfig.className}Mapper, ${generatorConfig.className}> implements ${generatorConfig.className}Service { - -} diff --git a/src/main/resources/btl/view.btl b/src/main/resources/btl/view.btl deleted file mode 100644 index 86b3c51..0000000 --- a/src/main/resources/btl/view.btl +++ /dev/null @@ -1,350 +0,0 @@ - - - - - diff --git a/src/main/resources/mapper/GeneratorMapper.xml b/src/main/resources/mapper/GeneratorMapper.xml deleted file mode 100644 index 1df684a..0000000 --- a/src/main/resources/mapper/GeneratorMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file