From 60f253b19ae13298a24f79c70e15619332204a70 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期一, 11 九月 2023 15:32:55 +0800 Subject: [PATCH] bug --- /dev/null | 74 ------------------------------------- ruoyi-modules/ruoyi-goods/pom.xml | 2 ruoyi-modules/ruoyi-shop/pom.xml | 2 ruoyi-modules/ruoyi-system/pom.xml | 2 ruoyi-api/ruoyi-api-system/pom.xml | 2 pom.xml | 1 ruoyi-modules/pom.xml | 2 - ruoyi-modules/ruoyi-member/pom.xml | 2 ruoyi-modules/ruoyi-order/pom.xml | 3 - 9 files changed, 6 insertions(+), 84 deletions(-) diff --git a/bin/run-modules-file.bat b/bin/run-modules-file.bat deleted file mode 100644 index 6d89c90..0000000 --- a/bin/run-modules-file.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -echo. -echo [��Ϣ] ʹ��Jar��������Modules-File���̡� -echo. - -cd %~dp0 -cd ../ruoyi-modules/ruoyi-file/target - -set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m - -java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-file.jar - -cd bin -pause \ No newline at end of file diff --git a/bin/run-modules-gen.bat b/bin/run-modules-gen.bat deleted file mode 100644 index 0a4c390..0000000 --- a/bin/run-modules-gen.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -echo. -echo [��Ϣ] ʹ��Jar��������Modules-Gen���̡� -echo. - -cd %~dp0 -cd ../ruoyi-modules/ruoyi-gen/target - -set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m - -java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-gen.jar - -cd bin -pause \ No newline at end of file diff --git a/bin/run-modules-job.bat b/bin/run-modules-job.bat deleted file mode 100644 index 443e59d..0000000 --- a/bin/run-modules-job.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -echo. -echo [��Ϣ] ʹ��Jar��������Modules-Job���̡� -echo. - -cd %~dp0 -cd ../ruoyi-modules/ruoyi-job/target - -set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m - -java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-job.jar - -cd bin -pause \ No newline at end of file diff --git a/bin/run-monitor.bat b/bin/run-monitor.bat deleted file mode 100644 index 3e8e322..0000000 --- a/bin/run-monitor.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -echo. -echo [��Ϣ] ʹ��Jar��������Monitor���̡� -echo. - -cd %~dp0 -cd ../ruoyi-visual/ruoyi-monitor/target - -set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m - -java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-visual-monitor.jar - -cd bin -pause \ No newline at end of file diff --git a/pom.xml b/pom.xml index f7b7a22..0dc144a 100644 --- a/pom.xml +++ b/pom.xml @@ -223,7 +223,6 @@ <modules> <module>ruoyi-auth</module> <module>ruoyi-gateway</module> - <module>ruoyi-visual</module> <module>ruoyi-modules</module> <module>ruoyi-api</module> <module>ruoyi-common</module> diff --git a/ruoyi-api/ruoyi-api-system/pom.xml b/ruoyi-api/ruoyi-api-system/pom.xml index 74337fd..c3611a9 100644 --- a/ruoyi-api/ruoyi-api-system/pom.xml +++ b/ruoyi-api/ruoyi-api-system/pom.xml @@ -23,7 +23,7 @@ <artifactId>ruoyi-common-core</artifactId> </dependency> - + <!-- MYBATIS PLUS--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 208cf31..0d653bb 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -10,8 +10,6 @@ <modules> <module>ruoyi-system</module> - <module>ruoyi-gen</module> - <module>ruoyi-job</module> <module>ruoyi-file</module> <module>ruoyi-member</module> <module>ruoyi-shop</module> diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml deleted file mode 100644 index de5d2a7..0000000 --- a/ruoyi-modules/ruoyi-gen/pom.xml +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-modules</artifactId> - <version>3.6.2</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-modules-gen</artifactId> - - <description> - ruoyi-modules-gen代码生成 - </description> - - <dependencies> - - <!-- SpringCloud Alibaba Nacos --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> - </dependency> - - <!-- SpringCloud Alibaba Nacos Config --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> - </dependency> - - <!-- SpringCloud Alibaba Sentinel --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> - </dependency> - - <!-- SpringBoot Actuator --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - - <!-- Swagger UI --> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger-ui</artifactId> - <version>${swagger.fox.version}</version> - </dependency> - - <!-- Apache Velocity --> - <dependency> - <groupId>org.apache.velocity</groupId> - <artifactId>velocity-engine-core</artifactId> - </dependency> - - <!-- Mysql Connector --> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - </dependency> - - <!-- RuoYi Common Log --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-log</artifactId> - </dependency> - - <!-- RuoYi Common Swagger --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-swagger</artifactId> - </dependency> - - </dependencies> - - <build> - <finalName>${project.artifactId}</finalName> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>repackage</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - -</project> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java deleted file mode 100644 index 02cfcd7..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.gen; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import com.ruoyi.common.security.annotation.EnableCustomConfig; -import com.ruoyi.common.security.annotation.EnableRyFeignClients; -import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; - -/** - * 代码生成 - * - * @author jqs - */ -@EnableCustomConfig -@EnableCustomSwagger2 -@EnableRyFeignClients -@SpringBootApplication -public class RuoYiGenApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiGenApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 代码生成模块启动成功 ლ(´ڡ`ლ)゙ \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java deleted file mode 100644 index 4d9ac2a..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.ruoyi.gen.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * 代码生成相关配置 - * - * @author jqs - */ -@Component -@ConfigurationProperties(prefix = "gen") -public class GenConfig -{ - /** 作者 */ - public static String author; - - /** 生成包路径 */ - public static String packageName; - - /** 自动去除表前缀,默认是false */ - public static boolean autoRemovePre; - - /** 表前缀(类名不会包含表前缀) */ - public static String tablePrefix; - - public static String getAuthor() - { - return author; - } - - public void setAuthor(String author) - { - GenConfig.author = author; - } - - public static String getPackageName() - { - return packageName; - } - - public void setPackageName(String packageName) - { - GenConfig.packageName = packageName; - } - - public static boolean getAutoRemovePre() - { - return autoRemovePre; - } - - public void setAutoRemovePre(boolean autoRemovePre) - { - GenConfig.autoRemovePre = autoRemovePre; - } - - public static String getTablePrefix() - { - return tablePrefix; - } - - public void setTablePrefix(String tablePrefix) - { - GenConfig.tablePrefix = tablePrefix; - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java deleted file mode 100644 index 4b0e53f..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.ruoyi.gen.controller; - -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.servlet.http.HttpServletResponse; -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.core.text.Convert; -import com.ruoyi.common.core.web.controller.BaseController; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.page.TableDataInfo; -import com.ruoyi.common.log.annotation.Log; -import com.ruoyi.common.log.enums.BusinessType; -import com.ruoyi.common.security.annotation.RequiresPermissions; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; -import com.ruoyi.gen.service.IGenTableColumnService; -import com.ruoyi.gen.service.IGenTableService; - -/** - * 代码生成 操作处理 - * - * @author jqs - */ -@RequestMapping("/gen") -@RestController -public class GenController extends BaseController -{ - @Autowired - private IGenTableService genTableService; - - @Autowired - private IGenTableColumnService genTableColumnService; - - /** - * 查询代码生成列表 - */ - @RequiresPermissions("tool:gen:list") - @GetMapping("/list") - public TableDataInfo genList(GenTable genTable) - { - startPage(); - List<GenTable> list = genTableService.selectGenTableList(genTable); - return getDataTable(list); - } - - /** - * 修改代码生成业务 - */ - @RequiresPermissions("tool:gen:query") - @GetMapping(value = "/{tableId}") - public AjaxResult getInfo(@PathVariable Long tableId) - { - GenTable table = genTableService.selectGenTableById(tableId); - List<GenTable> tables = genTableService.selectGenTableAll(); - List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("info", table); - map.put("rows", list); - map.put("tables", tables); - return success(map); - } - - /** - * 查询数据库列表 - */ - @RequiresPermissions("tool:gen:list") - @GetMapping("/db/list") - public TableDataInfo dataList(GenTable genTable) - { - startPage(); - List<GenTable> list = genTableService.selectDbTableList(genTable); - return getDataTable(list); - } - - /** - * 查询数据表字段列表 - */ - @GetMapping(value = "/column/{tableId}") - public TableDataInfo columnList(Long tableId) - { - TableDataInfo dataInfo = new TableDataInfo(); - List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); - dataInfo.setRows(list); - dataInfo.setTotal(list.size()); - return dataInfo; - } - - /** - * 导入表结构(保存) - */ - @RequiresPermissions("tool:gen:import") - @Log(title = "代码生成", businessType = BusinessType.IMPORT) - @PostMapping("/importTable") - public AjaxResult importTableSave(String tables) - { - String[] tableNames = Convert.toStrArray(tables); - // 查询表信息 - List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames); - genTableService.importGenTable(tableList); - return success(); - } - - /** - * 修改保存代码生成业务 - */ - @RequiresPermissions("tool:gen:edit") - @Log(title = "代码生成", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult editSave(@Validated @RequestBody GenTable genTable) - { - genTableService.validateEdit(genTable); - genTableService.updateGenTable(genTable); - return success(); - } - - /** - * 删除代码生成 - */ - @RequiresPermissions("tool:gen:remove") - @Log(title = "代码生成", businessType = BusinessType.DELETE) - @DeleteMapping("/{tableIds}") - public AjaxResult remove(@PathVariable Long[] tableIds) - { - genTableService.deleteGenTableByIds(tableIds); - return success(); - } - - /** - * 预览代码 - */ - @RequiresPermissions("tool:gen:preview") - @GetMapping("/preview/{tableId}") - public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException - { - Map<String, String> dataMap = genTableService.previewCode(tableId); - return success(dataMap); - } - - /** - * 生成代码(下载方式) - */ - @RequiresPermissions("tool:gen:code") - @Log(title = "代码生成", businessType = BusinessType.GENCODE) - @GetMapping("/download/{tableName}") - public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException - { - byte[] data = genTableService.downloadCode(tableName); - genCode(response, data); - } - - /** - * 生成代码(自定义路径) - */ - @RequiresPermissions("tool:gen:code") - @Log(title = "代码生成", businessType = BusinessType.GENCODE) - @GetMapping("/genCode/{tableName}") - public AjaxResult genCode(@PathVariable("tableName") String tableName) - { - genTableService.generatorCode(tableName); - return success(); - } - - /** - * 同步数据库 - */ - @RequiresPermissions("tool:gen:edit") - @Log(title = "代码生成", businessType = BusinessType.UPDATE) - @GetMapping("/synchDb/{tableName}") - public AjaxResult synchDb(@PathVariable("tableName") String tableName) - { - genTableService.synchDb(tableName); - return success(); - } - - /** - * 批量生成代码 - */ - @RequiresPermissions("tool:gen:code") - @Log(title = "代码生成", businessType = BusinessType.GENCODE) - @GetMapping("/batchGenCode") - public void batchGenCode(HttpServletResponse response, String tables) throws IOException - { - String[] tableNames = Convert.toStrArray(tables); - byte[] data = genTableService.downloadCode(tableNames); - genCode(response, data); - } - - /** - * 生成zip文件 - */ - private void genCode(HttpServletResponse response, byte[] data) throws IOException - { - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); - response.addHeader("Content-Length", "" + data.length); - response.setContentType("application/octet-stream; charset=UTF-8"); - IOUtils.write(data, response.getOutputStream()); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java deleted file mode 100644 index 04b6646..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java +++ /dev/null @@ -1,370 +0,0 @@ -package com.ruoyi.gen.domain; - -import java.util.List; -import javax.validation.Valid; -import javax.validation.constraints.NotBlank; -import org.apache.commons.lang3.ArrayUtils; -import com.ruoyi.common.core.constant.GenConstants; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 业务表 gen_table - * - * @author jqs - */ -public class GenTable extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 编号 */ - private Long tableId; - - /** 表名称 */ - @NotBlank(message = "表名称不能为空") - private String tableName; - - /** 表描述 */ - @NotBlank(message = "表描述不能为空") - private String tableComment; - - /** 关联父表的表名 */ - private String subTableName; - - /** 本表关联父表的外键名 */ - private String subTableFkName; - - /** 实体类名称(首字母大写) */ - @NotBlank(message = "实体类名称不能为空") - private String className; - - /** 使用的模板(crud单表操作 tree树表操作 sub主子表操作) */ - private String tplCategory; - - /** 生成包路径 */ - @NotBlank(message = "生成包路径不能为空") - private String packageName; - - /** 生成模块名 */ - @NotBlank(message = "生成模块名不能为空") - private String moduleName; - - /** 生成业务名 */ - @NotBlank(message = "生成业务名不能为空") - private String businessName; - - /** 生成功能名 */ - @NotBlank(message = "生成功能名不能为空") - private String functionName; - - /** 生成作者 */ - @NotBlank(message = "作者不能为空") - private String functionAuthor; - - /** 生成代码方式(0zip压缩包 1自定义路径) */ - private String genType; - - /** 生成路径(不填默认项目路径) */ - private String genPath; - - /** 主键信息 */ - private GenTableColumn pkColumn; - - /** 子表信息 */ - private GenTable subTable; - - /** 表列信息 */ - @Valid - private List<GenTableColumn> columns; - - /** 其它生成选项 */ - private String options; - - /** 树编码字段 */ - private String treeCode; - - /** 树父编码字段 */ - private String treeParentCode; - - /** 树名称字段 */ - private String treeName; - - /** 上级菜单ID字段 */ - private String parentMenuId; - - /** 上级菜单名称字段 */ - private String parentMenuName; - - public Long getTableId() - { - return tableId; - } - - public void setTableId(Long tableId) - { - this.tableId = tableId; - } - - public String getTableName() - { - return tableName; - } - - public void setTableName(String tableName) - { - this.tableName = tableName; - } - - public String getTableComment() - { - return tableComment; - } - - public void setTableComment(String tableComment) - { - this.tableComment = tableComment; - } - - public String getSubTableName() - { - return subTableName; - } - - public void setSubTableName(String subTableName) - { - this.subTableName = subTableName; - } - - public String getSubTableFkName() - { - return subTableFkName; - } - - public void setSubTableFkName(String subTableFkName) - { - this.subTableFkName = subTableFkName; - } - - public String getClassName() - { - return className; - } - - public void setClassName(String className) - { - this.className = className; - } - - public String getTplCategory() - { - return tplCategory; - } - - public void setTplCategory(String tplCategory) - { - this.tplCategory = tplCategory; - } - - public String getPackageName() - { - return packageName; - } - - public void setPackageName(String packageName) - { - this.packageName = packageName; - } - - public String getModuleName() - { - return moduleName; - } - - public void setModuleName(String moduleName) - { - this.moduleName = moduleName; - } - - public String getBusinessName() - { - return businessName; - } - - public void setBusinessName(String businessName) - { - this.businessName = businessName; - } - - public String getFunctionName() - { - return functionName; - } - - public void setFunctionName(String functionName) - { - this.functionName = functionName; - } - - public String getFunctionAuthor() - { - return functionAuthor; - } - - public void setFunctionAuthor(String functionAuthor) - { - this.functionAuthor = functionAuthor; - } - - public String getGenType() - { - return genType; - } - - public void setGenType(String genType) - { - this.genType = genType; - } - - public String getGenPath() - { - return genPath; - } - - public void setGenPath(String genPath) - { - this.genPath = genPath; - } - - public GenTableColumn getPkColumn() - { - return pkColumn; - } - - public void setPkColumn(GenTableColumn pkColumn) - { - this.pkColumn = pkColumn; - } - - public GenTable getSubTable() - { - return subTable; - } - - public void setSubTable(GenTable subTable) - { - this.subTable = subTable; - } - public List<GenTableColumn> getColumns() - { - return columns; - } - - public void setColumns(List<GenTableColumn> columns) - { - this.columns = columns; - } - - public String getOptions() - { - return options; - } - - public void setOptions(String options) - { - this.options = options; - } - - public String getTreeCode() - { - return treeCode; - } - - public void setTreeCode(String treeCode) - { - this.treeCode = treeCode; - } - - public String getTreeParentCode() - { - return treeParentCode; - } - - public void setTreeParentCode(String treeParentCode) - { - this.treeParentCode = treeParentCode; - } - - public String getTreeName() - { - return treeName; - } - - public void setTreeName(String treeName) - { - this.treeName = treeName; - } - - public String getParentMenuId() - { - return parentMenuId; - } - - public void setParentMenuId(String parentMenuId) - { - this.parentMenuId = parentMenuId; - } - - public String getParentMenuName() - { - return parentMenuName; - } - - public void setParentMenuName(String parentMenuName) - { - this.parentMenuName = parentMenuName; - } - - public boolean isSub() - { - return isSub(this.tplCategory); - } - - public static boolean isSub(String tplCategory) - { - return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory); - } - public boolean isTree() - { - return isTree(this.tplCategory); - } - - public static boolean isTree(String tplCategory) - { - return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); - } - - public boolean isCrud() - { - return isCrud(this.tplCategory); - } - - public static boolean isCrud(String tplCategory) - { - return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); - } - - public boolean isSuperColumn(String javaField) - { - return isSuperColumn(this.tplCategory, javaField); - } - - public static boolean isSuperColumn(String tplCategory, String javaField) - { - if (isTree(tplCategory)) - { - return StringUtils.equalsAnyIgnoreCase(javaField, - ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); - } - return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java deleted file mode 100644 index 9731d10..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java +++ /dev/null @@ -1,374 +0,0 @@ -package com.ruoyi.gen.domain; - -import javax.validation.constraints.NotBlank; - -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 代码生成业务字段表 gen_table_column - * - * @author jqs - */ -public class GenTableColumn extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 编号 */ - private Long columnId; - - /** 归属表编号 */ - private Long tableId; - - /** 列名称 */ - private String columnName; - - /** 列描述 */ - private String columnComment; - - /** 列类型 */ - private String columnType; - - /** JAVA类型 */ - private String javaType; - - /** JAVA字段名 */ - @NotBlank(message = "Java属性不能为空") - private String javaField; - - /** 是否主键(1是) */ - private String isPk; - - /** 是否自增(1是) */ - private String isIncrement; - - /** 是否必填(1是) */ - private String isRequired; - - /** 是否为插入字段(1是) */ - private String isInsert; - - /** 是否编辑字段(1是) */ - private String isEdit; - - /** 是否列表字段(1是) */ - private String isList; - - /** 是否查询字段(1是) */ - private String isQuery; - - /** 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) */ - private String queryType; - - /** 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) */ - private String htmlType; - - /** 字典类型 */ - private String dictType; - - /** 排序 */ - private Integer sort; - - public void setColumnId(Long columnId) - { - this.columnId = columnId; - } - - public Long getColumnId() - { - return columnId; - } - - public void setTableId(Long tableId) - { - this.tableId = tableId; - } - - public Long getTableId() - { - return tableId; - } - - public void setColumnName(String columnName) - { - this.columnName = columnName; - } - - public String getColumnName() - { - return columnName; - } - - public void setColumnComment(String columnComment) - { - this.columnComment = columnComment; - } - - public String getColumnComment() - { - return columnComment; - } - - public void setColumnType(String columnType) - { - this.columnType = columnType; - } - - public String getColumnType() - { - return columnType; - } - - public void setJavaType(String javaType) - { - this.javaType = javaType; - } - - public String getJavaType() - { - return javaType; - } - - public void setJavaField(String javaField) - { - this.javaField = javaField; - } - - public String getJavaField() - { - return javaField; - } - - public String getCapJavaField() - { - return StringUtils.capitalize(javaField); - } - - public void setIsPk(String isPk) - { - this.isPk = isPk; - } - - public String getIsPk() - { - return isPk; - } - - public boolean isPk() - { - return isPk(this.isPk); - } - - public boolean isPk(String isPk) - { - return isPk != null && StringUtils.equals("1", isPk); - } - - public String getIsIncrement() - { - return isIncrement; - } - - public void setIsIncrement(String isIncrement) - { - this.isIncrement = isIncrement; - } - - public boolean isIncrement() - { - return isIncrement(this.isIncrement); - } - - public boolean isIncrement(String isIncrement) - { - return isIncrement != null && StringUtils.equals("1", isIncrement); - } - - public void setIsRequired(String isRequired) - { - this.isRequired = isRequired; - } - - public String getIsRequired() - { - return isRequired; - } - - public boolean isRequired() - { - return isRequired(this.isRequired); - } - - public boolean isRequired(String isRequired) - { - return isRequired != null && StringUtils.equals("1", isRequired); - } - - public void setIsInsert(String isInsert) - { - this.isInsert = isInsert; - } - - public String getIsInsert() - { - return isInsert; - } - - public boolean isInsert() - { - return isInsert(this.isInsert); - } - - public boolean isInsert(String isInsert) - { - return isInsert != null && StringUtils.equals("1", isInsert); - } - - public void setIsEdit(String isEdit) - { - this.isEdit = isEdit; - } - - public String getIsEdit() - { - return isEdit; - } - - public boolean isEdit() - { - return isInsert(this.isEdit); - } - - public boolean isEdit(String isEdit) - { - return isEdit != null && StringUtils.equals("1", isEdit); - } - - public void setIsList(String isList) - { - this.isList = isList; - } - - public String getIsList() - { - return isList; - } - - public boolean isList() - { - return isList(this.isList); - } - - public boolean isList(String isList) - { - return isList != null && StringUtils.equals("1", isList); - } - - public void setIsQuery(String isQuery) - { - this.isQuery = isQuery; - } - - public String getIsQuery() - { - return isQuery; - } - - public boolean isQuery() - { - return isQuery(this.isQuery); - } - - public boolean isQuery(String isQuery) - { - return isQuery != null && StringUtils.equals("1", isQuery); - } - - public void setQueryType(String queryType) - { - this.queryType = queryType; - } - - public String getQueryType() - { - return queryType; - } - - public String getHtmlType() - { - return htmlType; - } - - public void setHtmlType(String htmlType) - { - this.htmlType = htmlType; - } - - public void setDictType(String dictType) - { - this.dictType = dictType; - } - - public String getDictType() - { - return dictType; - } - - public void setSort(Integer sort) - { - this.sort = sort; - } - - public Integer getSort() - { - return sort; - } - - public boolean isSuperColumn() - { - return isSuperColumn(this.javaField); - } - - public static boolean isSuperColumn(String javaField) - { - return StringUtils.equalsAnyIgnoreCase(javaField, - // BaseEntity - "createBy", "createTime", "updateBy", "updateTime", "remark", - // TreeEntity - "parentName", "parentId", "orderNum", "ancestors"); - } - - public boolean isUsableColumn() - { - return isUsableColumn(javaField); - } - - public static boolean isUsableColumn(String javaField) - { - // isSuperColumn()中的名单用于避免生成多余Domain属性,若某些属性在生成页面时需要用到不能忽略,则放在此处白名单 - return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); - } - - public String readConverterExp() - { - String remarks = StringUtils.substringBetween(this.columnComment, "(", ")"); - StringBuffer sb = new StringBuffer(); - if (StringUtils.isNotEmpty(remarks)) - { - for (String value : remarks.split(" ")) - { - if (StringUtils.isNotEmpty(value)) - { - Object startStr = value.subSequence(0, 1); - String endStr = value.substring(1); - sb.append("").append(startStr).append("=").append(endStr).append(","); - } - } - return sb.deleteCharAt(sb.length() - 1).toString(); - } - else - { - return this.columnComment; - } - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java deleted file mode 100644 index b3fb0db..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ruoyi.gen.mapper; - -import java.util.List; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 业务字段 数据层 - * - * @author jqs - */ -public interface GenTableColumnMapper -{ - /** - * 根据表名称查询列信息 - * - * @param tableName 表名称 - * @return 列信息 - */ - public List<GenTableColumn> selectDbTableColumnsByName(String tableName); - - /** - * 查询业务字段列表 - * - * @param tableId 业务字段编号 - * @return 业务字段集合 - */ - public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId); - - /** - * 新增业务字段 - * - * @param genTableColumn 业务字段信息 - * @return 结果 - */ - public int insertGenTableColumn(GenTableColumn genTableColumn); - - /** - * 修改业务字段 - * - * @param genTableColumn 业务字段信息 - * @return 结果 - */ - public int updateGenTableColumn(GenTableColumn genTableColumn); - - /** - * 删除业务字段 - * - * @param genTableColumns 列数据 - * @return 结果 - */ - public int deleteGenTableColumns(List<GenTableColumn> genTableColumns); - - /** - * 批量删除业务字段 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - public int deleteGenTableColumnByIds(Long[] ids); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java deleted file mode 100644 index 2f78d5f..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ruoyi.gen.mapper; - -import java.util.List; -import com.ruoyi.gen.domain.GenTable; - -/** - * 业务 数据层 - * - * @author jqs - */ -public interface GenTableMapper -{ - /** - * 查询业务列表 - * - * @param genTable 业务信息 - * @return 业务集合 - */ - public List<GenTable> selectGenTableList(GenTable genTable); - - /** - * 查询据库列表 - * - * @param genTable 业务信息 - * @return 数据库表集合 - */ - public List<GenTable> selectDbTableList(GenTable genTable); - - /** - * 查询据库列表 - * - * @param tableNames 表名称组 - * @return 数据库表集合 - */ - public List<GenTable> selectDbTableListByNames(String[] tableNames); - - /** - * 查询所有表信息 - * - * @return 表信息集合 - */ - public List<GenTable> selectGenTableAll(); - - /** - * 查询表ID业务信息 - * - * @param id 业务ID - * @return 业务信息 - */ - public GenTable selectGenTableById(Long id); - - /** - * 查询表名称业务信息 - * - * @param tableName 表名称 - * @return 业务信息 - */ - public GenTable selectGenTableByName(String tableName); - - /** - * 新增业务 - * - * @param genTable 业务信息 - * @return 结果 - */ - public int insertGenTable(GenTable genTable); - - /** - * 修改业务 - * - * @param genTable 业务信息 - * @return 结果 - */ - public int updateGenTable(GenTable genTable); - - /** - * 批量删除业务 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - public int deleteGenTableByIds(Long[] ids); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java deleted file mode 100644 index 4f0784b..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ruoyi.gen.service; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.common.core.text.Convert; -import com.ruoyi.gen.domain.GenTableColumn; -import com.ruoyi.gen.mapper.GenTableColumnMapper; - -/** - * 业务字段 服务层实现 - * - * @author jqs - */ -@Service -public class GenTableColumnServiceImpl implements IGenTableColumnService -{ - @Autowired - private GenTableColumnMapper genTableColumnMapper; - - /** - * 查询业务字段列表 - * - * @param tableId 业务字段编号 - * @return 业务字段集合 - */ - @Override - public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) - { - return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); - } - - /** - * 新增业务字段 - * - * @param genTableColumn 业务字段信息 - * @return 结果 - */ - @Override - public int insertGenTableColumn(GenTableColumn genTableColumn) - { - return genTableColumnMapper.insertGenTableColumn(genTableColumn); - } - - /** - * 修改业务字段 - * - * @param genTableColumn 业务字段信息 - * @return 结果 - */ - @Override - public int updateGenTableColumn(GenTableColumn genTableColumn) - { - return genTableColumnMapper.updateGenTableColumn(genTableColumn); - } - - /** - * 删除业务字段对象 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - @Override - public int deleteGenTableColumnByIds(String ids) - { - return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java deleted file mode 100644 index 2b46052..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java +++ /dev/null @@ -1,521 +0,0 @@ -package com.ruoyi.gen.service; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.constant.GenConstants; -import com.ruoyi.common.core.exception.ServiceException; -import com.ruoyi.common.core.text.CharsetKit; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; -import com.ruoyi.gen.mapper.GenTableColumnMapper; -import com.ruoyi.gen.mapper.GenTableMapper; -import com.ruoyi.gen.util.GenUtils; -import com.ruoyi.gen.util.VelocityInitializer; -import com.ruoyi.gen.util.VelocityUtils; - -/** - * 业务 服务层实现 - * - * @author jqs - */ -@Service -public class GenTableServiceImpl implements IGenTableService -{ - private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); - - @Autowired - private GenTableMapper genTableMapper; - - @Autowired - private GenTableColumnMapper genTableColumnMapper; - - /** - * 查询业务信息 - * - * @param id 业务ID - * @return 业务信息 - */ - @Override - public GenTable selectGenTableById(Long id) - { - GenTable genTable = genTableMapper.selectGenTableById(id); - setTableFromOptions(genTable); - return genTable; - } - - /** - * 查询业务列表 - * - * @param genTable 业务信息 - * @return 业务集合 - */ - @Override - public List<GenTable> selectGenTableList(GenTable genTable) - { - return genTableMapper.selectGenTableList(genTable); - } - - /** - * 查询据库列表 - * - * @param genTable 业务信息 - * @return 数据库表集合 - */ - @Override - public List<GenTable> selectDbTableList(GenTable genTable) - { - return genTableMapper.selectDbTableList(genTable); - } - - /** - * 查询据库列表 - * - * @param tableNames 表名称组 - * @return 数据库表集合 - */ - @Override - public List<GenTable> selectDbTableListByNames(String[] tableNames) - { - return genTableMapper.selectDbTableListByNames(tableNames); - } - - /** - * 查询所有表信息 - * - * @return 表信息集合 - */ - @Override - public List<GenTable> selectGenTableAll() - { - return genTableMapper.selectGenTableAll(); - } - - /** - * 修改业务 - * - * @param genTable 业务信息 - * @return 结果 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void updateGenTable(GenTable genTable) - { - String options = JSON.toJSONString(genTable.getParams()); - genTable.setOptions(options); - int row = genTableMapper.updateGenTable(genTable); - if (row > 0) - { - for (GenTableColumn cenTableColumn : genTable.getColumns()) - { - genTableColumnMapper.updateGenTableColumn(cenTableColumn); - } - } - } - - /** - * 删除业务对象 - * - * @param tableIds 需要删除的数据ID - * @return 结果 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteGenTableByIds(Long[] tableIds) - { - genTableMapper.deleteGenTableByIds(tableIds); - genTableColumnMapper.deleteGenTableColumnByIds(tableIds); - } - - /** - * 导入表结构 - * - * @param tableList 导入表列表 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void importGenTable(List<GenTable> tableList) - { - String operName = SecurityUtils.getUsername(); - try - { - for (GenTable table : tableList) - { - String tableName = table.getTableName(); - GenUtils.initTable(table, operName); - int row = genTableMapper.insertGenTable(table); - if (row > 0) - { - // 保存列信息 - List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); - for (GenTableColumn column : genTableColumns) - { - GenUtils.initColumnField(column, table); - genTableColumnMapper.insertGenTableColumn(column); - } - } - } - } - catch (Exception e) - { - throw new ServiceException("导入失败:" + e.getMessage()); - } - } - - /** - * 预览代码 - * - * @param tableId 表编号 - * @return 预览数据列表 - */ - @Override - public Map<String, String> previewCode(Long tableId) - { - Map<String, String> dataMap = new LinkedHashMap<>(); - // 查询表信息 - GenTable table = genTableMapper.selectGenTableById(tableId); - // 设置主子表信息 - setSubTable(table); - // 设置主键列信息 - setPkColumn(table); - VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); - - // 获取模板列表 - List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); - for (String template : templates) - { - // 渲染模板 - StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, Constants.UTF8); - tpl.merge(context, sw); - dataMap.put(template, sw.toString()); - } - return dataMap; - } - - /** - * 生成代码(下载方式) - * - * @param tableName 表名称 - * @return 数据 - */ - @Override - public byte[] downloadCode(String tableName) - { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - ZipOutputStream zip = new ZipOutputStream(outputStream); - generatorCode(tableName, zip); - IOUtils.closeQuietly(zip); - return outputStream.toByteArray(); - } - - /** - * 生成代码(自定义路径) - * - * @param tableName 表名称 - */ - @Override - public void generatorCode(String tableName) - { - // 查询表信息 - GenTable table = genTableMapper.selectGenTableByName(tableName); - // 设置主子表信息 - setSubTable(table); - // 设置主键列信息 - setPkColumn(table); - - VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); - - // 获取模板列表 - List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); - for (String template : templates) - { - if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) - { - // 渲染模板 - StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, Constants.UTF8); - tpl.merge(context, sw); - try - { - String path = getGenPath(table, template); - FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); - } - catch (IOException e) - { - throw new ServiceException("渲染模板失败,表名:" + table.getTableName()); - } - } - } - } - - /** - * 同步数据库 - * - * @param tableName 表名称 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void synchDb(String tableName) - { - GenTable table = genTableMapper.selectGenTableByName(tableName); - List<GenTableColumn> tableColumns = table.getColumns(); - Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); - - List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); - if (StringUtils.isEmpty(dbTableColumns)) - { - throw new ServiceException("同步数据失败,原表结构不存在"); - } - List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); - - dbTableColumns.forEach(column -> { - GenUtils.initColumnField(column, table); - if (tableColumnMap.containsKey(column.getColumnName())) - { - GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); - column.setColumnId(prevColumn.getColumnId()); - if (column.isList()) - { - // 如果是列表,继续保留查询方式/字典类型选项 - column.setDictType(prevColumn.getDictType()); - column.setQueryType(prevColumn.getQueryType()); - } - if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() - && (column.isInsert() || column.isEdit()) - && ((column.isUsableColumn()) || (!column.isSuperColumn()))) - { - // 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项 - column.setIsRequired(prevColumn.getIsRequired()); - column.setHtmlType(prevColumn.getHtmlType()); - } - genTableColumnMapper.updateGenTableColumn(column); - } - else - { - genTableColumnMapper.insertGenTableColumn(column); - } - }); - - List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); - if (StringUtils.isNotEmpty(delColumns)) - { - genTableColumnMapper.deleteGenTableColumns(delColumns); - } - } - - /** - * 批量生成代码(下载方式) - * - * @param tableNames 表数组 - * @return 数据 - */ - @Override - public byte[] downloadCode(String[] tableNames) - { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - ZipOutputStream zip = new ZipOutputStream(outputStream); - for (String tableName : tableNames) - { - generatorCode(tableName, zip); - } - IOUtils.closeQuietly(zip); - return outputStream.toByteArray(); - } - - /** - * 查询表信息并生成代码 - */ - private void generatorCode(String tableName, ZipOutputStream zip) - { - // 查询表信息 - GenTable table = genTableMapper.selectGenTableByName(tableName); - // 设置主子表信息 - setSubTable(table); - // 设置主键列信息 - setPkColumn(table); - - VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); - - // 获取模板列表 - List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); - for (String template : templates) - { - // 渲染模板 - StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, Constants.UTF8); - tpl.merge(context, sw); - try - { - // 添加到zip - zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); - IOUtils.write(sw.toString(), zip, Constants.UTF8); - IOUtils.closeQuietly(sw); - zip.flush(); - zip.closeEntry(); - } - catch (IOException e) - { - log.error("渲染模板失败,表名:" + table.getTableName(), e); - } - } - } - - /** - * 修改保存参数校验 - * - * @param genTable 业务信息 - */ - @Override - public void validateEdit(GenTable genTable) - { - if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) - { - String options = JSON.toJSONString(genTable.getParams()); - JSONObject paramsObj = JSON.parseObject(options); - if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) - { - throw new ServiceException("树编码字段不能为空"); - } - else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) - { - throw new ServiceException("树父编码字段不能为空"); - } - else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) - { - throw new ServiceException("树名称字段不能为空"); - } - else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) - { - if (StringUtils.isEmpty(genTable.getSubTableName())) - { - throw new ServiceException("关联子表的表名不能为空"); - } - else if (StringUtils.isEmpty(genTable.getSubTableFkName())) - { - throw new ServiceException("子表关联的外键名不能为空"); - } - } - } - } - - /** - * 设置主键列信息 - * - * @param table 业务表信息 - */ - public void setPkColumn(GenTable table) - { - for (GenTableColumn column : table.getColumns()) - { - if (column.isPk()) - { - table.setPkColumn(column); - break; - } - } - if (StringUtils.isNull(table.getPkColumn())) - { - table.setPkColumn(table.getColumns().get(0)); - } - if (GenConstants.TPL_SUB.equals(table.getTplCategory())) - { - for (GenTableColumn column : table.getSubTable().getColumns()) - { - if (column.isPk()) - { - table.getSubTable().setPkColumn(column); - break; - } - } - if (StringUtils.isNull(table.getSubTable().getPkColumn())) - { - table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); - } - } - } - - /** - * 设置主子表信息 - * - * @param table 业务表信息 - */ - public void setSubTable(GenTable table) - { - String subTableName = table.getSubTableName(); - if (StringUtils.isNotEmpty(subTableName)) - { - table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); - } - } - - /** - * 设置代码生成其他选项值 - * - * @param genTable 设置后的生成对象 - */ - public void setTableFromOptions(GenTable genTable) - { - JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); - if (StringUtils.isNotNull(paramsObj)) - { - String treeCode = paramsObj.getString(GenConstants.TREE_CODE); - String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); - String treeName = paramsObj.getString(GenConstants.TREE_NAME); - String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); - String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); - - genTable.setTreeCode(treeCode); - genTable.setTreeParentCode(treeParentCode); - genTable.setTreeName(treeName); - genTable.setParentMenuId(parentMenuId); - genTable.setParentMenuName(parentMenuName); - } - } - - /** - * 获取代码生成地址 - * - * @param table 业务表信息 - * @param template 模板文件路径 - * @return 生成地址 - */ - public static String getGenPath(GenTable table, String template) - { - String genPath = table.getGenPath(); - if (StringUtils.equals(genPath, "/")) - { - return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); - } - return genPath + File.separator + VelocityUtils.getFileName(template, table); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java deleted file mode 100644 index 9eb2850..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ruoyi.gen.service; - -import java.util.List; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 业务字段 服务层 - * - * @author jqs - */ -public interface IGenTableColumnService -{ - /** - * 查询业务字段列表 - * - * @param tableId 业务字段编号 - * @return 业务字段集合 - */ - public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId); - - /** - * 新增业务字段 - * - * @param genTableColumn 业务字段信息 - * @return 结果 - */ - public int insertGenTableColumn(GenTableColumn genTableColumn); - - /** - * 修改业务字段 - * - * @param genTableColumn 业务字段信息 - * @return 结果 - */ - public int updateGenTableColumn(GenTableColumn genTableColumn); - - /** - * 删除业务字段信息 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - public int deleteGenTableColumnByIds(String ids); -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java deleted file mode 100644 index 6c9f931..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.ruoyi.gen.service; - -import java.util.List; -import java.util.Map; -import com.ruoyi.gen.domain.GenTable; - -/** - * 业务 服务层 - * - * @author jqs - */ -public interface IGenTableService -{ - /** - * 查询业务列表 - * - * @param genTable 业务信息 - * @return 业务集合 - */ - public List<GenTable> selectGenTableList(GenTable genTable); - - /** - * 查询据库列表 - * - * @param genTable 业务信息 - * @return 数据库表集合 - */ - public List<GenTable> selectDbTableList(GenTable genTable); - - /** - * 查询据库列表 - * - * @param tableNames 表名称组 - * @return 数据库表集合 - */ - public List<GenTable> selectDbTableListByNames(String[] tableNames); - - /** - * 查询所有表信息 - * - * @return 表信息集合 - */ - public List<GenTable> selectGenTableAll(); - - /** - * 查询业务信息 - * - * @param id 业务ID - * @return 业务信息 - */ - public GenTable selectGenTableById(Long id); - - /** - * 修改业务 - * - * @param genTable 业务信息 - * @return 结果 - */ - public void updateGenTable(GenTable genTable); - - /** - * 删除业务信息 - * - * @param tableIds 需要删除的表数据ID - * @return 结果 - */ - public void deleteGenTableByIds(Long[] tableIds); - - /** - * 导入表结构 - * - * @param tableList 导入表列表 - */ - public void importGenTable(List<GenTable> tableList); - - /** - * 预览代码 - * - * @param tableId 表编号 - * @return 预览数据列表 - */ - public Map<String, String> previewCode(Long tableId); - - /** - * 生成代码(下载方式) - * - * @param tableName 表名称 - * @return 数据 - */ - public byte[] downloadCode(String tableName); - - /** - * 生成代码(自定义路径) - * - * @param tableName 表名称 - * @return 数据 - */ - public void generatorCode(String tableName); - - /** - * 同步数据库 - * - * @param tableName 表名称 - */ - public void synchDb(String tableName); - - /** - * 批量生成代码(下载方式) - * - * @param tableNames 表数组 - * @return 数据 - */ - public byte[] downloadCode(String[] tableNames); - - /** - * 修改保存参数校验 - * - * @param genTable 业务信息 - */ - public void validateEdit(GenTable genTable); -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java deleted file mode 100644 index 95ca4fb..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.ruoyi.gen.util; - -import java.util.Arrays; -import org.apache.commons.lang3.RegExUtils; -import com.ruoyi.common.core.constant.GenConstants; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.gen.config.GenConfig; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 代码生成器 工具类 - * - * @author jqs - */ -public class GenUtils -{ - /** - * 初始化表信息 - */ - public static void initTable(GenTable genTable, String operName) - { - genTable.setClassName(convertClassName(genTable.getTableName())); - genTable.setPackageName(GenConfig.getPackageName()); - genTable.setModuleName(getModuleName(GenConfig.getPackageName())); - genTable.setBusinessName(getBusinessName(genTable.getTableName())); - genTable.setFunctionName(replaceText(genTable.getTableComment())); - genTable.setFunctionAuthor(GenConfig.getAuthor()); - genTable.setCreateBy(operName); - } - - /** - * 初始化列属性字段 - */ - public static void initColumnField(GenTableColumn column, GenTable table) - { - String dataType = getDbType(column.getColumnType()); - String columnName = column.getColumnName(); - column.setTableId(table.getTableId()); - column.setCreateBy(table.getCreateBy()); - // 设置java字段名 - column.setJavaField(StringUtils.toCamelCase(columnName)); - // 设置默认类型 - column.setJavaType(GenConstants.TYPE_STRING); - column.setQueryType(GenConstants.QUERY_EQ); - - if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) - { - // 字符串长度超过500设置为文本域 - Integer columnLength = getColumnLength(column.getColumnType()); - String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; - column.setHtmlType(htmlType); - } - else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) - { - column.setJavaType(GenConstants.TYPE_DATE); - column.setHtmlType(GenConstants.HTML_DATETIME); - } - else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) - { - column.setHtmlType(GenConstants.HTML_INPUT); - - // 如果是浮点型 统一用BigDecimal - String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); - if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) - { - column.setJavaType(GenConstants.TYPE_BIGDECIMAL); - } - // 如果是整形 - else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) - { - column.setJavaType(GenConstants.TYPE_INTEGER); - } - // 长整形 - else - { - column.setJavaType(GenConstants.TYPE_LONG); - } - } - - // 插入字段(默认所有字段都需要插入) - column.setIsInsert(GenConstants.REQUIRE); - - // 编辑字段 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) - { - column.setIsEdit(GenConstants.REQUIRE); - } - // 列表字段 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) - { - column.setIsList(GenConstants.REQUIRE); - } - // 查询字段 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) - { - column.setIsQuery(GenConstants.REQUIRE); - } - - // 查询字段类型 - if (StringUtils.endsWithIgnoreCase(columnName, "name")) - { - column.setQueryType(GenConstants.QUERY_LIKE); - } - // 状态字段设置单选框 - if (StringUtils.endsWithIgnoreCase(columnName, "status")) - { - column.setHtmlType(GenConstants.HTML_RADIO); - } - // 类型&性别字段设置下拉框 - else if (StringUtils.endsWithIgnoreCase(columnName, "type") - || StringUtils.endsWithIgnoreCase(columnName, "sex")) - { - column.setHtmlType(GenConstants.HTML_SELECT); - } - // 图片字段设置图片上传控件 - else if (StringUtils.endsWithIgnoreCase(columnName, "image")) - { - column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); - } - // 文件字段设置文件上传控件 - else if (StringUtils.endsWithIgnoreCase(columnName, "file")) - { - column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); - } - // 内容字段设置富文本控件 - else if (StringUtils.endsWithIgnoreCase(columnName, "content")) - { - column.setHtmlType(GenConstants.HTML_EDITOR); - } - } - - /** - * 校验数组是否包含指定值 - * - * @param arr 数组 - * @param targetValue 值 - * @return 是否包含 - */ - public static boolean arraysContains(String[] arr, String targetValue) - { - return Arrays.asList(arr).contains(targetValue); - } - - /** - * 获取模块名 - * - * @param packageName 包名 - * @return 模块名 - */ - public static String getModuleName(String packageName) - { - int lastIndex = packageName.lastIndexOf("."); - int nameLength = packageName.length(); - return StringUtils.substring(packageName, lastIndex + 1, nameLength); - } - - /** - * 获取业务名 - * - * @param tableName 表名 - * @return 业务名 - */ - public static String getBusinessName(String tableName) - { - int lastIndex = tableName.lastIndexOf("_"); - int nameLength = tableName.length(); - return StringUtils.substring(tableName, lastIndex + 1, nameLength); - } - - /** - * 表名转换成Java类名 - * - * @param tableName 表名称 - * @return 类名 - */ - public static String convertClassName(String tableName) - { - boolean autoRemovePre = GenConfig.getAutoRemovePre(); - String tablePrefix = GenConfig.getTablePrefix(); - if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) - { - String[] searchList = StringUtils.split(tablePrefix, ","); - tableName = replaceFirst(tableName, searchList); - } - return StringUtils.convertToCamelCase(tableName); - } - - /** - * 批量替换前缀 - * - * @param replacementm 替换值 - * @param searchList 替换列表 - * @return - */ - public static String replaceFirst(String replacementm, String[] searchList) - { - String text = replacementm; - for (String searchString : searchList) - { - if (replacementm.startsWith(searchString)) - { - text = replacementm.replaceFirst(searchString, ""); - break; - } - } - return text; - } - - /** - * 关键字替换 - * - * @param text 需要被替换的名字 - * @return 替换后的名字 - */ - public static String replaceText(String text) - { - return RegExUtils.replaceAll(text, "(?:表|若依)", ""); - } - - /** - * 获取数据库类型字段 - * - * @param columnType 列类型 - * @return 截取后的列类型 - */ - public static String getDbType(String columnType) - { - if (StringUtils.indexOf(columnType, "(") > 0) - { - return StringUtils.substringBefore(columnType, "("); - } - else - { - return columnType; - } - } - - /** - * 获取字段长度 - * - * @param columnType 列类型 - * @return 截取后的列类型 - */ - public static Integer getColumnLength(String columnType) - { - if (StringUtils.indexOf(columnType, "(") > 0) - { - String length = StringUtils.substringBetween(columnType, "(", ")"); - return Integer.valueOf(length); - } - else - { - return 0; - } - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java deleted file mode 100644 index a47cb48..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.gen.util; - -import java.util.Properties; -import org.apache.velocity.app.Velocity; -import com.ruoyi.common.core.constant.Constants; - -/** - * VelocityEngine工厂 - * - * @author jqs - */ -public class VelocityInitializer -{ - /** - * 初始化vm方法 - */ - public static void initVelocity() - { - Properties p = new Properties(); - try - { - // 加载classpath目录下的vm文件 - p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); - // 定义字符集 - p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); - // 初始化Velocity引擎,指定配置Properties - Velocity.init(p); - } - catch (Exception e) - { - throw new RuntimeException(e); - } - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java deleted file mode 100644 index 3350011..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java +++ /dev/null @@ -1,402 +0,0 @@ -package com.ruoyi.gen.util; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.apache.velocity.VelocityContext; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.ruoyi.common.core.constant.GenConstants; -import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 模板工具类 - * - * @author jqs - */ -public class VelocityUtils -{ - /** 项目空间路径 */ - private static final String PROJECT_PATH = "main/java"; - - /** mybatis空间路径 */ - private static final String MYBATIS_PATH = "main/resources/mapper"; - - /** 默认上级菜单,系统工具 */ - private static final String DEFAULT_PARENT_MENU_ID = "3"; - - /** - * 设置模板变量信息 - * - * @return 模板列表 - */ - public static VelocityContext prepareContext(GenTable genTable) - { - String moduleName = genTable.getModuleName(); - String businessName = genTable.getBusinessName(); - String packageName = genTable.getPackageName(); - String tplCategory = genTable.getTplCategory(); - String functionName = genTable.getFunctionName(); - - VelocityContext velocityContext = new VelocityContext(); - velocityContext.put("tplCategory", genTable.getTplCategory()); - velocityContext.put("tableName", genTable.getTableName()); - velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); - velocityContext.put("ClassName", genTable.getClassName()); - velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); - velocityContext.put("moduleName", genTable.getModuleName()); - velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); - velocityContext.put("businessName", genTable.getBusinessName()); - velocityContext.put("basePackage", getPackagePrefix(packageName)); - velocityContext.put("packageName", packageName); - velocityContext.put("author", genTable.getFunctionAuthor()); - velocityContext.put("datetime", DateUtils.getDate()); - velocityContext.put("pkColumn", genTable.getPkColumn()); - velocityContext.put("importList", getImportList(genTable)); - velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); - velocityContext.put("columns", genTable.getColumns()); - velocityContext.put("table", genTable); - velocityContext.put("dicts", getDicts(genTable)); - setMenuVelocityContext(velocityContext, genTable); - if (GenConstants.TPL_TREE.equals(tplCategory)) - { - setTreeVelocityContext(velocityContext, genTable); - } - if (GenConstants.TPL_SUB.equals(tplCategory)) - { - setSubVelocityContext(velocityContext, genTable); - } - return velocityContext; - } - - public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) - { - String options = genTable.getOptions(); - JSONObject paramsObj = JSON.parseObject(options); - String parentMenuId = getParentMenuId(paramsObj); - context.put("parentMenuId", parentMenuId); - } - - public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) - { - String options = genTable.getOptions(); - JSONObject paramsObj = JSON.parseObject(options); - String treeCode = getTreecode(paramsObj); - String treeParentCode = getTreeParentCode(paramsObj); - String treeName = getTreeName(paramsObj); - - context.put("treeCode", treeCode); - context.put("treeParentCode", treeParentCode); - context.put("treeName", treeName); - context.put("expandColumn", getExpandColumn(genTable)); - if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) - { - context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); - } - if (paramsObj.containsKey(GenConstants.TREE_NAME)) - { - context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); - } - } - - public static void setSubVelocityContext(VelocityContext context, GenTable genTable) - { - GenTable subTable = genTable.getSubTable(); - String subTableName = genTable.getSubTableName(); - String subTableFkName = genTable.getSubTableFkName(); - String subClassName = genTable.getSubTable().getClassName(); - String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); - - context.put("subTable", subTable); - context.put("subTableName", subTableName); - context.put("subTableFkName", subTableFkName); - context.put("subTableFkClassName", subTableFkClassName); - context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); - context.put("subClassName", subClassName); - context.put("subclassName", StringUtils.uncapitalize(subClassName)); - context.put("subImportList", getImportList(genTable.getSubTable())); - } - - /** - * 获取模板信息 - * - * @return 模板列表 - */ - public static List<String> getTemplateList(String tplCategory) - { - List<String> templates = new ArrayList<String>(); - templates.add("vm/java/domain.java.vm"); - templates.add("vm/java/mapper.java.vm"); - templates.add("vm/java/service.java.vm"); - templates.add("vm/java/serviceImpl.java.vm"); - templates.add("vm/java/controller.java.vm"); - templates.add("vm/xml/mapper.xml.vm"); - templates.add("vm/sql/sql.vm"); - templates.add("vm/js/api.js.vm"); - if (GenConstants.TPL_CRUD.equals(tplCategory)) - { - templates.add("vm/vue/index.vue.vm"); - } - else if (GenConstants.TPL_TREE.equals(tplCategory)) - { - templates.add("vm/vue/index-tree.vue.vm"); - } - else if (GenConstants.TPL_SUB.equals(tplCategory)) - { - templates.add("vm/vue/index.vue.vm"); - templates.add("vm/java/sub-domain.java.vm"); - } - return templates; - } - - /** - * 获取文件名 - */ - public static String getFileName(String template, GenTable genTable) - { - // 文件名称 - String fileName = ""; - // 包路径 - String packageName = genTable.getPackageName(); - // 模块名 - String moduleName = genTable.getModuleName(); - // 大写类名 - String className = genTable.getClassName(); - // 业务名称 - String businessName = genTable.getBusinessName(); - - String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); - String mybatisPath = MYBATIS_PATH + "/" + moduleName; - String vuePath = "vue"; - - if (template.contains("domain.java.vm")) - { - fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); - } - if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) - { - fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); - } - else if (template.contains("mapper.java.vm")) - { - fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); - } - else if (template.contains("service.java.vm")) - { - fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); - } - else if (template.contains("serviceImpl.java.vm")) - { - fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); - } - else if (template.contains("controller.java.vm")) - { - fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); - } - else if (template.contains("mapper.xml.vm")) - { - fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); - } - else if (template.contains("sql.vm")) - { - fileName = businessName + "Menu.sql"; - } - else if (template.contains("api.js.vm")) - { - fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); - } - else if (template.contains("index.vue.vm")) - { - fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); - } - else if (template.contains("index-tree.vue.vm")) - { - fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); - } - return fileName; - } - - /** - * 获取包前缀 - * - * @param packageName 包名称 - * @return 包前缀名称 - */ - public static String getPackagePrefix(String packageName) - { - int lastIndex = packageName.lastIndexOf("."); - return StringUtils.substring(packageName, 0, lastIndex); - } - - /** - * 根据列类型获取导入包 - * - * @param genTable 业务表对象 - * @return 返回需要导入的包列表 - */ - public static HashSet<String> getImportList(GenTable genTable) - { - List<GenTableColumn> columns = genTable.getColumns(); - GenTable subGenTable = genTable.getSubTable(); - HashSet<String> importList = new HashSet<String>(); - if (StringUtils.isNotNull(subGenTable)) - { - importList.add("java.util.List"); - } - for (GenTableColumn column : columns) - { - if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) - { - importList.add("java.util.Date"); - importList.add("com.fasterxml.jackson.annotation.JsonFormat"); - } - else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) - { - importList.add("java.math.BigDecimal"); - } - } - return importList; - } - - /** - * 根据列类型获取字典组 - * - * @param genTable 业务表对象 - * @return 返回字典组 - */ - public static String getDicts(GenTable genTable) - { - List<GenTableColumn> columns = genTable.getColumns(); - Set<String> dicts = new HashSet<String>(); - addDicts(dicts, columns); - if (StringUtils.isNotNull(genTable.getSubTable())) - { - List<GenTableColumn> subColumns = genTable.getSubTable().getColumns(); - addDicts(dicts, subColumns); - } - return StringUtils.join(dicts, ", "); - } - - /** - * 添加字典列表 - * - * @param dicts 字典列表 - * @param columns 列集合 - */ - public static void addDicts(Set<String> dicts, List<GenTableColumn> columns) - { - for (GenTableColumn column : columns) - { - if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( - column.getHtmlType(), - new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX })) - { - dicts.add("'" + column.getDictType() + "'"); - } - } - } - - /** - * 获取权限前缀 - * - * @param moduleName 模块名称 - * @param businessName 业务名称 - * @return 返回权限前缀 - */ - public static String getPermissionPrefix(String moduleName, String businessName) - { - return StringUtils.format("{}:{}", moduleName, businessName); - } - - /** - * 获取上级菜单ID字段 - * - * @param paramsObj 生成其他选项 - * @return 上级菜单ID字段 - */ - public static String getParentMenuId(JSONObject paramsObj) - { - if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) - && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) - { - return paramsObj.getString(GenConstants.PARENT_MENU_ID); - } - return DEFAULT_PARENT_MENU_ID; - } - - /** - * 获取树编码 - * - * @param paramsObj 生成其他选项 - * @return 树编码 - */ - public static String getTreecode(JSONObject paramsObj) - { - if (paramsObj.containsKey(GenConstants.TREE_CODE)) - { - return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); - } - return StringUtils.EMPTY; - } - - /** - * 获取树父编码 - * - * @param paramsObj 生成其他选项 - * @return 树父编码 - */ - public static String getTreeParentCode(JSONObject paramsObj) - { - if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) - { - return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); - } - return StringUtils.EMPTY; - } - - /** - * 获取树名称 - * - * @param paramsObj 生成其他选项 - * @return 树名称 - */ - public static String getTreeName(JSONObject paramsObj) - { - if (paramsObj.containsKey(GenConstants.TREE_NAME)) - { - return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); - } - return StringUtils.EMPTY; - } - - /** - * 获取需要在哪一列上面显示展开按钮 - * - * @param genTable 业务表对象 - * @return 展开按钮列序号 - */ - public static int getExpandColumn(GenTable genTable) - { - String options = genTable.getOptions(); - JSONObject paramsObj = JSON.parseObject(options); - String treeName = paramsObj.getString(GenConstants.TREE_NAME); - int num = 0; - for (GenTableColumn column : genTable.getColumns()) - { - if (column.isList()) - { - num++; - String columnName = column.getColumnName(); - if (columnName.equals(treeName)) - { - break; - } - } - } - return num; - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml deleted file mode 100644 index 3905ad3..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,35 +0,0 @@ -# Tomcat -server: - port: 8032 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-gen - profiles: - # 环境配置 - active: dev - cloud: - nacos: - discovery: - # 服务注册地址 - server-addr: 47.109.78.184:5000 - #server-addr: 127.0.0.1:8848 - #pro - namespace: 9591ef9f-a49a-4900-be35-d77258bdd639 - #dev - #namespace: d39a744d-116f-4280-8445-0502dd1a3116 - config: - # 配置中心地址 - server-addr: 47.109.78.184:5000 - #server-addr: 127.0.0.1:8848 - #pro - namespace: 9591ef9f-a49a-4900-be35-d77258bdd639 - #dev - #namespace: d39a744d-116f-4280-8445-0502dd1a3116 - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml deleted file mode 100644 index c301bb4..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration scan="true" scanPeriod="60 seconds" debug="false"> - <!-- 日志存放路径 --> - <property name="log.path" value="logs/ruoyi-gen" /> - <!-- 日志输出格式 --> - <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> - - <!-- 控制台输出 --> - <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - </appender> - - <!-- 系统日志输出 --> - <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${log.path}/info.log</file> - <!-- 循环政策:基于时间创建日志文件 --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志文件名格式 --> - <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> - <!-- 日志最大的历史 60天 --> - <maxHistory>60</maxHistory> - </rollingPolicy> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <!-- 过滤的级别 --> - <level>INFO</level> - <!-- 匹配时的操作:接收(记录) --> - <onMatch>ACCEPT</onMatch> - <!-- 不匹配时的操作:拒绝(不记录) --> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${log.path}/error.log</file> - <!-- 循环政策:基于时间创建日志文件 --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志文件名格式 --> - <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> - <!-- 日志最大的历史 60天 --> - <maxHistory>60</maxHistory> - </rollingPolicy> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <!-- 过滤的级别 --> - <level>ERROR</level> - <!-- 匹配时的操作:接收(记录) --> - <onMatch>ACCEPT</onMatch> - <!-- 不匹配时的操作:拒绝(不记录) --> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 系统模块日志级别控制 --> - <logger name="com.ruoyi" level="info" /> - <!-- Spring日志级别控制 --> - <logger name="org.springframework" level="warn" /> - - <root level="info"> - <appender-ref ref="console" /> - </root> - - <!--系统操作日志--> - <root level="info"> - <appender-ref ref="file_info" /> - <appender-ref ref="file_error" /> - </root> -</configuration> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml deleted file mode 100644 index 9723938..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml +++ /dev/null @@ -1,127 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.gen.mapper.GenTableColumnMapper"> - - <resultMap type="GenTableColumn" id="GenTableColumnResult"> - <id property="columnId" column="column_id" /> - <result property="tableId" column="table_id" /> - <result property="columnName" column="column_name" /> - <result property="columnComment" column="column_comment" /> - <result property="columnType" column="column_type" /> - <result property="javaType" column="java_type" /> - <result property="javaField" column="java_field" /> - <result property="isPk" column="is_pk" /> - <result property="isIncrement" column="is_increment" /> - <result property="isRequired" column="is_required" /> - <result property="isInsert" column="is_insert" /> - <result property="isEdit" column="is_edit" /> - <result property="isList" column="is_list" /> - <result property="isQuery" column="is_query" /> - <result property="queryType" column="query_type" /> - <result property="htmlType" column="html_type" /> - <result property="dictType" column="dict_type" /> - <result property="sort" column="sort" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - </resultMap> - - <sql id="selectGenTableColumnVo"> - select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column - </sql> - - <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult"> - <include refid="selectGenTableColumnVo"/> - where table_id = #{tableId} - order by sort - </select> - - <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult"> - select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type - from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName}) - order by ordinal_position - </select> - - <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId"> - insert into gen_table_column ( - <if test="tableId != null and tableId != ''">table_id,</if> - <if test="columnName != null and columnName != ''">column_name,</if> - <if test="columnComment != null and columnComment != ''">column_comment,</if> - <if test="columnType != null and columnType != ''">column_type,</if> - <if test="javaType != null and javaType != ''">java_type,</if> - <if test="javaField != null and javaField != ''">java_field,</if> - <if test="isPk != null and isPk != ''">is_pk,</if> - <if test="isIncrement != null and isIncrement != ''">is_increment,</if> - <if test="isRequired != null and isRequired != ''">is_required,</if> - <if test="isInsert != null and isInsert != ''">is_insert,</if> - <if test="isEdit != null and isEdit != ''">is_edit,</if> - <if test="isList != null and isList != ''">is_list,</if> - <if test="isQuery != null and isQuery != ''">is_query,</if> - <if test="queryType != null and queryType != ''">query_type,</if> - <if test="htmlType != null and htmlType != ''">html_type,</if> - <if test="dictType != null and dictType != ''">dict_type,</if> - <if test="sort != null">sort,</if> - <if test="createBy != null and createBy != ''">create_by,</if> - create_time - )values( - <if test="tableId != null and tableId != ''">#{tableId},</if> - <if test="columnName != null and columnName != ''">#{columnName},</if> - <if test="columnComment != null and columnComment != ''">#{columnComment},</if> - <if test="columnType != null and columnType != ''">#{columnType},</if> - <if test="javaType != null and javaType != ''">#{javaType},</if> - <if test="javaField != null and javaField != ''">#{javaField},</if> - <if test="isPk != null and isPk != ''">#{isPk},</if> - <if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if> - <if test="isRequired != null and isRequired != ''">#{isRequired},</if> - <if test="isInsert != null and isInsert != ''">#{isInsert},</if> - <if test="isEdit != null and isEdit != ''">#{isEdit},</if> - <if test="isList != null and isList != ''">#{isList},</if> - <if test="isQuery != null and isQuery != ''">#{isQuery},</if> - <if test="queryType != null and queryType != ''">#{queryType},</if> - <if test="htmlType != null and htmlType != ''">#{htmlType},</if> - <if test="dictType != null and dictType != ''">#{dictType},</if> - <if test="sort != null">#{sort},</if> - <if test="createBy != null and createBy != ''">#{createBy},</if> - sysdate() - ) - </insert> - - <update id="updateGenTableColumn" parameterType="GenTableColumn"> - update gen_table_column - <set> - <if test="columnComment != null">column_comment = #{columnComment},</if> - <if test="javaType != null">java_type = #{javaType},</if> - <if test="javaField != null">java_field = #{javaField},</if> - <if test="isInsert != null">is_insert = #{isInsert},</if> - <if test="isEdit != null">is_edit = #{isEdit},</if> - <if test="isList != null">is_list = #{isList},</if> - <if test="isQuery != null">is_query = #{isQuery},</if> - <if test="isRequired != null">is_required = #{isRequired},</if> - <if test="queryType != null">query_type = #{queryType},</if> - <if test="htmlType != null">html_type = #{htmlType},</if> - <if test="dictType != null">dict_type = #{dictType},</if> - <if test="sort != null">sort = #{sort},</if> - <if test="updateBy != null">update_by = #{updateBy},</if> - update_time = sysdate() - </set> - where column_id = #{columnId} - </update> - - <delete id="deleteGenTableColumnByIds" parameterType="Long"> - delete from gen_table_column where table_id in - <foreach collection="array" item="tableId" open="(" separator="," close=")"> - #{tableId} - </foreach> - </delete> - - <delete id="deleteGenTableColumns"> - delete from gen_table_column where column_id in - <foreach collection="list" item="item" open="(" separator="," close=")"> - #{item.columnId} - </foreach> - </delete> - -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml deleted file mode 100644 index 2907df8..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml +++ /dev/null @@ -1,202 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.gen.mapper.GenTableMapper"> - - <resultMap type="GenTable" id="GenTableResult"> - <id property="tableId" column="table_id" /> - <result property="tableName" column="table_name" /> - <result property="tableComment" column="table_comment" /> - <result property="subTableName" column="sub_table_name" /> - <result property="subTableFkName" column="sub_table_fk_name" /> - <result property="className" column="class_name" /> - <result property="tplCategory" column="tpl_category" /> - <result property="packageName" column="package_name" /> - <result property="moduleName" column="module_name" /> - <result property="businessName" column="business_name" /> - <result property="functionName" column="function_name" /> - <result property="functionAuthor" column="function_author" /> - <result property="genType" column="gen_type" /> - <result property="genPath" column="gen_path" /> - <result property="options" column="options" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - <result property="remark" column="remark" /> - <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" /> - </resultMap> - - <resultMap type="GenTableColumn" id="GenTableColumnResult"> - <id property="columnId" column="column_id" /> - <result property="tableId" column="table_id" /> - <result property="columnName" column="column_name" /> - <result property="columnComment" column="column_comment" /> - <result property="columnType" column="column_type" /> - <result property="javaType" column="java_type" /> - <result property="javaField" column="java_field" /> - <result property="isPk" column="is_pk" /> - <result property="isIncrement" column="is_increment" /> - <result property="isRequired" column="is_required" /> - <result property="isInsert" column="is_insert" /> - <result property="isEdit" column="is_edit" /> - <result property="isList" column="is_list" /> - <result property="isQuery" column="is_query" /> - <result property="queryType" column="query_type" /> - <result property="htmlType" column="html_type" /> - <result property="dictType" column="dict_type" /> - <result property="sort" column="sort" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - </resultMap> - - <sql id="selectGenTableVo"> - select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table - </sql> - - <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult"> - <include refid="selectGenTableVo"/> - <where> - <if test="tableName != null and tableName != ''"> - AND lower(table_name) like lower(concat('%', #{tableName}, '%')) - </if> - <if test="tableComment != null and tableComment != ''"> - AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) - </if> - <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> - AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') - </if> - <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> - AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') - </if> - </where> - </select> - - <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult"> - select table_name, table_comment, create_time, update_time from information_schema.tables - where table_schema = (select database()) - AND table_name NOT LIKE 'qrtz_%' AND table_name NOT LIKE 'gen_%' - AND table_name NOT IN (select table_name from gen_table) - <if test="tableName != null and tableName != ''"> - AND lower(table_name) like lower(concat('%', #{tableName}, '%')) - </if> - <if test="tableComment != null and tableComment != ''"> - AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) - </if> - <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> - AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') - </if> - <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> - AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') - </if> - order by create_time desc - </select> - - <select id="selectDbTableListByNames" resultMap="GenTableResult"> - select table_name, table_comment, create_time, update_time from information_schema.tables - where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) - and table_name in - <foreach collection="array" item="name" open="(" separator="," close=")"> - #{name} - </foreach> - </select> - - <select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> - select table_name, table_comment, create_time, update_time from information_schema.tables - where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database()) - and table_name = #{tableName} - </select> - - <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult"> - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort - FROM gen_table t - LEFT JOIN gen_table_column c ON t.table_id = c.table_id - where t.table_id = #{tableId} order by c.sort - </select> - - <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult"> - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort - FROM gen_table t - LEFT JOIN gen_table_column c ON t.table_id = c.table_id - where t.table_name = #{tableName} order by c.sort - </select> - - <select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult"> - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort - FROM gen_table t - LEFT JOIN gen_table_column c ON t.table_id = c.table_id - order by c.sort - </select> - - <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId"> - insert into gen_table ( - <if test="tableName != null">table_name,</if> - <if test="tableComment != null and tableComment != ''">table_comment,</if> - <if test="className != null and className != ''">class_name,</if> - <if test="tplCategory != null and tplCategory != ''">tpl_category,</if> - <if test="packageName != null and packageName != ''">package_name,</if> - <if test="moduleName != null and moduleName != ''">module_name,</if> - <if test="businessName != null and businessName != ''">business_name,</if> - <if test="functionName != null and functionName != ''">function_name,</if> - <if test="functionAuthor != null and functionAuthor != ''">function_author,</if> - <if test="genType != null and genType != ''">gen_type,</if> - <if test="genPath != null and genPath != ''">gen_path,</if> - <if test="remark != null and remark != ''">remark,</if> - <if test="createBy != null and createBy != ''">create_by,</if> - create_time - )values( - <if test="tableName != null">#{tableName},</if> - <if test="tableComment != null and tableComment != ''">#{tableComment},</if> - <if test="className != null and className != ''">#{className},</if> - <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if> - <if test="packageName != null and packageName != ''">#{packageName},</if> - <if test="moduleName != null and moduleName != ''">#{moduleName},</if> - <if test="businessName != null and businessName != ''">#{businessName},</if> - <if test="functionName != null and functionName != ''">#{functionName},</if> - <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if> - <if test="genType != null and genType != ''">#{genType},</if> - <if test="genPath != null and genPath != ''">#{genPath},</if> - <if test="remark != null and remark != ''">#{remark},</if> - <if test="createBy != null and createBy != ''">#{createBy},</if> - sysdate() - ) - </insert> - - <update id="updateGenTable" parameterType="GenTable"> - update gen_table - <set> - <if test="tableName != null">table_name = #{tableName},</if> - <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if> - <if test="subTableName != null">sub_table_name = #{subTableName},</if> - <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if> - <if test="className != null and className != ''">class_name = #{className},</if> - <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if> - <if test="genType != null and genType != ''">gen_type = #{genType},</if> - <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if> - <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if> - <if test="packageName != null and packageName != ''">package_name = #{packageName},</if> - <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if> - <if test="businessName != null and businessName != ''">business_name = #{businessName},</if> - <if test="functionName != null and functionName != ''">function_name = #{functionName},</if> - <if test="options != null and options != ''">options = #{options},</if> - <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> - <if test="remark != null">remark = #{remark},</if> - update_time = sysdate() - </set> - where table_id = #{tableId} - </update> - - <delete id="deleteGenTableByIds" parameterType="Long"> - delete from gen_table where table_id in - <foreach collection="array" item="tableId" open="(" separator="," close=")"> - #{tableId} - </foreach> - </delete> - -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm deleted file mode 100644 index e5fe3b5..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm +++ /dev/null @@ -1,116 +0,0 @@ -package ${packageName}.controller; - -import java.util.List; -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.log.annotation.Log; -import com.ruoyi.common.log.enums.BusinessType; -import com.ruoyi.common.security.annotation.RequiresPermissions; -import ${packageName}.domain.${ClassName}; -import ${packageName}.service.I${ClassName}Service; -import com.ruoyi.common.core.web.controller.BaseController; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.utils.poi.ExcelUtil; -#if($table.crud || $table.sub) -import com.ruoyi.common.core.web.page.TableDataInfo; -#elseif($table.tree) -#end - -/** - * ${functionName}Controller - * - * @author ${author} - * @date ${datetime} - */ -@RestController -@RequestMapping("/${businessName}") -public class ${ClassName}Controller extends BaseController -{ - @Autowired - private I${ClassName}Service ${className}Service; - - /** - * 查询${functionName}列表 - */ - @RequiresPermissions("${permissionPrefix}:list") - @GetMapping("/list") -#if($table.crud || $table.sub) - public TableDataInfo list(${ClassName} ${className}) - { - startPage(); - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); - return getDataTable(list); - } -#elseif($table.tree) - public AjaxResult list(${ClassName} ${className}) - { - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); - return success(list); - } -#end - - /** - * 导出${functionName}列表 - */ - @RequiresPermissions("${permissionPrefix}:export") - @Log(title = "${functionName}", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, ${ClassName} ${className}) - { - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); - ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); - util.exportExcel(response, list, "${functionName}数据"); - } - - /** - * 获取${functionName}详细信息 - */ - @RequiresPermissions("${permissionPrefix}:query") - @GetMapping(value = "/{${pkColumn.javaField}}") - public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) - { - return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); - } - - /** - * 新增${functionName} - */ - @RequiresPermissions("${permissionPrefix}:add") - @Log(title = "${functionName}", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody ${ClassName} ${className}) - { - return toAjax(${className}Service.insert${ClassName}(${className})); - } - - /** - * 修改${functionName} - */ - @RequiresPermissions("${permissionPrefix}:edit") - @Log(title = "${functionName}", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody ${ClassName} ${className}) - { - return toAjax(${className}Service.update${ClassName}(${className})); - } - - /** - * 删除${functionName} - */ - @RequiresPermissions("${permissionPrefix}:remove") - @Log(title = "${functionName}", businessType = BusinessType.DELETE) - @DeleteMapping("/{${pkColumn.javaField}s}") - public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) - { - return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm deleted file mode 100644 index ee3b7b4..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm +++ /dev/null @@ -1,105 +0,0 @@ -package ${packageName}.domain; - -#foreach ($import in $importList) -import ${import}; -#end -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -#if($table.crud || $table.sub) -import com.ruoyi.common.core.web.domain.BaseEntity; -#elseif($table.tree) -import com.ruoyi.common.core.web.domain.TreeEntity; -#end - -/** - * ${functionName}对象 ${tableName} - * - * @author ${author} - * @date ${datetime} - */ -#if($table.crud || $table.sub) -#set($Entity="BaseEntity") -#elseif($table.tree) -#set($Entity="TreeEntity") -#end -public class ${ClassName} extends ${Entity} -{ - private static final long serialVersionUID = 1L; - -#foreach ($column in $columns) -#if(!$table.isSuperColumn($column.javaField)) - /** $column.columnComment */ -#if($column.list) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($parentheseIndex != -1) - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") -#elseif($column.javaType == 'Date') - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") -#else - @Excel(name = "${comment}") -#end -#end - private $column.javaType $column.javaField; - -#end -#end -#if($table.sub) - /** $table.subTable.functionName信息 */ - private List<${subClassName}> ${subclassName}List; - -#end -#foreach ($column in $columns) -#if(!$table.isSuperColumn($column.javaField)) -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) -#set($AttrName=$column.javaField) -#else -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#end - public void set${AttrName}($column.javaType $column.javaField) - { - this.$column.javaField = $column.javaField; - } - - public $column.javaType get${AttrName}() - { - return $column.javaField; - } -#end -#end - -#if($table.sub) - public List<${subClassName}> get${subClassName}List() - { - return ${subclassName}List; - } - - public void set${subClassName}List(List<${subClassName}> ${subclassName}List) - { - this.${subclassName}List = ${subclassName}List; - } - -#end - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) -#foreach ($column in $columns) -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) -#set($AttrName=$column.javaField) -#else -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#end - .append("${column.javaField}", get${AttrName}()) -#end -#if($table.sub) - .append("${subclassName}List", get${subClassName}List()) -#end - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm deleted file mode 100644 index 7e7d7c2..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm +++ /dev/null @@ -1,91 +0,0 @@ -package ${packageName}.mapper; - -import java.util.List; -import ${packageName}.domain.${ClassName}; -#if($table.sub) -import ${packageName}.domain.${subClassName}; -#end - -/** - * ${functionName}Mapper接口 - * - * @author ${author} - * @date ${datetime} - */ -public interface ${ClassName}Mapper -{ - /** - * 查询${functionName} - * - * @param ${pkColumn.javaField} ${functionName}主键 - * @return ${functionName} - */ - public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); - - /** - * 查询${functionName}列表 - * - * @param ${className} ${functionName} - * @return ${functionName}集合 - */ - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); - - /** - * 新增${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ - public int insert${ClassName}(${ClassName} ${className}); - - /** - * 修改${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ - public int update${ClassName}(${ClassName} ${className}); - - /** - * 删除${functionName} - * - * @param ${pkColumn.javaField} ${functionName}主键 - * @return 结果 - */ - public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); - - /** - * 批量删除${functionName} - * - * @param ${pkColumn.javaField}s 需要删除的数据主键集合 - * @return 结果 - */ - public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); -#if($table.sub) - - /** - * 批量删除${subTable.functionName} - * - * @param ${pkColumn.javaField}s 需要删除的数据主键集合 - * @return 结果 - */ - public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); - - /** - * 批量新增${subTable.functionName} - * - * @param ${subclassName}List ${subTable.functionName}列表 - * @return 结果 - */ - public int batch${subClassName}(List<${subClassName}> ${subclassName}List); - - - /** - * 通过${functionName}主键删除${subTable.functionName}信息 - * - * @param ${pkColumn.javaField} ${functionName}ID - * @return 结果 - */ - public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); -#end -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm deleted file mode 100644 index 264882b..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm +++ /dev/null @@ -1,61 +0,0 @@ -package ${packageName}.service; - -import java.util.List; -import ${packageName}.domain.${ClassName}; - -/** - * ${functionName}Service接口 - * - * @author ${author} - * @date ${datetime} - */ -public interface I${ClassName}Service -{ - /** - * 查询${functionName} - * - * @param ${pkColumn.javaField} ${functionName}主键 - * @return ${functionName} - */ - public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); - - /** - * 查询${functionName}列表 - * - * @param ${className} ${functionName} - * @return ${functionName}集合 - */ - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); - - /** - * 新增${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ - public int insert${ClassName}(${ClassName} ${className}); - - /** - * 修改${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ - public int update${ClassName}(${ClassName} ${className}); - - /** - * 批量删除${functionName} - * - * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 - * @return 结果 - */ - public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); - - /** - * 删除${functionName}信息 - * - * @param ${pkColumn.javaField} ${functionName}主键 - * @return 结果 - */ - public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm deleted file mode 100644 index d590b92..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm +++ /dev/null @@ -1,169 +0,0 @@ -package ${packageName}.service.impl; - -import java.util.List; -#foreach ($column in $columns) -#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') -import com.ruoyi.common.core.utils.DateUtils; -#break -#end -#end -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -#if($table.sub) -import java.util.ArrayList; -import com.ruoyi.common.core.utils.StringUtils; -import org.springframework.transaction.annotation.Transactional; -import ${packageName}.domain.${subClassName}; -#end -import ${packageName}.mapper.${ClassName}Mapper; -import ${packageName}.domain.${ClassName}; -import ${packageName}.service.I${ClassName}Service; - -/** - * ${functionName}Service业务层处理 - * - * @author ${author} - * @date ${datetime} - */ -@Service -public class ${ClassName}ServiceImpl implements I${ClassName}Service -{ - @Autowired - private ${ClassName}Mapper ${className}Mapper; - - /** - * 查询${functionName} - * - * @param ${pkColumn.javaField} ${functionName}主键 - * @return ${functionName} - */ - @Override - public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) - { - return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); - } - - /** - * 查询${functionName}列表 - * - * @param ${className} ${functionName} - * @return ${functionName} - */ - @Override - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) - { - return ${className}Mapper.select${ClassName}List(${className}); - } - - /** - * 新增${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ -#if($table.sub) - @Transactional -#end - @Override - public int insert${ClassName}(${ClassName} ${className}) - { -#foreach ($column in $columns) -#if($column.javaField == 'createTime') - ${className}.setCreateTime(DateUtils.getNowDate()); -#end -#end -#if($table.sub) - int rows = ${className}Mapper.insert${ClassName}(${className}); - insert${subClassName}(${className}); - return rows; -#else - return ${className}Mapper.insert${ClassName}(${className}); -#end - } - - /** - * 修改${functionName} - * - * @param ${className} ${functionName} - * @return 结果 - */ -#if($table.sub) - @Transactional -#end - @Override - public int update${ClassName}(${ClassName} ${className}) - { -#foreach ($column in $columns) -#if($column.javaField == 'updateTime') - ${className}.setUpdateTime(DateUtils.getNowDate()); -#end -#end -#if($table.sub) - ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); - insert${subClassName}(${className}); -#end - return ${className}Mapper.update${ClassName}(${className}); - } - - /** - * 批量删除${functionName} - * - * @param ${pkColumn.javaField}s 需要删除的${functionName}主键 - * @return 结果 - */ -#if($table.sub) - @Transactional -#end - @Override - public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) - { -#if($table.sub) - ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); -#end - return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s); - } - - /** - * 删除${functionName}信息 - * - * @param ${pkColumn.javaField} ${functionName}主键 - * @return 结果 - */ -#if($table.sub) - @Transactional -#end - @Override - public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) - { -#if($table.sub) - ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); -#end - return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); - } -#if($table.sub) - - /** - * 新增${subTable.functionName}信息 - * - * @param ${className} ${functionName}对象 - */ - public void insert${subClassName}(${ClassName} ${className}) - { - List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List(); - ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}(); - if (StringUtils.isNotNull(${subclassName}List)) - { - List<${subClassName}> list = new ArrayList<${subClassName}>(); - for (${subClassName} ${subclassName} : ${subclassName}List) - { - ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField}); - list.add(${subclassName}); - } - if (list.size() > 0) - { - ${className}Mapper.batch${subClassName}(list); - } - } - } -#end -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm deleted file mode 100644 index 2e039ff..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm +++ /dev/null @@ -1,76 +0,0 @@ -package ${packageName}.domain; - -#foreach ($import in $subImportList) -import ${import}; -#end -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * ${subTable.functionName}对象 ${subTableName} - * - * @author ${author} - * @date ${datetime} - */ -public class ${subClassName} extends BaseEntity -{ - private static final long serialVersionUID = 1L; - -#foreach ($column in $subTable.columns) -#if(!$table.isSuperColumn($column.javaField)) - /** $column.columnComment */ -#if($column.list) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($parentheseIndex != -1) - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") -#elseif($column.javaType == 'Date') - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") -#else - @Excel(name = "${comment}") -#end -#end - private $column.javaType $column.javaField; - -#end -#end -#foreach ($column in $subTable.columns) -#if(!$table.isSuperColumn($column.javaField)) -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) -#set($AttrName=$column.javaField) -#else -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#end - public void set${AttrName}($column.javaType $column.javaField) - { - this.$column.javaField = $column.javaField; - } - - public $column.javaType get${AttrName}() - { - return $column.javaField; - } -#end -#end - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) -#foreach ($column in $subTable.columns) -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) -#set($AttrName=$column.javaField) -#else -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#end - .append("${column.javaField}", get${AttrName}()) -#end - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm deleted file mode 100644 index 9295524..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' - -// 查询${functionName}列表 -export function list${BusinessName}(query) { - return request({ - url: '/${moduleName}/${businessName}/list', - method: 'get', - params: query - }) -} - -// 查询${functionName}详细 -export function get${BusinessName}(${pkColumn.javaField}) { - return request({ - url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, - method: 'get' - }) -} - -// 新增${functionName} -export function add${BusinessName}(data) { - return request({ - url: '/${moduleName}/${businessName}', - method: 'post', - data: data - }) -} - -// 修改${functionName} -export function update${BusinessName}(data) { - return request({ - url: '/${moduleName}/${businessName}', - method: 'put', - data: data - }) -} - -// 删除${functionName} -export function del${BusinessName}(${pkColumn.javaField}) { - return request({ - url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, - method: 'delete' - }) -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm deleted file mode 100644 index 0575583..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm +++ /dev/null @@ -1,22 +0,0 @@ --- 菜单 SQL -insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单'); - --- 按钮父菜单ID -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, ''); - -insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, ''); - -insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, ''); - -insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, ''); - -insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, ''); \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm deleted file mode 100644 index a4c64a0..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm +++ /dev/null @@ -1,505 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> -#foreach($column in $columns) -#if($column.query) -#set($dictType=$column.dictType) -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.htmlType == "input") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-input - v-model="queryParams.${column.javaField}" - placeholder="请输入${comment}" - clearable - @keyup.enter.native="handleQuery" - /> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option - v-for="dict in dict.type.${dictType}" - :key="dict.value" - :label="dict.label" - :value="dict.value" - /> - </el-select> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-date-picker clearable - v-model="queryParams.${column.javaField}" - type="date" - value-format="yyyy-MM-dd" - placeholder="选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - <el-form-item label="${comment}"> - <el-date-picker - v-model="daterange${AttrName}" - style="width: 240px" - value-format="yyyy-MM-dd" - type="daterange" - range-separator="-" - start-placeholder="开始日期" - end-placeholder="结束日期" - ></el-date-picker> - </el-form-item> -#end -#end -#end - <el-form-item> - <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['${moduleName}:${businessName}:add']" - >新增</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="info" - plain - icon="el-icon-sort" - size="mini" - @click="toggleExpandAll" - >展开/折叠</el-button> - </el-col> - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> - </el-row> - - <el-table - v-if="refreshTable" - v-loading="loading" - :data="${businessName}List" - row-key="${treeCode}" - :default-expand-all="isExpandAll" - :tree-props="{children: 'children', hasChildren: 'hasChildren'}" - > -#foreach($column in $columns) -#set($javaField=$column.javaField) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.pk) -#elseif($column.list && $column.htmlType == "datetime") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> - </template> - </el-table-column> -#elseif($column.list && $column.htmlType == "imageUpload") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> - <template slot-scope="scope"> - <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> - </template> - </el-table-column> -#elseif($column.list && "" != $column.dictType) - <el-table-column label="${comment}" align="center" prop="${javaField}"> - <template slot-scope="scope"> -#if($column.htmlType == "checkbox") - <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> -#else - <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/> -#end - </template> - </el-table-column> -#elseif($column.list && "" != $javaField) -#if(${foreach.index} == 1) - <el-table-column label="${comment}" prop="${javaField}" /> -#else - <el-table-column label="${comment}" align="center" prop="${javaField}" /> -#end -#end -#end - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> - <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-edit" - @click="handleUpdate(scope.row)" - v-hasPermi="['${moduleName}:${businessName}:edit']" - >修改</el-button> - <el-button - size="mini" - type="text" - icon="el-icon-plus" - @click="handleAdd(scope.row)" - v-hasPermi="['${moduleName}:${businessName}:add']" - >新增</el-button> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['${moduleName}:${businessName}:remove']" - >删除</el-button> - </template> - </el-table-column> - </el-table> - - <!-- 添加或修改${functionName}对话框 --> - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="80px"> -#foreach($column in $columns) -#set($field=$column.javaField) -#if($column.insert && !$column.pk) -#if(($column.usableColumn) || (!$column.superColumn)) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#set($dictType=$column.dictType) -#if("" != $treeParentCode && $column.javaField == $treeParentCode) - <el-form-item label="${comment}" prop="${treeParentCode}"> - <treeselect v-model="form.${treeParentCode}" :options="${businessName}Options" :normalizer="normalizer" placeholder="请选择${comment}" /> - </el-form-item> -#elseif($column.htmlType == "input") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" placeholder="请输入${comment}" /> - </el-form-item> -#elseif($column.htmlType == "imageUpload") - <el-form-item label="${comment}" prop="${field}"> - <image-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "fileUpload") - <el-form-item label="${comment}" prop="${field}"> - <file-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "editor") - <el-form-item label="${comment}"> - <editor v-model="form.${field}" :min-height="192"/> - </el-form-item> -#elseif($column.htmlType == "select" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option - v-for="dict in dict.type.${dictType}" - :key="dict.value" - :label="dict.label" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :value="parseInt(dict.value)" -#else - :value="dict.value" -#end - ></el-option> - </el-select> - </el-form-item> -#elseif($column.htmlType == "select" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "checkbox" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox - v-for="dict in dict.type.${dictType}" - :key="dict.value" - :label="dict.value"> - {{dict.label}} - </el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "checkbox" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox>请选择字典生成</el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "radio" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio - v-for="dict in dict.type.${dictType}" - :key="dict.value" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :label="parseInt(dict.value)" -#else - :label="dict.value" -#end - >{{dict.label}}</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "radio" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio label="1">请选择字典生成</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "datetime") - <el-form-item label="${comment}" prop="${field}"> - <el-date-picker clearable - v-model="form.${field}" - type="date" - value-format="yyyy-MM-dd" - placeholder="选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "textarea") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" /> - </el-form-item> -#end -#end -#end -#end - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </el-dialog> - </div> -</template> - -<script> -import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; -import Treeselect from "@riophae/vue-treeselect"; -import "@riophae/vue-treeselect/dist/vue-treeselect.css"; - -export default { - name: "${BusinessName}", -#if(${dicts} != '') - dicts: [${dicts}], -#end - components: { - Treeselect - }, - data() { - return { - // 遮罩层 - loading: true, - // 显示搜索条件 - showSearch: true, - // ${functionName}表格数据 - ${businessName}List: [], - // ${functionName}树选项 - ${businessName}Options: [], - // 弹出层标题 - title: "", - // 是否显示弹出层 - open: false, - // 是否展开,默认全部展开 - isExpandAll: true, - // 重新渲染表格状态 - refreshTable: true, -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - // $comment时间范围 - daterange${AttrName}: [], -#end -#end - // 查询参数 - queryParams: { -#foreach ($column in $columns) -#if($column.query) - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }, - // 表单参数 - form: {}, - // 表单校验 - rules: { -#foreach ($column in $columns) -#if($column.required) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end - $column.javaField: [ - { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end } - ]#if($foreach.count != $columns.size()),#end -#end -#end - } - }; - }, - created() { - this.getList(); - }, - methods: { - /** 查询${functionName}列表 */ - getList() { - this.loading = true; -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - this.queryParams.params = {}; -#break -#end -#end -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) { - this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0]; - this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1]; - } -#end -#end - list${BusinessName}(this.queryParams).then(response => { - this.${businessName}List = this.handleTree(response.data, "${treeCode}", "${treeParentCode}"); - this.loading = false; - }); - }, - /** 转换${functionName}数据结构 */ - normalizer(node) { - if (node.children && !node.children.length) { - delete node.children; - } - return { - id: node.${treeCode}, - label: node.${treeName}, - children: node.children - }; - }, - /** 查询${functionName}下拉树结构 */ - getTreeselect() { - list${BusinessName}().then(response => { - this.${businessName}Options = []; - const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] }; - data.children = this.handleTree(response.data, "${treeCode}", "${treeParentCode}"); - this.${businessName}Options.push(data); - }); - }, - // 取消按钮 - cancel() { - this.open = false; - this.reset(); - }, - // 表单重置 - reset() { - this.form = { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - $column.javaField: []#if($foreach.count != $columns.size()),#end -#else - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }; - this.resetForm("form"); - }, - /** 搜索按钮操作 */ - handleQuery() { - this.getList(); - }, - /** 重置按钮操作 */ - resetQuery() { -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - this.daterange${AttrName} = []; -#end -#end - this.resetForm("queryForm"); - this.handleQuery(); - }, - /** 新增按钮操作 */ - handleAdd(row) { - this.reset(); - this.getTreeselect(); - if (row != null && row.${treeCode}) { - this.form.${treeParentCode} = row.${treeCode}; - } else { - this.form.${treeParentCode} = 0; - } - this.open = true; - this.title = "添加${functionName}"; - }, - /** 展开/折叠操作 */ - toggleExpandAll() { - this.refreshTable = false; - this.isExpandAll = !this.isExpandAll; - this.$nextTick(() => { - this.refreshTable = true; - }); - }, - /** 修改按钮操作 */ - handleUpdate(row) { - this.reset(); - this.getTreeselect(); - if (row != null) { - this.form.${treeParentCode} = row.${treeCode}; - } - get${BusinessName}(row.${pkColumn.javaField}).then(response => { - this.form = response.data; -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - this.form.$column.javaField = this.form.${column.javaField}.split(","); -#end -#end - this.open = true; - this.title = "修改${functionName}"; - }); - }, - /** 提交按钮 */ - submitForm() { - this.#[[$]]#refs["form"].validate(valid => { - if (valid) { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - this.form.$column.javaField = this.form.${column.javaField}.join(","); -#end -#end - if (this.form.${pkColumn.javaField} != null) { - update${BusinessName}(this.form).then(response => { - this.#[[$modal]]#.msgSuccess("修改成功"); - this.open = false; - this.getList(); - }); - } else { - add${BusinessName}(this.form).then(response => { - this.#[[$modal]]#.msgSuccess("新增成功"); - this.open = false; - this.getList(); - }); - } - } - }); - }, - /** 删除按钮操作 */ - handleDelete(row) { - this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() { - return del${BusinessName}(row.${pkColumn.javaField}); - }).then(() => { - this.getList(); - this.#[[$modal]]#.msgSuccess("删除成功"); - }).catch(() => {}); - } - } -}; -</script> diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm deleted file mode 100644 index 6296014..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm +++ /dev/null @@ -1,602 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> -#foreach($column in $columns) -#if($column.query) -#set($dictType=$column.dictType) -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.htmlType == "input") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-input - v-model="queryParams.${column.javaField}" - placeholder="请输入${comment}" - clearable - @keyup.enter.native="handleQuery" - /> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option - v-for="dict in dict.type.${dictType}" - :key="dict.value" - :label="dict.label" - :value="dict.value" - /> - </el-select> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-date-picker clearable - v-model="queryParams.${column.javaField}" - type="date" - value-format="yyyy-MM-dd" - placeholder="请选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - <el-form-item label="${comment}"> - <el-date-picker - v-model="daterange${AttrName}" - style="width: 240px" - value-format="yyyy-MM-dd" - type="daterange" - range-separator="-" - start-placeholder="开始日期" - end-placeholder="结束日期" - ></el-date-picker> - </el-form-item> -#end -#end -#end - <el-form-item> - <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['${moduleName}:${businessName}:add']" - >新增</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="success" - plain - icon="el-icon-edit" - size="mini" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['${moduleName}:${businessName}:edit']" - >修改</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - plain - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['${moduleName}:${businessName}:remove']" - >删除</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - plain - icon="el-icon-download" - size="mini" - @click="handleExport" - v-hasPermi="['${moduleName}:${businessName}:export']" - >导出</el-button> - </el-col> - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> - </el-row> - - <el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center" /> -#foreach($column in $columns) -#set($javaField=$column.javaField) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.pk) - <el-table-column label="${comment}" align="center" prop="${javaField}" /> -#elseif($column.list && $column.htmlType == "datetime") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> - <template slot-scope="scope"> - <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> - </template> - </el-table-column> -#elseif($column.list && $column.htmlType == "imageUpload") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> - <template slot-scope="scope"> - <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> - </template> - </el-table-column> -#elseif($column.list && "" != $column.dictType) - <el-table-column label="${comment}" align="center" prop="${javaField}"> - <template slot-scope="scope"> -#if($column.htmlType == "checkbox") - <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> -#else - <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/> -#end - </template> - </el-table-column> -#elseif($column.list && "" != $javaField) - <el-table-column label="${comment}" align="center" prop="${javaField}" /> -#end -#end - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> - <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-edit" - @click="handleUpdate(scope.row)" - v-hasPermi="['${moduleName}:${businessName}:edit']" - >修改</el-button> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['${moduleName}:${businessName}:remove']" - >删除</el-button> - </template> - </el-table-column> - </el-table> - - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> - - <!-- 添加或修改${functionName}对话框 --> - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="80px"> -#foreach($column in $columns) -#set($field=$column.javaField) -#if($column.insert && !$column.pk) -#if(($column.usableColumn) || (!$column.superColumn)) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#set($dictType=$column.dictType) -#if($column.htmlType == "input") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" placeholder="请输入${comment}" /> - </el-form-item> -#elseif($column.htmlType == "imageUpload") - <el-form-item label="${comment}" prop="${field}"> - <image-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "fileUpload") - <el-form-item label="${comment}" prop="${field}"> - <file-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "editor") - <el-form-item label="${comment}"> - <editor v-model="form.${field}" :min-height="192"/> - </el-form-item> -#elseif($column.htmlType == "select" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option - v-for="dict in dict.type.${dictType}" - :key="dict.value" - :label="dict.label" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :value="parseInt(dict.value)" -#else - :value="dict.value" -#end - ></el-option> - </el-select> - </el-form-item> -#elseif($column.htmlType == "select" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "checkbox" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox - v-for="dict in dict.type.${dictType}" - :key="dict.value" - :label="dict.value"> - {{dict.label}} - </el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "checkbox" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox>请选择字典生成</el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "radio" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio - v-for="dict in dict.type.${dictType}" - :key="dict.value" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :label="parseInt(dict.value)" -#else - :label="dict.value" -#end - >{{dict.label}}</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "radio" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio label="1">请选择字典生成</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "datetime") - <el-form-item label="${comment}" prop="${field}"> - <el-date-picker clearable - v-model="form.${field}" - type="date" - value-format="yyyy-MM-dd" - placeholder="请选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "textarea") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" /> - </el-form-item> -#end -#end -#end -#end -#if($table.sub) - <el-divider content-position="center">${subTable.functionName}信息</el-divider> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd${subClassName}">添加</el-button> - </el-col> - <el-col :span="1.5"> - <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete${subClassName}">删除</el-button> - </el-col> - </el-row> - <el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}"> - <el-table-column type="selection" width="50" align="center" /> - <el-table-column label="序号" align="center" prop="index" width="50"/> -#foreach($column in $subTable.columns) -#set($javaField=$column.javaField) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.pk || $javaField == ${subTableFkclassName}) -#elseif($column.list && $column.htmlType == "input") - <el-table-column label="$comment" prop="${javaField}" width="150"> - <template slot-scope="scope"> - <el-input v-model="scope.row.$javaField" placeholder="请输入$comment" /> - </template> - </el-table-column> -#elseif($column.list && $column.htmlType == "datetime") - <el-table-column label="$comment" prop="${javaField}" width="240"> - <template slot-scope="scope"> - <el-date-picker clearable v-model="scope.row.$javaField" type="date" value-format="yyyy-MM-dd" placeholder="请选择$comment" /> - </template> - </el-table-column> -#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" != $column.dictType) - <el-table-column label="$comment" prop="${javaField}" width="150"> - <template slot-scope="scope"> - <el-select v-model="scope.row.$javaField" placeholder="请选择$comment"> - <el-option - v-for="dict in dict.type.$column.dictType" - :key="dict.value" - :label="dict.label" - :value="dict.value" - ></el-option> - </el-select> - </template> - </el-table-column> -#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" == $column.dictType) - <el-table-column label="$comment" prop="${javaField}" width="150"> - <template slot-scope="scope"> - <el-select v-model="scope.row.$javaField" placeholder="请选择$comment"> - <el-option label="请选择字典生成" value="" /> - </el-select> - </template> - </el-table-column> -#end -#end - </el-table> -#end - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </el-dialog> - </div> -</template> - -<script> -import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; - -export default { - name: "${BusinessName}", -#if(${dicts} != '') - dicts: [${dicts}], -#end - data() { - return { - // 遮罩层 - loading: true, - // 选中数组 - ids: [], -#if($table.sub) - // 子表选中数据 - checked${subClassName}: [], -#end - // 非单个禁用 - single: true, - // 非多个禁用 - multiple: true, - // 显示搜索条件 - showSearch: true, - // 总条数 - total: 0, - // ${functionName}表格数据 - ${businessName}List: [], -#if($table.sub) - // ${subTable.functionName}表格数据 - ${subclassName}List: [], -#end - // 弹出层标题 - title: "", - // 是否显示弹出层 - open: false, -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - // $comment时间范围 - daterange${AttrName}: [], -#end -#end - // 查询参数 - queryParams: { - pageNum: 1, - pageSize: 10, -#foreach ($column in $columns) -#if($column.query) - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }, - // 表单参数 - form: {}, - // 表单校验 - rules: { -#foreach ($column in $columns) -#if($column.required) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end - $column.javaField: [ - { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end } - ]#if($foreach.count != $columns.size()),#end -#end -#end - } - }; - }, - created() { - this.getList(); - }, - methods: { - /** 查询${functionName}列表 */ - getList() { - this.loading = true; -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - this.queryParams.params = {}; -#break -#end -#end -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) { - this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0]; - this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1]; - } -#end -#end - list${BusinessName}(this.queryParams).then(response => { - this.${businessName}List = response.rows; - this.total = response.total; - this.loading = false; - }); - }, - // 取消按钮 - cancel() { - this.open = false; - this.reset(); - }, - // 表单重置 - reset() { - this.form = { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - $column.javaField: []#if($foreach.count != $columns.size()),#end -#else - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }; -#if($table.sub) - this.${subclassName}List = []; -#end - this.resetForm("form"); - }, - /** 搜索按钮操作 */ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); - }, - /** 重置按钮操作 */ - resetQuery() { -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - this.daterange${AttrName} = []; -#end -#end - this.resetForm("queryForm"); - this.handleQuery(); - }, - // 多选框选中数据 - handleSelectionChange(selection) { - this.ids = selection.map(item => item.${pkColumn.javaField}) - this.single = selection.length!==1 - this.multiple = !selection.length - }, - /** 新增按钮操作 */ - handleAdd() { - this.reset(); - this.open = true; - this.title = "添加${functionName}"; - }, - /** 修改按钮操作 */ - handleUpdate(row) { - this.reset(); - const ${pkColumn.javaField} = row.${pkColumn.javaField} || this.ids - get${BusinessName}(${pkColumn.javaField}).then(response => { - this.form = response.data; -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - this.form.$column.javaField = this.form.${column.javaField}.split(","); -#end -#end -#if($table.sub) - this.${subclassName}List = response.data.${subclassName}List; -#end - this.open = true; - this.title = "修改${functionName}"; - }); - }, - /** 提交按钮 */ - submitForm() { - this.#[[$]]#refs["form"].validate(valid => { - if (valid) { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - this.form.$column.javaField = this.form.${column.javaField}.join(","); -#end -#end -#if($table.sub) - this.form.${subclassName}List = this.${subclassName}List; -#end - if (this.form.${pkColumn.javaField} != null) { - update${BusinessName}(this.form).then(response => { - this.#[[$modal]]#.msgSuccess("修改成功"); - this.open = false; - this.getList(); - }); - } else { - add${BusinessName}(this.form).then(response => { - this.#[[$modal]]#.msgSuccess("新增成功"); - this.open = false; - this.getList(); - }); - } - } - }); - }, - /** 删除按钮操作 */ - handleDelete(row) { - const ${pkColumn.javaField}s = row.${pkColumn.javaField} || this.ids; - this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() { - return del${BusinessName}(${pkColumn.javaField}s); - }).then(() => { - this.getList(); - this.#[[$modal]]#.msgSuccess("删除成功"); - }).catch(() => {}); - }, -#if($table.sub) - /** ${subTable.functionName}序号 */ - row${subClassName}Index({ row, rowIndex }) { - row.index = rowIndex + 1; - }, - /** ${subTable.functionName}添加按钮操作 */ - handleAdd${subClassName}() { - let obj = {}; -#foreach($column in $subTable.columns) -#if($column.pk || $column.javaField == ${subTableFkclassName}) -#elseif($column.list && "" != $javaField) - obj.$column.javaField = ""; -#end -#end - this.${subclassName}List.push(obj); - }, - /** ${subTable.functionName}删除按钮操作 */ - handleDelete${subClassName}() { - if (this.checked${subClassName}.length == 0) { - this.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据"); - } else { - const ${subclassName}List = this.${subclassName}List; - const checked${subClassName} = this.checked${subClassName}; - this.${subclassName}List = ${subclassName}List.filter(function(item) { - return checked${subClassName}.indexOf(item.index) == -1 - }); - } - }, - /** 复选框选中数据 */ - handle${subClassName}SelectionChange(selection) { - this.checked${subClassName} = selection.map(item => item.index) - }, -#end - /** 导出按钮操作 */ - handleExport() { - this.download('${moduleName}/${businessName}/export', { - ...this.queryParams - }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`) - } - } -}; -</script> diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm deleted file mode 100644 index 7bbd2fc..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm +++ /dev/null @@ -1,474 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> -#foreach($column in $columns) -#if($column.query) -#set($dictType=$column.dictType) -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.htmlType == "input") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-input - v-model="queryParams.${column.javaField}" - placeholder="请输入${comment}" - clearable - @keyup.enter="handleQuery" - /> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option - v-for="dict in ${dictType}" - :key="dict.value" - :label="dict.label" - :value="dict.value" - /> - </el-select> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-date-picker clearable - v-model="queryParams.${column.javaField}" - type="date" - value-format="YYYY-MM-DD" - placeholder="选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - <el-form-item label="${comment}" style="width: 308px"> - <el-date-picker - v-model="daterange${AttrName}" - value-format="YYYY-MM-DD" - type="daterange" - range-separator="-" - start-placeholder="开始日期" - end-placeholder="结束日期" - ></el-date-picker> - </el-form-item> -#end -#end -#end - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - v-hasPermi="['${moduleName}:${businessName}:add']" - >新增</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="info" - plain - icon="Sort" - @click="toggleExpandAll" - >展开/折叠</el-button> - </el-col> - <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> - </el-row> - - <el-table - v-if="refreshTable" - v-loading="loading" - :data="${businessName}List" - row-key="${treeCode}" - :default-expand-all="isExpandAll" - :tree-props="{children: 'children', hasChildren: 'hasChildren'}" - > -#foreach($column in $columns) -#set($javaField=$column.javaField) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.pk) -#elseif($column.list && $column.htmlType == "datetime") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> - <template #default="scope"> - <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> - </template> - </el-table-column> -#elseif($column.list && $column.htmlType == "imageUpload") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> - <template #default="scope"> - <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> - </template> - </el-table-column> -#elseif($column.list && "" != $column.dictType) - <el-table-column label="${comment}" align="center" prop="${javaField}"> - <template #default="scope"> -#if($column.htmlType == "checkbox") - <dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> -#else - <dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/> -#end - </template> - </el-table-column> -#elseif($column.list && "" != $javaField) -#if(${foreach.index} == 1) - <el-table-column label="${comment}" prop="${javaField}" /> -#else - <el-table-column label="${comment}" align="center" prop="${javaField}" /> -#end -#end -#end - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']">修改</el-button> - <el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['${moduleName}:${businessName}:add']">新增</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']">删除</el-button> - </template> - </el-table-column> - </el-table> - - <!-- 添加或修改${functionName}对话框 --> - <el-dialog :title="title" v-model="open" width="500px" append-to-body> - <el-form ref="${businessName}Ref" :model="form" :rules="rules" label-width="80px"> -#foreach($column in $columns) -#set($field=$column.javaField) -#if($column.insert && !$column.pk) -#if(($column.usableColumn) || (!$column.superColumn)) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#set($dictType=$column.dictType) -#if("" != $treeParentCode && $column.javaField == $treeParentCode) - <el-form-item label="${comment}" prop="${treeParentCode}"> - <el-tree-select - v-model="form.${treeParentCode}" - :data="${businessName}Options" - :props="{ value: '${treeCode}', label: '${treeName}', children: 'children' }" - value-key="${treeCode}" - placeholder="请选择${comment}" - check-strictly - /> - </el-form-item> -#elseif($column.htmlType == "input") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" placeholder="请输入${comment}" /> - </el-form-item> -#elseif($column.htmlType == "imageUpload") - <el-form-item label="${comment}" prop="${field}"> - <image-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "fileUpload") - <el-form-item label="${comment}" prop="${field}"> - <file-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "editor") - <el-form-item label="${comment}"> - <editor v-model="form.${field}" :min-height="192"/> - </el-form-item> -#elseif($column.htmlType == "select" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option - v-for="dict in ${dictType}" - :key="dict.value" - :label="dict.label" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :value="parseInt(dict.value)" -#else - :value="dict.value" -#end - ></el-option> - </el-select> - </el-form-item> -#elseif($column.htmlType == "select" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "checkbox" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox - v-for="dict in ${dictType}" - :key="dict.value" - :label="dict.value"> - {{dict.label}} - </el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "checkbox" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox>请选择字典生成</el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "radio" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio - v-for="dict in ${dictType}" - :key="dict.value" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :label="parseInt(dict.value)" -#else - :label="dict.value" -#end - >{{dict.label}}</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "radio" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio label="1">请选择字典生成</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "datetime") - <el-form-item label="${comment}" prop="${field}"> - <el-date-picker clearable - v-model="form.${field}" - type="date" - value-format="YYYY-MM-DD" - placeholder="选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "textarea") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" /> - </el-form-item> -#end -#end -#end -#end - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - -<script setup name="${BusinessName}"> -import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; - -const { proxy } = getCurrentInstance(); -#if(${dicts} != '') -#set($dictsNoSymbol=$dicts.replace("'", "")) -const { ${dictsNoSymbol} } = proxy.useDict(${dicts}); -#end - -const ${businessName}List = ref([]); -const ${businessName}Options = ref([]); -const open = ref(false); -const loading = ref(true); -const showSearch = ref(true); -const title = ref(""); -const isExpandAll = ref(true); -const refreshTable = ref(true); -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -const daterange${AttrName} = ref([]); -#end -#end - -const data = reactive({ - form: {}, - queryParams: { - #foreach ($column in $columns) -#if($column.query) - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }, - rules: { - #foreach ($column in $columns) -#if($column.required) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end - $column.javaField: [ - { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end } - ]#if($foreach.count != $columns.size()),#end -#end -#end - } -}); - -const { queryParams, form, rules } = toRefs(data); - -/** 查询${functionName}列表 */ -function getList() { - loading.value = true; -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - queryParams.value.params = {}; -#break -#end -#end -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - if (null != daterange${AttrName} && '' != daterange${AttrName}) { - queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0]; - queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1]; - } -#end -#end - list${BusinessName}(queryParams.value).then(response => { - ${businessName}List.value = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}"); - loading.value = false; - }); -} - -/** 查询${functionName}下拉树结构 */ -function getTreeselect() { - list${BusinessName}().then(response => { - ${businessName}Options.value = []; - const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] }; - data.children = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}"); - ${businessName}Options.value.push(data); - }); -} - -// 取消按钮 -function cancel() { - open.value = false; - reset(); -} - -// 表单重置 -function reset() { - form.value = { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - $column.javaField: []#if($foreach.count != $columns.size()),#end -#else - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }; - proxy.resetForm("${businessName}Ref"); -} - -/** 搜索按钮操作 */ -function handleQuery() { - getList(); -} - -/** 重置按钮操作 */ -function resetQuery() { -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - daterange${AttrName}.value = []; -#end -#end - proxy.resetForm("queryRef"); - handleQuery(); -} - -/** 新增按钮操作 */ -function handleAdd(row) { - reset(); - getTreeselect(); - if (row != null && row.${treeCode}) { - form.value.${treeParentCode} = row.${treeCode}; - } else { - form.value.${treeParentCode} = 0; - } - open.value = true; - title.value = "添加${functionName}"; -} - -/** 展开/折叠操作 */ -function toggleExpandAll() { - refreshTable.value = false; - isExpandAll.value = !isExpandAll.value; - nextTick(() => { - refreshTable.value = true; - }); -} - -/** 修改按钮操作 */ -async function handleUpdate(row) { - reset(); - await getTreeselect(); - if (row != null) { - form.value.${treeParentCode} = row.${treeCode}; - } - get${BusinessName}(row.${pkColumn.javaField}).then(response => { - form.value = response.data; -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - form.value.$column.javaField = form.value.${column.javaField}.split(","); -#end -#end - open.value = true; - title.value = "修改${functionName}"; - }); -} - -/** 提交按钮 */ -function submitForm() { - proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => { - if (valid) { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - form.value.$column.javaField = form.value.${column.javaField}.join(","); -#end -#end - if (form.value.${pkColumn.javaField} != null) { - update${BusinessName}(form.value).then(response => { - proxy.#[[$modal]]#.msgSuccess("修改成功"); - open.value = false; - getList(); - }); - } else { - add${BusinessName}(form.value).then(response => { - proxy.#[[$modal]]#.msgSuccess("新增成功"); - open.value = false; - getList(); - }); - } - } - }); -} - -/** 删除按钮操作 */ -function handleDelete(row) { - proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() { - return del${BusinessName}(row.${pkColumn.javaField}); - }).then(() => { - getList(); - proxy.#[[$modal]]#.msgSuccess("删除成功"); - }).catch(() => {}); -} - -getList(); -</script> diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm deleted file mode 100644 index 8b25665..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm +++ /dev/null @@ -1,590 +0,0 @@ -<template> - <div class="app-container"> - <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> -#foreach($column in $columns) -#if($column.query) -#set($dictType=$column.dictType) -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.htmlType == "input") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-input - v-model="queryParams.${column.javaField}" - placeholder="请输入${comment}" - clearable - @keyup.enter="handleQuery" - /> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option - v-for="dict in ${dictType}" - :key="dict.value" - :label="dict.label" - :value="dict.value" - /> - </el-select> - </el-form-item> -#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") - <el-form-item label="${comment}" prop="${column.javaField}"> - <el-date-picker clearable - v-model="queryParams.${column.javaField}" - type="date" - value-format="YYYY-MM-DD" - placeholder="请选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - <el-form-item label="${comment}" style="width: 308px"> - <el-date-picker - v-model="daterange${AttrName}" - value-format="YYYY-MM-DD" - type="daterange" - range-separator="-" - start-placeholder="开始日期" - end-placeholder="结束日期" - ></el-date-picker> - </el-form-item> -#end -#end -#end - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> - - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - v-hasPermi="['${moduleName}:${businessName}:add']" - >新增</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="success" - plain - icon="Edit" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['${moduleName}:${businessName}:edit']" - >修改</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - plain - icon="Delete" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['${moduleName}:${businessName}:remove']" - >删除</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - plain - icon="Download" - @click="handleExport" - v-hasPermi="['${moduleName}:${businessName}:export']" - >导出</el-button> - </el-col> - <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> - </el-row> - - <el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center" /> -#foreach($column in $columns) -#set($javaField=$column.javaField) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.pk) - <el-table-column label="${comment}" align="center" prop="${javaField}" /> -#elseif($column.list && $column.htmlType == "datetime") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> - <template #default="scope"> - <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> - </template> - </el-table-column> -#elseif($column.list && $column.htmlType == "imageUpload") - <el-table-column label="${comment}" align="center" prop="${javaField}" width="100"> - <template #default="scope"> - <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/> - </template> - </el-table-column> -#elseif($column.list && "" != $column.dictType) - <el-table-column label="${comment}" align="center" prop="${javaField}"> - <template #default="scope"> -#if($column.htmlType == "checkbox") - <dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> -#else - <dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/> -#end - </template> - </el-table-column> -#elseif($column.list && "" != $javaField) - <el-table-column label="${comment}" align="center" prop="${javaField}" /> -#end -#end - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']">修改</el-button> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']">删除</el-button> - </template> - </el-table-column> - </el-table> - - <pagination - v-show="total>0" - :total="total" - v-model:page="queryParams.pageNum" - v-model:limit="queryParams.pageSize" - @pagination="getList" - /> - - <!-- 添加或修改${functionName}对话框 --> - <el-dialog :title="title" v-model="open" width="500px" append-to-body> - <el-form ref="${businessName}Ref" :model="form" :rules="rules" label-width="80px"> -#foreach($column in $columns) -#set($field=$column.javaField) -#if($column.insert && !$column.pk) -#if(($column.usableColumn) || (!$column.superColumn)) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#set($dictType=$column.dictType) -#if($column.htmlType == "input") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" placeholder="请输入${comment}" /> - </el-form-item> -#elseif($column.htmlType == "imageUpload") - <el-form-item label="${comment}" prop="${field}"> - <image-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "fileUpload") - <el-form-item label="${comment}" prop="${field}"> - <file-upload v-model="form.${field}"/> - </el-form-item> -#elseif($column.htmlType == "editor") - <el-form-item label="${comment}"> - <editor v-model="form.${field}" :min-height="192"/> - </el-form-item> -#elseif($column.htmlType == "select" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option - v-for="dict in ${dictType}" - :key="dict.value" - :label="dict.label" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :value="parseInt(dict.value)" -#else - :value="dict.value" -#end - ></el-option> - </el-select> - </el-form-item> -#elseif($column.htmlType == "select" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-select v-model="form.${field}" placeholder="请选择${comment}"> - <el-option label="请选择字典生成" value="" /> - </el-select> - </el-form-item> -#elseif($column.htmlType == "checkbox" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox - v-for="dict in ${dictType}" - :key="dict.value" - :label="dict.value"> - {{dict.label}} - </el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "checkbox" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-checkbox-group v-model="form.${field}"> - <el-checkbox>请选择字典生成</el-checkbox> - </el-checkbox-group> - </el-form-item> -#elseif($column.htmlType == "radio" && "" != $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio - v-for="dict in ${dictType}" - :key="dict.value" -#if($column.javaType == "Integer" || $column.javaType == "Long") - :label="parseInt(dict.value)" -#else - :label="dict.value" -#end - >{{dict.label}}</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "radio" && $dictType) - <el-form-item label="${comment}" prop="${field}"> - <el-radio-group v-model="form.${field}"> - <el-radio label="1">请选择字典生成</el-radio> - </el-radio-group> - </el-form-item> -#elseif($column.htmlType == "datetime") - <el-form-item label="${comment}" prop="${field}"> - <el-date-picker clearable - v-model="form.${field}" - type="date" - value-format="YYYY-MM-DD" - placeholder="请选择${comment}"> - </el-date-picker> - </el-form-item> -#elseif($column.htmlType == "textarea") - <el-form-item label="${comment}" prop="${field}"> - <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" /> - </el-form-item> -#end -#end -#end -#end -#if($table.sub) - <el-divider content-position="center">${subTable.functionName}信息</el-divider> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button type="primary" icon="Plus" @click="handleAdd${subClassName}">添加</el-button> - </el-col> - <el-col :span="1.5"> - <el-button type="danger" icon="Delete" @click="handleDelete${subClassName}">删除</el-button> - </el-col> - </el-row> - <el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}"> - <el-table-column type="selection" width="50" align="center" /> - <el-table-column label="序号" align="center" prop="index" width="50"/> -#foreach($column in $subTable.columns) -#set($javaField=$column.javaField) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if($column.pk || $javaField == ${subTableFkclassName}) -#elseif($column.list && $column.htmlType == "input") - <el-table-column label="$comment" prop="${javaField}" width="150"> - <template #default="scope"> - <el-input v-model="scope.row.$javaField" placeholder="请输入$comment" /> - </template> - </el-table-column> -#elseif($column.list && $column.htmlType == "datetime") - <el-table-column label="$comment" prop="${javaField}" width="240"> - <template #default="scope"> - <el-date-picker clearable - v-model="scope.row.$javaField" - type="date" - value-format="YYYY-MM-DD" - placeholder="请选择$comment"> - </el-date-picker> - </template> - </el-table-column> -#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" != $column.dictType) - <el-table-column label="$comment" prop="${javaField}" width="150"> - <template #default="scope"> - <el-select v-model="scope.row.$javaField" placeholder="请选择$comment"> - <el-option - v-for="dict in $column.dictType" - :key="dict.value" - :label="dict.label" - :value="dict.value" - ></el-option> - </el-select> - </template> - </el-table-column> -#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" == $column.dictType) - <el-table-column label="$comment" prop="${javaField}" width="150"> - <template #default="scope"> - <el-select v-model="scope.row.$javaField" placeholder="请选择$comment"> - <el-option label="请选择字典生成" value="" /> - </el-select> - </template> - </el-table-column> -#end -#end - </el-table> -#end - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> -</template> - -<script setup name="${BusinessName}"> -import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; - -const { proxy } = getCurrentInstance(); -#if(${dicts} != '') -#set($dictsNoSymbol=$dicts.replace("'", "")) -const { ${dictsNoSymbol} } = proxy.useDict(${dicts}); -#end - -const ${businessName}List = ref([]); -#if($table.sub) -const ${subclassName}List = ref([]); -#end -const open = ref(false); -const loading = ref(true); -const showSearch = ref(true); -const ids = ref([]); -#if($table.sub) -const checked${subClassName} = ref([]); -#end -const single = ref(true); -const multiple = ref(true); -const total = ref(0); -const title = ref(""); -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -const daterange${AttrName} = ref([]); -#end -#end - -const data = reactive({ - form: {}, - queryParams: { - pageNum: 1, - pageSize: 10, - #foreach ($column in $columns) -#if($column.query) - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }, - rules: { - #foreach ($column in $columns) -#if($column.required) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end - $column.javaField: [ - { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end } - ]#if($foreach.count != $columns.size()),#end -#end -#end - } -}); - -const { queryParams, form, rules } = toRefs(data); - -/** 查询${functionName}列表 */ -function getList() { - loading.value = true; -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") - queryParams.value.params = {}; -#break -#end -#end -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - if (null != daterange${AttrName} && '' != daterange${AttrName}) { - queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0]; - queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1]; - } -#end -#end - list${BusinessName}(queryParams.value).then(response => { - ${businessName}List.value = response.rows; - total.value = response.total; - loading.value = false; - }); -} - -// 取消按钮 -function cancel() { - open.value = false; - reset(); -} - -// 表单重置 -function reset() { - form.value = { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - $column.javaField: []#if($foreach.count != $columns.size()),#end -#else - $column.javaField: null#if($foreach.count != $columns.size()),#end -#end -#end - }; -#if($table.sub) - ${subclassName}List.value = []; -#end - proxy.resetForm("${businessName}Ref"); -} - -/** 搜索按钮操作 */ -function handleQuery() { - queryParams.value.pageNum = 1; - getList(); -} - -/** 重置按钮操作 */ -function resetQuery() { -#foreach ($column in $columns) -#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - daterange${AttrName}.value = []; -#end -#end - proxy.resetForm("queryRef"); - handleQuery(); -} - -// 多选框选中数据 -function handleSelectionChange(selection) { - ids.value = selection.map(item => item.${pkColumn.javaField}); - single.value = selection.length != 1; - multiple.value = !selection.length; -} - -/** 新增按钮操作 */ -function handleAdd() { - reset(); - open.value = true; - title.value = "添加${functionName}"; -} - -/** 修改按钮操作 */ -function handleUpdate(row) { - reset(); - const _${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value - get${BusinessName}(_${pkColumn.javaField}).then(response => { - form.value = response.data; -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - form.value.$column.javaField = form.value.${column.javaField}.split(","); -#end -#end -#if($table.sub) - ${subclassName}List.value = response.data.${subclassName}List; -#end - open.value = true; - title.value = "修改${functionName}"; - }); -} - -/** 提交按钮 */ -function submitForm() { - proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => { - if (valid) { -#foreach ($column in $columns) -#if($column.htmlType == "checkbox") - form.value.$column.javaField = form.value.${column.javaField}.join(","); -#end -#end -#if($table.sub) - form.value.${subclassName}List = ${subclassName}List.value; -#end - if (form.value.${pkColumn.javaField} != null) { - update${BusinessName}(form.value).then(response => { - proxy.#[[$modal]]#.msgSuccess("修改成功"); - open.value = false; - getList(); - }); - } else { - add${BusinessName}(form.value).then(response => { - proxy.#[[$modal]]#.msgSuccess("新增成功"); - open.value = false; - getList(); - }); - } - } - }); -} - -/** 删除按钮操作 */ -function handleDelete(row) { - const _${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value; - proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').then(function() { - return del${BusinessName}(_${pkColumn.javaField}s); - }).then(() => { - getList(); - proxy.#[[$modal]]#.msgSuccess("删除成功"); - }).catch(() => {}); -} - -#if($table.sub) -/** ${subTable.functionName}序号 */ -function row${subClassName}Index({ row, rowIndex }) { - row.index = rowIndex + 1; -} - -/** ${subTable.functionName}添加按钮操作 */ -function handleAdd${subClassName}() { - let obj = {}; -#foreach($column in $subTable.columns) -#if($column.pk || $column.javaField == ${subTableFkclassName}) -#elseif($column.list && "" != $javaField) - obj.$column.javaField = ""; -#end -#end - ${subclassName}List.value.push(obj); -} - -/** ${subTable.functionName}删除按钮操作 */ -function handleDelete${subClassName}() { - if (checked${subClassName}.value.length == 0) { - proxy.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据"); - } else { - const ${subclassName}s = ${subclassName}List.value; - const checked${subClassName}s = checked${subClassName}.value; - ${subclassName}List.value = ${subclassName}s.filter(function(item) { - return checked${subClassName}s.indexOf(item.index) == -1 - }); - } -} - -/** 复选框选中数据 */ -function handle${subClassName}SelectionChange(selection) { - checked${subClassName}.value = selection.map(item => item.index) -} - -#end -/** 导出按钮操作 */ -function handleExport() { - proxy.download('${moduleName}/${businessName}/export', { - ...queryParams.value - }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`) -} - -getList(); -</script> diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/readme.txt b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/readme.txt deleted file mode 100644 index 10362d6..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/readme.txt +++ /dev/null @@ -1 +0,0 @@ -���ʹ�õ���RuoYi-Cloud-Vue3ǰ�ˣ���ô��Ҫ����һ�´�Ŀ¼��ģ��index.vue.vm��index-tree.vue.vm�ļ����ϼ�vueĿ¼�� \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm deleted file mode 100644 index 0ceb3d8..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm +++ /dev/null @@ -1,135 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> - - <resultMap type="${ClassName}" id="${ClassName}Result"> -#foreach ($column in $columns) - <result property="${column.javaField}" column="${column.columnName}" /> -#end - </resultMap> -#if($table.sub) - - <resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result"> - <collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" /> - </resultMap> - - <resultMap type="${subClassName}" id="${subClassName}Result"> -#foreach ($column in $subTable.columns) - <result property="${column.javaField}" column="sub_${column.columnName}" /> -#end - </resultMap> -#end - - <sql id="select${ClassName}Vo"> - select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName} - </sql> - - <select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result"> - <include refid="select${ClassName}Vo"/> - <where> -#foreach($column in $columns) -#set($queryType=$column.queryType) -#set($javaField=$column.javaField) -#set($javaType=$column.javaType) -#set($columnName=$column.columnName) -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#if($column.query) -#if($column.queryType == "EQ") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if> -#elseif($queryType == "NE") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if> -#elseif($queryType == "GT") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName > #{$javaField}</if> -#elseif($queryType == "GTE") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if> -#elseif($queryType == "LT") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if> -#elseif($queryType == "LTE") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$javaField}</if> -#elseif($queryType == "LIKE") - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if> -#elseif($queryType == "BETWEEN") - <if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if> -#end -#end -#end - </where> - </select> - - <select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end"> -#if($table.crud || $table.tree) - <include refid="select${ClassName}Vo"/> - where ${pkColumn.columnName} = #{${pkColumn.javaField}} -#elseif($table.sub) - select#foreach($column in $columns) a.$column.columnName#if($foreach.count != $columns.size()),#end#end, - #foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($foreach.count != $subTable.columns.size()),#end#end - - from ${tableName} a - left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName} - where a.${pkColumn.columnName} = #{${pkColumn.javaField}} -#end - </select> - - <insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end> - insert into ${tableName} - <trim prefix="(" suffix=")" suffixOverrides=","> -#foreach($column in $columns) -#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) - <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if> -#end -#end - </trim> - <trim prefix="values (" suffix=")" suffixOverrides=","> -#foreach($column in $columns) -#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) - <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if> -#end -#end - </trim> - </insert> - - <update id="update${ClassName}" parameterType="${ClassName}"> - update ${tableName} - <trim prefix="SET" suffixOverrides=","> -#foreach($column in $columns) -#if($column.columnName != $pkColumn.columnName) - <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if> -#end -#end - </trim> - where ${pkColumn.columnName} = #{${pkColumn.javaField}} - </update> - - <delete id="delete${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}"> - delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}} - </delete> - - <delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String"> - delete from ${tableName} where ${pkColumn.columnName} in - <foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")"> - #{${pkColumn.javaField}} - </foreach> - </delete> -#if($table.sub) - - <delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String"> - delete from ${subTableName} where ${subTableFkName} in - <foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")"> - #{${subTableFkclassName}} - </foreach> - </delete> - - <delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}"> - delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}} - </delete> - - <insert id="batch${subClassName}"> - insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values - <foreach item="item" index="index" collection="list" separator=","> - (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end) - </foreach> - </insert> -#end -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-goods/pom.xml b/ruoyi-modules/ruoyi-goods/pom.xml index 6128e42..33f3f85 100644 --- a/ruoyi-modules/ruoyi-goods/pom.xml +++ b/ruoyi-modules/ruoyi-goods/pom.xml @@ -85,7 +85,7 @@ </dependency> - + <!-- MYBATIS PLUS--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/ruoyi-job/pom.xml deleted file mode 100644 index 0cb987b..0000000 --- a/ruoyi-modules/ruoyi-job/pom.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-modules</artifactId> - <version>3.6.2</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-modules-job</artifactId> - - <description> - ruoyi-modules-job定时任务 - </description> - - <dependencies> - - <!-- SpringCloud Alibaba Nacos --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> - </dependency> - - <!-- SpringCloud Alibaba Nacos Config --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> - </dependency> - - <!-- SpringCloud Alibaba Sentinel --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> - </dependency> - - <!-- SpringBoot Actuator --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - - <!-- Swagger UI --> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger-ui</artifactId> - <version>${swagger.fox.version}</version> - </dependency> - - - <!-- Quartz --> - <dependency> - <groupId>org.quartz-scheduler</groupId> - <artifactId>quartz</artifactId> - <exclusions> - <exclusion> - <groupId>com.mchange</groupId> - <artifactId>c3p0</artifactId> - </exclusion> - </exclusions> - </dependency> - - <!-- Mysql Connector --> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - </dependency> - - <!-- RuoYi Common Log --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-log</artifactId> - </dependency> - - <!-- RuoYi Common Swagger --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-swagger</artifactId> - </dependency> - - </dependencies> - - <build> - <finalName>${project.artifactId}</finalName> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>repackage</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - -</project> diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java deleted file mode 100644 index 8dba171..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.job; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import com.ruoyi.common.security.annotation.EnableCustomConfig; -import com.ruoyi.common.security.annotation.EnableRyFeignClients; -import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; - -/** - * 定时任务 - * - * @author jqs - */ -@EnableCustomConfig -@EnableCustomSwagger2 -@EnableRyFeignClients -@SpringBootApplication -public class RuoYiJobApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiJobApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 定时任务模块启动成功 ლ(´ڡ`ლ)゙ \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java deleted file mode 100644 index 9ccb1da..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java +++ /dev/null @@ -1,57 +0,0 @@ -//package com.ruoyi.job.config; -// -//import java.util.Properties; -//import javax.sql.DataSource; -//import org.springframework.context.annotation.Bean; -//import org.springframework.context.annotation.Configuration; -//import org.springframework.scheduling.quartz.SchedulerFactoryBean; -// -///** -// * 定时任务配置(单机部署建议删除此类和qrtz数据库表,默认走内存会最高效) -// * -// * @author jqs -// */ -//@Configuration -//public class ScheduleConfig -//{ -// @Bean -// public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) -// { -// SchedulerFactoryBean factory = new SchedulerFactoryBean(); -// factory.setDataSource(dataSource); -// -// // quartz参数 -// Properties prop = new Properties(); -// prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler"); -// prop.put("org.quartz.scheduler.instanceId", "AUTO"); -// // 线程池配置 -// prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); -// prop.put("org.quartz.threadPool.threadCount", "20"); -// prop.put("org.quartz.threadPool.threadPriority", "5"); -// // JobStore配置 -// prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore"); -// // 集群配置 -// prop.put("org.quartz.jobStore.isClustered", "true"); -// prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000"); -// prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1"); -// prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true"); -// -// // sqlserver 启用 -// // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?"); -// prop.put("org.quartz.jobStore.misfireThreshold", "12000"); -// prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); -// factory.setQuartzProperties(prop); -// -// factory.setSchedulerName("RuoyiScheduler"); -// // 延时启动 -// factory.setStartupDelay(1); -// factory.setApplicationContextSchedulerContextKey("applicationContextKey"); -// // 可选,QuartzScheduler -// // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 -// factory.setOverwriteExistingJobs(true); -// // 设置自动启动,默认为true -// factory.setAutoStartup(true); -// -// return factory; -// } -//} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java deleted file mode 100644 index aa7a0a7..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.ruoyi.job.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.quartz.SchedulerException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.exception.job.TaskException; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.utils.poi.ExcelUtil; -import com.ruoyi.common.core.web.controller.BaseController; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.page.TableDataInfo; -import com.ruoyi.common.log.annotation.Log; -import com.ruoyi.common.log.enums.BusinessType; -import com.ruoyi.common.security.annotation.RequiresPermissions; -import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.job.domain.SysJob; -import com.ruoyi.job.service.ISysJobService; -import com.ruoyi.job.util.CronUtils; -import com.ruoyi.job.util.ScheduleUtils; - -/** - * 调度任务信息操作处理 - * - * @author jqs - */ -@RestController -@RequestMapping("/job") -public class SysJobController extends BaseController -{ - @Autowired - private ISysJobService jobService; - - /** - * 查询定时任务列表 - */ - @RequiresPermissions("monitor:job:list") - @GetMapping("/list") - public TableDataInfo list(SysJob sysJob) - { - startPage(); - List<SysJob> list = jobService.selectJobList(sysJob); - return getDataTable(list); - } - - /** - * 导出定时任务列表 - */ - @RequiresPermissions("monitor:job:export") - @Log(title = "定时任务", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, SysJob sysJob) - { - List<SysJob> list = jobService.selectJobList(sysJob); - ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class); - util.exportExcel(response, list, "定时任务"); - } - - /** - * 获取定时任务详细信息 - */ - @RequiresPermissions("monitor:job:query") - @GetMapping(value = "/{jobId}") - public AjaxResult getInfo(@PathVariable("jobId") Long jobId) - { - return success(jobService.selectJobById(jobId)); - } - - /** - * 新增定时任务 - */ - @RequiresPermissions("monitor:job:add") - @Log(title = "定时任务", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException - { - if (!CronUtils.isValid(job.getCronExpression())) - { - return error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确"); - } - else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) - { - return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) - { - return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) - { - return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) - { - return error("新增任务'" + job.getJobName() + "'失败,目标字符串存在违规"); - } - else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) - { - return error("新增任务'" + job.getJobName() + "'失败,目标字符串不在白名单内"); - } - job.setCreateBy(SecurityUtils.getUsername()); - return toAjax(jobService.insertJob(job)); - } - - /** - * 修改定时任务 - */ - @RequiresPermissions("monitor:job:edit") - @Log(title = "定时任务", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException - { - if (!CronUtils.isValid(job.getCronExpression())) - { - return error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确"); - } - else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) - { - return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) - { - return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) - { - return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) - { - return error("修改任务'" + job.getJobName() + "'失败,目标字符串存在违规"); - } - else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) - { - return error("修改任务'" + job.getJobName() + "'失败,目标字符串不在白名单内"); - } - job.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(jobService.updateJob(job)); - } - - /** - * 定时任务状态修改 - */ - @RequiresPermissions("monitor:job:changeStatus") - @Log(title = "定时任务", businessType = BusinessType.UPDATE) - @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException - { - SysJob newJob = jobService.selectJobById(job.getJobId()); - newJob.setStatus(job.getStatus()); - return toAjax(jobService.changeStatus(newJob)); - } - - /** - * 定时任务立即执行一次 - */ - @RequiresPermissions("monitor:job:changeStatus") - @Log(title = "定时任务", businessType = BusinessType.UPDATE) - @PutMapping("/run") - public AjaxResult run(@RequestBody SysJob job) throws SchedulerException - { - boolean result = jobService.run(job); - return result ? success() : error("任务不存在或已过期!"); - } - - /** - * 删除定时任务 - */ - @RequiresPermissions("monitor:job:remove") - @Log(title = "定时任务", businessType = BusinessType.DELETE) - @DeleteMapping("/{jobIds}") - public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException - { - jobService.deleteJobByIds(jobIds); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java deleted file mode 100644 index 00ca62c..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.ruoyi.job.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.core.utils.poi.ExcelUtil; -import com.ruoyi.common.core.web.controller.BaseController; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.page.TableDataInfo; -import com.ruoyi.common.log.annotation.Log; -import com.ruoyi.common.log.enums.BusinessType; -import com.ruoyi.common.security.annotation.RequiresPermissions; -import com.ruoyi.job.domain.SysJobLog; -import com.ruoyi.job.service.ISysJobLogService; - -/** - * 调度日志操作处理 - * - * @author jqs - */ -@RestController -@RequestMapping("/job/log") -public class SysJobLogController extends BaseController -{ - @Autowired - private ISysJobLogService jobLogService; - - /** - * 查询定时任务调度日志列表 - */ - @RequiresPermissions("monitor:job:list") - @GetMapping("/list") - public TableDataInfo list(SysJobLog sysJobLog) - { - startPage(); - List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); - return getDataTable(list); - } - - /** - * 导出定时任务调度日志列表 - */ - @RequiresPermissions("monitor:job:export") - @Log(title = "任务调度日志", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, SysJobLog sysJobLog) - { - List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); - ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class); - util.exportExcel(response, list, "调度日志"); - } - - /** - * 根据调度编号获取详细信息 - */ - @RequiresPermissions("monitor:job:query") - @GetMapping(value = "/{jobLogId}") - public AjaxResult getInfo(@PathVariable Long jobLogId) - { - return success(jobLogService.selectJobLogById(jobLogId)); - } - - /** - * 删除定时任务调度日志 - */ - @RequiresPermissions("monitor:job:remove") - @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE) - @DeleteMapping("/{jobLogIds}") - public AjaxResult remove(@PathVariable Long[] jobLogIds) - { - return toAjax(jobLogService.deleteJobLogByIds(jobLogIds)); - } - - /** - * 清空定时任务调度日志 - */ - @RequiresPermissions("monitor:job:remove") - @Log(title = "调度日志", businessType = BusinessType.CLEAN) - @DeleteMapping("/clean") - public AjaxResult clean() - { - jobLogService.cleanJobLog(); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java deleted file mode 100644 index 38bbc3f..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.ruoyi.job.domain; - -import java.util.Date; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.constant.ScheduleConstants; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.web.domain.BaseEntity; -import com.ruoyi.job.util.CronUtils; - -/** - * 定时任务调度表 sys_job - * - * @author jqs - */ -public class SysJob extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 任务ID */ - @Excel(name = "任务序号", cellType = ColumnType.NUMERIC) - private Long jobId; - - /** 任务名称 */ - @Excel(name = "任务名称") - private String jobName; - - /** 任务组名 */ - @Excel(name = "任务组名") - private String jobGroup; - - /** 调用目标字符串 */ - @Excel(name = "调用目标字符串") - private String invokeTarget; - - /** cron执行表达式 */ - @Excel(name = "执行表达式 ") - private String cronExpression; - - /** cron计划策略 */ - @Excel(name = "计划策略 ", readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行") - private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT; - - /** 是否并发执行(0允许 1禁止) */ - @Excel(name = "并发执行", readConverterExp = "0=允许,1=禁止") - private String concurrent; - - /** 任务状态(0正常 1暂停) */ - @Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停") - private String status; - - public Long getJobId() - { - return jobId; - } - - public void setJobId(Long jobId) - { - this.jobId = jobId; - } - - @NotBlank(message = "任务名称不能为空") - @Size(min = 0, max = 64, message = "任务名称不能超过64个字符") - public String getJobName() - { - return jobName; - } - - public void setJobName(String jobName) - { - this.jobName = jobName; - } - - public String getJobGroup() - { - return jobGroup; - } - - public void setJobGroup(String jobGroup) - { - this.jobGroup = jobGroup; - } - - @NotBlank(message = "调用目标字符串不能为空") - @Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符") - public String getInvokeTarget() - { - return invokeTarget; - } - - public void setInvokeTarget(String invokeTarget) - { - this.invokeTarget = invokeTarget; - } - - @NotBlank(message = "Cron执行表达式不能为空") - @Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符") - public String getCronExpression() - { - return cronExpression; - } - - public void setCronExpression(String cronExpression) - { - this.cronExpression = cronExpression; - } - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - public Date getNextValidTime() - { - if (StringUtils.isNotEmpty(cronExpression)) - { - return CronUtils.getNextExecution(cronExpression); - } - return null; - } - - public String getMisfirePolicy() - { - return misfirePolicy; - } - - public void setMisfirePolicy(String misfirePolicy) - { - this.misfirePolicy = misfirePolicy; - } - - public String getConcurrent() - { - return concurrent; - } - - public void setConcurrent(String concurrent) - { - this.concurrent = concurrent; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("jobId", getJobId()) - .append("jobName", getJobName()) - .append("jobGroup", getJobGroup()) - .append("cronExpression", getCronExpression()) - .append("nextValidTime", getNextValidTime()) - .append("misfirePolicy", getMisfirePolicy()) - .append("concurrent", getConcurrent()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java deleted file mode 100644 index 67f72c2..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.ruoyi.job.domain; - -import java.util.Date; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 定时任务调度日志表 sys_job_log - * - * @author jqs - */ -public class SysJobLog extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** ID */ - @Excel(name = "日志序号") - private Long jobLogId; - - /** 任务名称 */ - @Excel(name = "任务名称") - private String jobName; - - /** 任务组名 */ - @Excel(name = "任务组名") - private String jobGroup; - - /** 调用目标字符串 */ - @Excel(name = "调用目标字符串") - private String invokeTarget; - - /** 日志信息 */ - @Excel(name = "日志信息") - private String jobMessage; - - /** 执行状态(0正常 1失败) */ - @Excel(name = "执行状态", readConverterExp = "0=正常,1=失败") - private String status; - - /** 异常信息 */ - @Excel(name = "异常信息") - private String exceptionInfo; - - /** 开始时间 */ - private Date startTime; - - /** 停止时间 */ - private Date stopTime; - - public Long getJobLogId() - { - return jobLogId; - } - - public void setJobLogId(Long jobLogId) - { - this.jobLogId = jobLogId; - } - - public String getJobName() - { - return jobName; - } - - public void setJobName(String jobName) - { - this.jobName = jobName; - } - - public String getJobGroup() - { - return jobGroup; - } - - public void setJobGroup(String jobGroup) - { - this.jobGroup = jobGroup; - } - - public String getInvokeTarget() - { - return invokeTarget; - } - - public void setInvokeTarget(String invokeTarget) - { - this.invokeTarget = invokeTarget; - } - - public String getJobMessage() - { - return jobMessage; - } - - public void setJobMessage(String jobMessage) - { - this.jobMessage = jobMessage; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getExceptionInfo() - { - return exceptionInfo; - } - - public void setExceptionInfo(String exceptionInfo) - { - this.exceptionInfo = exceptionInfo; - } - - public Date getStartTime() - { - return startTime; - } - - public void setStartTime(Date startTime) - { - this.startTime = startTime; - } - - public Date getStopTime() - { - return stopTime; - } - - public void setStopTime(Date stopTime) - { - this.stopTime = stopTime; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("jobLogId", getJobLogId()) - .append("jobName", getJobName()) - .append("jobGroup", getJobGroup()) - .append("jobMessage", getJobMessage()) - .append("status", getStatus()) - .append("exceptionInfo", getExceptionInfo()) - .append("startTime", getStartTime()) - .append("stopTime", getStopTime()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java deleted file mode 100644 index 1b56f97..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.ruoyi.job.mapper; - -import java.util.List; -import com.ruoyi.job.domain.SysJobLog; - -/** - * 调度任务日志信息 数据层 - * - * @author jqs - */ -public interface SysJobLogMapper -{ - /** - * 获取quartz调度器日志的计划任务 - * - * @param jobLog 调度日志信息 - * @return 调度任务日志集合 - */ - public List<SysJobLog> selectJobLogList(SysJobLog jobLog); - - /** - * 查询所有调度任务日志 - * - * @return 调度任务日志列表 - */ - public List<SysJobLog> selectJobLogAll(); - - /** - * 通过调度任务日志ID查询调度信息 - * - * @param jobLogId 调度任务日志ID - * @return 调度任务日志对象信息 - */ - public SysJobLog selectJobLogById(Long jobLogId); - - /** - * 新增任务日志 - * - * @param jobLog 调度日志信息 - * @return 结果 - */ - public int insertJobLog(SysJobLog jobLog); - - /** - * 批量删除调度日志信息 - * - * @param logIds 需要删除的数据ID - * @return 结果 - */ - public int deleteJobLogByIds(Long[] logIds); - - /** - * 删除任务日志 - * - * @param jobId 调度日志ID - * @return 结果 - */ - public int deleteJobLogById(Long jobId); - - /** - * 清空任务日志 - */ - public void cleanJobLog(); -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java deleted file mode 100644 index b7222e9..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.ruoyi.job.mapper; - -import java.util.List; -import com.ruoyi.job.domain.SysJob; - -/** - * 调度任务信息 数据层 - * - * @author jqs - */ -public interface SysJobMapper -{ - /** - * 查询调度任务日志集合 - * - * @param job 调度信息 - * @return 操作日志集合 - */ - public List<SysJob> selectJobList(SysJob job); - - /** - * 查询所有调度任务 - * - * @return 调度任务列表 - */ - public List<SysJob> selectJobAll(); - - /** - * 通过调度ID查询调度任务信息 - * - * @param jobId 调度ID - * @return 角色对象信息 - */ - public SysJob selectJobById(Long jobId); - - /** - * 通过调度ID删除调度任务信息 - * - * @param jobId 调度ID - * @return 结果 - */ - public int deleteJobById(Long jobId); - - /** - * 批量删除调度任务信息 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - public int deleteJobByIds(Long[] ids); - - /** - * 修改调度任务信息 - * - * @param job 调度任务信息 - * @return 结果 - */ - public int updateJob(SysJob job); - - /** - * 新增调度任务信息 - * - * @param job 调度任务信息 - * @return 结果 - */ - public int insertJob(SysJob job); -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java deleted file mode 100644 index 332b592..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import com.ruoyi.job.domain.SysJobLog; - -/** - * 定时任务调度日志信息信息 服务层 - * - * @author jqs - */ -public interface ISysJobLogService -{ - /** - * 获取quartz调度器日志的计划任务 - * - * @param jobLog 调度日志信息 - * @return 调度任务日志集合 - */ - public List<SysJobLog> selectJobLogList(SysJobLog jobLog); - - /** - * 通过调度任务日志ID查询调度信息 - * - * @param jobLogId 调度任务日志ID - * @return 调度任务日志对象信息 - */ - public SysJobLog selectJobLogById(Long jobLogId); - - /** - * 新增任务日志 - * - * @param jobLog 调度日志信息 - */ - public void addJobLog(SysJobLog jobLog); - - /** - * 批量删除调度日志信息 - * - * @param logIds 需要删除的日志ID - * @return 结果 - */ - public int deleteJobLogByIds(Long[] logIds); - - /** - * 删除任务日志 - * - * @param jobId 调度日志ID - * @return 结果 - */ - public int deleteJobLogById(Long jobId); - - /** - * 清空任务日志 - */ - public void cleanJobLog(); -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java deleted file mode 100644 index 03adb50..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import org.quartz.SchedulerException; -import com.ruoyi.common.core.exception.job.TaskException; -import com.ruoyi.job.domain.SysJob; - -/** - * 定时任务调度信息信息 服务层 - * - * @author jqs - */ -public interface ISysJobService -{ - /** - * 获取quartz调度器的计划任务 - * - * @param job 调度信息 - * @return 调度任务集合 - */ - public List<SysJob> selectJobList(SysJob job); - - /** - * 通过调度任务ID查询调度信息 - * - * @param jobId 调度任务ID - * @return 调度任务对象信息 - */ - public SysJob selectJobById(Long jobId); - - /** - * 暂停任务 - * - * @param job 调度信息 - * @return 结果 - */ - public int pauseJob(SysJob job) throws SchedulerException; - - /** - * 恢复任务 - * - * @param job 调度信息 - * @return 结果 - */ - public int resumeJob(SysJob job) throws SchedulerException; - - /** - * 删除任务后,所对应的trigger也将被删除 - * - * @param job 调度信息 - * @return 结果 - */ - public int deleteJob(SysJob job) throws SchedulerException; - - /** - * 批量删除调度信息 - * - * @param jobIds 需要删除的任务ID - * @return 结果 - */ - public void deleteJobByIds(Long[] jobIds) throws SchedulerException; - - /** - * 任务调度状态修改 - * - * @param job 调度信息 - * @return 结果 - */ - public int changeStatus(SysJob job) throws SchedulerException; - - /** - * 立即运行任务 - * - * @param job 调度信息 - * @return 结果 - */ - public boolean run(SysJob job) throws SchedulerException; - - /** - * 新增任务 - * - * @param job 调度信息 - * @return 结果 - */ - public int insertJob(SysJob job) throws SchedulerException, TaskException; - - /** - * 更新任务 - * - * @param job 调度信息 - * @return 结果 - */ - public int updateJob(SysJob job) throws SchedulerException, TaskException; - - /** - * 校验cron表达式是否有效 - * - * @param cronExpression 表达式 - * @return 结果 - */ - public boolean checkCronExpressionIsValid(String cronExpression); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java deleted file mode 100644 index ade3c48..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.job.domain.SysJobLog; -import com.ruoyi.job.mapper.SysJobLogMapper; - -/** - * 定时任务调度日志信息 服务层 - * - * @author jqs - */ -@Service -public class SysJobLogServiceImpl implements ISysJobLogService -{ - @Autowired - private SysJobLogMapper jobLogMapper; - - /** - * 获取quartz调度器日志的计划任务 - * - * @param jobLog 调度日志信息 - * @return 调度任务日志集合 - */ - @Override - public List<SysJobLog> selectJobLogList(SysJobLog jobLog) - { - return jobLogMapper.selectJobLogList(jobLog); - } - - /** - * 通过调度任务日志ID查询调度信息 - * - * @param jobLogId 调度任务日志ID - * @return 调度任务日志对象信息 - */ - @Override - public SysJobLog selectJobLogById(Long jobLogId) - { - return jobLogMapper.selectJobLogById(jobLogId); - } - - /** - * 新增任务日志 - * - * @param jobLog 调度日志信息 - */ - @Override - public void addJobLog(SysJobLog jobLog) - { - jobLogMapper.insertJobLog(jobLog); - } - - /** - * 批量删除调度日志信息 - * - * @param logIds 需要删除的数据ID - * @return 结果 - */ - @Override - public int deleteJobLogByIds(Long[] logIds) - { - return jobLogMapper.deleteJobLogByIds(logIds); - } - - /** - * 删除任务日志 - * - * @param jobId 调度日志ID - */ - @Override - public int deleteJobLogById(Long jobId) - { - return jobLogMapper.deleteJobLogById(jobId); - } - - /** - * 清空任务日志 - */ - @Override - public void cleanJobLog() - { - jobLogMapper.cleanJobLog(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java deleted file mode 100644 index 05f6378..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java +++ /dev/null @@ -1,260 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import javax.annotation.PostConstruct; -import org.quartz.JobDataMap; -import org.quartz.JobKey; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.ruoyi.common.core.constant.ScheduleConstants; -import com.ruoyi.common.core.exception.job.TaskException; -import com.ruoyi.job.domain.SysJob; -import com.ruoyi.job.mapper.SysJobMapper; -import com.ruoyi.job.util.CronUtils; -import com.ruoyi.job.util.ScheduleUtils; - -/** - * 定时任务调度信息 服务层 - * - * @author jqs - */ -@Service -public class SysJobServiceImpl implements ISysJobService -{ - @Autowired - private Scheduler scheduler; - - @Autowired - private SysJobMapper jobMapper; - - /** - * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据) - */ - @PostConstruct - public void init() throws SchedulerException, TaskException - { - scheduler.clear(); - List<SysJob> jobList = jobMapper.selectJobAll(); - for (SysJob job : jobList) - { - ScheduleUtils.createScheduleJob(scheduler, job); - } - } - - /** - * 获取quartz调度器的计划任务列表 - * - * @param job 调度信息 - * @return - */ - @Override - public List<SysJob> selectJobList(SysJob job) - { - return jobMapper.selectJobList(job); - } - - /** - * 通过调度任务ID查询调度信息 - * - * @param jobId 调度任务ID - * @return 调度任务对象信息 - */ - @Override - public SysJob selectJobById(Long jobId) - { - return jobMapper.selectJobById(jobId); - } - - /** - * 暂停任务 - * - * @param job 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int pauseJob(SysJob job) throws SchedulerException - { - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); - int rows = jobMapper.updateJob(job); - if (rows > 0) - { - scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - return rows; - } - - /** - * 恢复任务 - * - * @param job 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int resumeJob(SysJob job) throws SchedulerException - { - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - job.setStatus(ScheduleConstants.Status.NORMAL.getValue()); - int rows = jobMapper.updateJob(job); - if (rows > 0) - { - scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - return rows; - } - - /** - * 删除任务后,所对应的trigger也将被删除 - * - * @param job 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteJob(SysJob job) throws SchedulerException - { - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - int rows = jobMapper.deleteJobById(jobId); - if (rows > 0) - { - scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - return rows; - } - - /** - * 批量删除调度信息 - * - * @param jobIds 需要删除的任务ID - * @return 结果 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteJobByIds(Long[] jobIds) throws SchedulerException - { - for (Long jobId : jobIds) - { - SysJob job = jobMapper.selectJobById(jobId); - deleteJob(job); - } - } - - /** - * 任务调度状态修改 - * - * @param job 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int changeStatus(SysJob job) throws SchedulerException - { - int rows = 0; - String status = job.getStatus(); - if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) - { - rows = resumeJob(job); - } - else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) - { - rows = pauseJob(job); - } - return rows; - } - - /** - * 立即运行任务 - * - * @param job 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public boolean run(SysJob job) throws SchedulerException - { - boolean result = false; - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - SysJob properties = selectJobById(job.getJobId()); - // 参数 - JobDataMap dataMap = new JobDataMap(); - dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties); - JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); - if (scheduler.checkExists(jobKey)) - { - result = true; - scheduler.triggerJob(jobKey, dataMap); - } - return result; - } - - /** - * 新增任务 - * - * @param job 调度信息 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int insertJob(SysJob job) throws SchedulerException, TaskException - { - job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); - int rows = jobMapper.insertJob(job); - if (rows > 0) - { - ScheduleUtils.createScheduleJob(scheduler, job); - } - return rows; - } - - /** - * 更新任务的时间表达式 - * - * @param job 调度信息 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int updateJob(SysJob job) throws SchedulerException, TaskException - { - SysJob properties = selectJobById(job.getJobId()); - int rows = jobMapper.updateJob(job); - if (rows > 0) - { - updateSchedulerJob(job, properties.getJobGroup()); - } - return rows; - } - - /** - * 更新任务 - * - * @param job 任务对象 - * @param jobGroup 任务组名 - */ - public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException - { - Long jobId = job.getJobId(); - // 判断是否存在 - JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); - if (scheduler.checkExists(jobKey)) - { - // 防止创建时存在数据问题 先移除,然后在执行创建操作 - scheduler.deleteJob(jobKey); - } - ScheduleUtils.createScheduleJob(scheduler, job); - } - - /** - * 校验cron表达式是否有效 - * - * @param cronExpression 表达式 - * @return 结果 - */ - @Override - public boolean checkCronExpressionIsValid(String cronExpression) - { - return CronUtils.isValid(cronExpression); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java deleted file mode 100644 index 286a112..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ruoyi.job.task; - -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 定时任务调度测试 - * - * @author jqs - */ -@Component("ryTask") -public class RyTask -{ - public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) - { - System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); - } - - public void ryParams(String params) - { - System.out.println("执行有参方法:" + params); - } - - public void ryNoParams() - { - System.out.println("执行无参方法"); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java deleted file mode 100644 index f635c53..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.ruoyi.job.util; - -import java.util.Date; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.ruoyi.common.core.constant.ScheduleConstants; -import com.ruoyi.common.core.utils.ExceptionUtil; -import com.ruoyi.common.core.utils.SpringUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.utils.bean.BeanUtils; -import com.ruoyi.job.domain.SysJob; -import com.ruoyi.job.domain.SysJobLog; -import com.ruoyi.job.service.ISysJobLogService; - -/** - * 抽象quartz调用 - * - * @author jqs - */ -public abstract class AbstractQuartzJob implements Job -{ - private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class); - - /** - * 线程本地变量 - */ - private static ThreadLocal<Date> threadLocal = new ThreadLocal<>(); - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException - { - SysJob sysJob = new SysJob(); - BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES)); - try - { - before(context, sysJob); - if (sysJob != null) - { - doExecute(context, sysJob); - } - after(context, sysJob, null); - } - catch (Exception e) - { - log.error("任务执行异常 - :", e); - after(context, sysJob, e); - } - } - - /** - * 执行前 - * - * @param context 工作执行上下文对象 - * @param sysJob 系统计划任务 - */ - protected void before(JobExecutionContext context, SysJob sysJob) - { - threadLocal.set(new Date()); - } - - /** - * 执行后 - * - * @param context 工作执行上下文对象 - * @param sysJob 系统计划任务 - */ - protected void after(JobExecutionContext context, SysJob sysJob, Exception e) - { - Date startTime = threadLocal.get(); - threadLocal.remove(); - - final SysJobLog sysJobLog = new SysJobLog(); - sysJobLog.setJobName(sysJob.getJobName()); - sysJobLog.setJobGroup(sysJob.getJobGroup()); - sysJobLog.setInvokeTarget(sysJob.getInvokeTarget()); - sysJobLog.setStartTime(startTime); - sysJobLog.setStopTime(new Date()); - long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime(); - sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒"); - if (e != null) - { - sysJobLog.setStatus("1"); - String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000); - sysJobLog.setExceptionInfo(errorMsg); - } - else - { - sysJobLog.setStatus("0"); - } - - // 写入数据库当中 - SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog); - } - - /** - * 执行方法,由子类重载 - * - * @param context 工作执行上下文对象 - * @param sysJob 系统计划任务 - * @throws Exception 执行过程中的异常 - */ - protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception; -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java deleted file mode 100644 index 84794eb..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.ruoyi.job.util; - -import java.text.ParseException; -import java.util.Date; -import org.quartz.CronExpression; - -/** - * cron表达式工具类 - * - * @author jqs - * - */ -public class CronUtils -{ - /** - * 返回一个布尔值代表一个给定的Cron表达式的有效性 - * - * @param cronExpression Cron表达式 - * @return boolean 表达式是否有效 - */ - public static boolean isValid(String cronExpression) - { - return CronExpression.isValidExpression(cronExpression); - } - - /** - * 返回一个字符串值,表示该消息无效Cron表达式给出有效性 - * - * @param cronExpression Cron表达式 - * @return String 无效时返回表达式错误描述,如果有效返回null - */ - public static String getInvalidMessage(String cronExpression) - { - try - { - new CronExpression(cronExpression); - return null; - } - catch (ParseException pe) - { - return pe.getMessage(); - } - } - - /** - * 返回下一个执行时间根据给定的Cron表达式 - * - * @param cronExpression Cron表达式 - * @return Date 下次Cron表达式执行时间 - */ - public static Date getNextExecution(String cronExpression) - { - try - { - CronExpression cron = new CronExpression(cronExpression); - return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis())); - } - catch (ParseException e) - { - throw new IllegalArgumentException(e.getMessage()); - } - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java deleted file mode 100644 index 775ee9f..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.ruoyi.job.util; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.LinkedList; -import java.util.List; -import com.ruoyi.common.core.utils.SpringUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.job.domain.SysJob; - -/** - * 任务执行工具 - * - * @author jqs - */ -public class JobInvokeUtil -{ - /** - * 执行方法 - * - * @param sysJob 系统任务 - */ - public static void invokeMethod(SysJob sysJob) throws Exception - { - String invokeTarget = sysJob.getInvokeTarget(); - String beanName = getBeanName(invokeTarget); - String methodName = getMethodName(invokeTarget); - List<Object[]> methodParams = getMethodParams(invokeTarget); - - if (!isValidClassName(beanName)) - { - Object bean = SpringUtils.getBean(beanName); - invokeMethod(bean, methodName, methodParams); - } - else - { - Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance(); - invokeMethod(bean, methodName, methodParams); - } - } - - /** - * 调用任务方法 - * - * @param bean 目标对象 - * @param methodName 方法名称 - * @param methodParams 方法参数 - */ - private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams) - throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, - InvocationTargetException - { - if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0) - { - Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams)); - method.invoke(bean, getMethodParamsValue(methodParams)); - } - else - { - Method method = bean.getClass().getMethod(methodName); - method.invoke(bean); - } - } - - /** - * 校验是否为为class包名 - * - * @param invokeTarget 名称 - * @return true是 false否 - */ - public static boolean isValidClassName(String invokeTarget) - { - return StringUtils.countMatches(invokeTarget, ".") > 1; - } - - /** - * 获取bean名称 - * - * @param invokeTarget 目标字符串 - * @return bean名称 - */ - public static String getBeanName(String invokeTarget) - { - String beanName = StringUtils.substringBefore(invokeTarget, "("); - return StringUtils.substringBeforeLast(beanName, "."); - } - - /** - * 获取bean方法 - * - * @param invokeTarget 目标字符串 - * @return method方法 - */ - public static String getMethodName(String invokeTarget) - { - String methodName = StringUtils.substringBefore(invokeTarget, "("); - return StringUtils.substringAfterLast(methodName, "."); - } - - /** - * 获取method方法参数相关列表 - * - * @param invokeTarget 目标字符串 - * @return method方法相关参数列表 - */ - public static List<Object[]> getMethodParams(String invokeTarget) - { - String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")"); - if (StringUtils.isEmpty(methodStr)) - { - return null; - } - String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)"); - List<Object[]> classs = new LinkedList<>(); - for (int i = 0; i < methodParams.length; i++) - { - String str = StringUtils.trimToEmpty(methodParams[i]); - // String字符串类型,以'或"开头 - if (StringUtils.startsWithAny(str, "'", "\"")) - { - classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class }); - } - // boolean布尔类型,等于true或者false - else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) - { - classs.add(new Object[] { Boolean.valueOf(str), Boolean.class }); - } - // long长整形,以L结尾 - else if (StringUtils.endsWith(str, "L")) - { - classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class }); - } - // double浮点类型,以D结尾 - else if (StringUtils.endsWith(str, "D")) - { - classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class }); - } - // 其他类型归类为整形 - else - { - classs.add(new Object[] { Integer.valueOf(str), Integer.class }); - } - } - return classs; - } - - /** - * 获取参数类型 - * - * @param methodParams 参数相关列表 - * @return 参数类型列表 - */ - public static Class<?>[] getMethodParamsType(List<Object[]> methodParams) - { - Class<?>[] classs = new Class<?>[methodParams.size()]; - int index = 0; - for (Object[] os : methodParams) - { - classs[index] = (Class<?>) os[1]; - index++; - } - return classs; - } - - /** - * 获取参数值 - * - * @param methodParams 参数相关列表 - * @return 参数值列表 - */ - public static Object[] getMethodParamsValue(List<Object[]> methodParams) - { - Object[] classs = new Object[methodParams.size()]; - int index = 0; - for (Object[] os : methodParams) - { - classs[index] = (Object) os[0]; - index++; - } - return classs; - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java deleted file mode 100644 index ecf37a4..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.job.util; - -import org.quartz.DisallowConcurrentExecution; -import org.quartz.JobExecutionContext; - -import com.ruoyi.job.domain.SysJob; - -/** - * 定时任务处理(禁止并发执行) - * - * @author jqs - * - */ -@DisallowConcurrentExecution -public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob -{ - @Override - protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception - { - JobInvokeUtil.invokeMethod(sysJob); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java deleted file mode 100644 index 4cc97cf..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.job.util; - -import org.quartz.JobExecutionContext; - -import com.ruoyi.job.domain.SysJob; - -/** - * 定时任务处理(允许并发执行) - * - * @author jqs - * - */ -public class QuartzJobExecution extends AbstractQuartzJob -{ - @Override - protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception - { - JobInvokeUtil.invokeMethod(sysJob); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java deleted file mode 100644 index 68395d0..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.ruoyi.job.util; - -import org.quartz.CronScheduleBuilder; -import org.quartz.CronTrigger; -import org.quartz.Job; -import org.quartz.JobBuilder; -import org.quartz.JobDetail; -import org.quartz.JobKey; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.TriggerBuilder; -import org.quartz.TriggerKey; -import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.constant.ScheduleConstants; -import com.ruoyi.common.core.exception.job.TaskException; -import com.ruoyi.common.core.exception.job.TaskException.Code; -import com.ruoyi.common.core.utils.SpringUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.job.domain.SysJob; - -/** - * 定时任务工具类 - * - * @author jqs - * - */ -public class ScheduleUtils -{ - /** - * 得到quartz任务类 - * - * @param sysJob 执行计划 - * @return 具体执行任务类 - */ - private static Class<? extends Job> getQuartzJobClass(SysJob sysJob) - { - boolean isConcurrent = "0".equals(sysJob.getConcurrent()); - return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class; - } - - /** - * 构建任务触发对象 - */ - public static TriggerKey getTriggerKey(Long jobId, String jobGroup) - { - return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); - } - - /** - * 构建任务键对象 - */ - public static JobKey getJobKey(Long jobId, String jobGroup) - { - return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); - } - - /** - * 创建定时任务 - */ - public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException - { - Class<? extends Job> jobClass = getQuartzJobClass(job); - // 构建job信息 - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build(); - - // 表达式调度构建器 - CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); - cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); - - // 按新的cronExpression表达式构建一个新的trigger - CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup)) - .withSchedule(cronScheduleBuilder).build(); - - // 放入参数,运行时的方法可以获取 - jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); - - // 判断是否存在 - if (scheduler.checkExists(getJobKey(jobId, jobGroup))) - { - // 防止创建时存在数据问题 先移除,然后在执行创建操作 - scheduler.deleteJob(getJobKey(jobId, jobGroup)); - } - - // 判断任务是否过期 - if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression()))) - { - // 执行调度任务 - scheduler.scheduleJob(jobDetail, trigger); - } - - // 暂停任务 - if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) - { - scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - } - - /** - * 设置定时任务策略 - */ - public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb) - throws TaskException - { - switch (job.getMisfirePolicy()) - { - case ScheduleConstants.MISFIRE_DEFAULT: - return cb; - case ScheduleConstants.MISFIRE_IGNORE_MISFIRES: - return cb.withMisfireHandlingInstructionIgnoreMisfires(); - case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED: - return cb.withMisfireHandlingInstructionFireAndProceed(); - case ScheduleConstants.MISFIRE_DO_NOTHING: - return cb.withMisfireHandlingInstructionDoNothing(); - default: - throw new TaskException("The task misfire policy '" + job.getMisfirePolicy() - + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); - } - } - - /** - * 检查包名是否为白名单配置 - * - * @param invokeTarget 目标字符串 - * @return 结果 - */ - public static boolean whiteList(String invokeTarget) - { - String packageName = StringUtils.substringBefore(invokeTarget, "("); - int count = StringUtils.countMatches(packageName, "."); - if (count > 1) - { - return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR); - } - Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]); - return StringUtils.containsAnyIgnoreCase(obj.getClass().getPackage().getName(), Constants.JOB_WHITELIST_STR); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml deleted file mode 100644 index 2725ba0..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,35 +0,0 @@ -# Tomcat -server: - port: 8033 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-job - profiles: - # 环境配置 - active: dev - cloud: - nacos: - discovery: - # 服务注册地址 - server-addr: 47.109.78.184:5000 - #server-addr: 127.0.0.1:8848 - #pro - namespace: 9591ef9f-a49a-4900-be35-d77258bdd639 - #dev - #namespace: d39a744d-116f-4280-8445-0502dd1a3116 - config: - # 配置中心地址 - server-addr: 47.109.78.184:5000 - #server-addr: 127.0.0.1:8848 - #pro - namespace: 9591ef9f-a49a-4900-be35-d77258bdd639 - #dev - #namespace: d39a744d-116f-4280-8445-0502dd1a3116 - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/logback.xml b/ruoyi-modules/ruoyi-job/src/main/resources/logback.xml deleted file mode 100644 index 44e4ff2..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/resources/logback.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration scan="true" scanPeriod="60 seconds" debug="false"> - <!-- 日志存放路径 --> - <property name="log.path" value="logs/ruoyi-job" /> - <!-- 日志输出格式 --> - <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> - - <!-- 控制台输出 --> - <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - </appender> - - <!-- 系统日志输出 --> - <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${log.path}/info.log</file> - <!-- 循环政策:基于时间创建日志文件 --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志文件名格式 --> - <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> - <!-- 日志最大的历史 60天 --> - <maxHistory>60</maxHistory> - </rollingPolicy> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <!-- 过滤的级别 --> - <level>INFO</level> - <!-- 匹配时的操作:接收(记录) --> - <onMatch>ACCEPT</onMatch> - <!-- 不匹配时的操作:拒绝(不记录) --> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${log.path}/error.log</file> - <!-- 循环政策:基于时间创建日志文件 --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志文件名格式 --> - <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> - <!-- 日志最大的历史 60天 --> - <maxHistory>60</maxHistory> - </rollingPolicy> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <!-- 过滤的级别 --> - <level>ERROR</level> - <!-- 匹配时的操作:接收(记录) --> - <onMatch>ACCEPT</onMatch> - <!-- 不匹配时的操作:拒绝(不记录) --> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 系统模块日志级别控制 --> - <logger name="com.ruoyi" level="info" /> - <!-- Spring日志级别控制 --> - <logger name="org.springframework" level="warn" /> - - <root level="info"> - <appender-ref ref="console" /> - </root> - - <!--系统操作日志--> - <root level="info"> - <appender-ref ref="file_info" /> - <appender-ref ref="file_error" /> - </root> -</configuration> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml b/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml deleted file mode 100644 index 2e1cad1..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.job.mapper.SysJobLogMapper"> - - <resultMap type="SysJobLog" id="SysJobLogResult"> - <id property="jobLogId" column="job_log_id" /> - <result property="jobName" column="job_name" /> - <result property="jobGroup" column="job_group" /> - <result property="invokeTarget" column="invoke_target" /> - <result property="jobMessage" column="job_message" /> - <result property="status" column="status" /> - <result property="exceptionInfo" column="exception_info" /> - <result property="createTime" column="create_time" /> - </resultMap> - - <sql id="selectJobLogVo"> - select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time - from sys_job_log - </sql> - - <select id="selectJobLogList" parameterType="SysJobLog" resultMap="SysJobLogResult"> - <include refid="selectJobLogVo"/> - <where> - <if test="jobName != null and jobName != ''"> - AND job_name like concat('%', #{jobName}, '%') - </if> - <if test="jobGroup != null and jobGroup != ''"> - AND job_group = #{jobGroup} - </if> - <if test="status != null and status != ''"> - AND status = #{status} - </if> - <if test="invokeTarget != null and invokeTarget != ''"> - AND invoke_target like concat('%', #{invokeTarget}, '%') - </if> - <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> - and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') - </if> - <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> - and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') - </if> - </where> - </select> - - <select id="selectJobLogAll" resultMap="SysJobLogResult"> - <include refid="selectJobLogVo"/> - </select> - - <select id="selectJobLogById" parameterType="Long" resultMap="SysJobLogResult"> - <include refid="selectJobLogVo"/> - where job_log_id = #{jobLogId} - </select> - - <delete id="deleteJobLogById" parameterType="Long"> - delete from sys_job_log where job_log_id = #{jobLogId} - </delete> - - <delete id="deleteJobLogByIds" parameterType="Long"> - delete from sys_job_log where job_log_id in - <foreach collection="array" item="jobLogId" open="(" separator="," close=")"> - #{jobLogId} - </foreach> - </delete> - - <update id="cleanJobLog"> - truncate table sys_job_log - </update> - - <insert id="insertJobLog" parameterType="SysJobLog"> - insert into sys_job_log( - <if test="jobLogId != null and jobLogId != 0">job_log_id,</if> - <if test="jobName != null and jobName != ''">job_name,</if> - <if test="jobGroup != null and jobGroup != ''">job_group,</if> - <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if> - <if test="jobMessage != null and jobMessage != ''">job_message,</if> - <if test="status != null and status != ''">status,</if> - <if test="exceptionInfo != null and exceptionInfo != ''">exception_info,</if> - create_time - )values( - <if test="jobLogId != null and jobLogId != 0">#{jobLogId},</if> - <if test="jobName != null and jobName != ''">#{jobName},</if> - <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if> - <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if> - <if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if> - <if test="status != null and status != ''">#{status},</if> - <if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if> - sysdate() - ) - </insert> - -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml b/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml deleted file mode 100644 index a0b0ce8..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.job.mapper.SysJobMapper"> - - <resultMap type="SysJob" id="SysJobResult"> - <id property="jobId" column="job_id" /> - <result property="jobName" column="job_name" /> - <result property="jobGroup" column="job_group" /> - <result property="invokeTarget" column="invoke_target" /> - <result property="cronExpression" column="cron_expression" /> - <result property="misfirePolicy" column="misfire_policy" /> - <result property="concurrent" column="concurrent" /> - <result property="status" column="status" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - <result property="remark" column="remark" /> - </resultMap> - - <sql id="selectJobVo"> - select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark - from sys_job - </sql> - - <select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult"> - <include refid="selectJobVo"/> - <where> - <if test="jobName != null and jobName != ''"> - AND job_name like concat('%', #{jobName}, '%') - </if> - <if test="jobGroup != null and jobGroup != ''"> - AND job_group = #{jobGroup} - </if> - <if test="status != null and status != ''"> - AND status = #{status} - </if> - <if test="invokeTarget != null and invokeTarget != ''"> - AND invoke_target like concat('%', #{invokeTarget}, '%') - </if> - </where> - </select> - - <select id="selectJobAll" resultMap="SysJobResult"> - <include refid="selectJobVo"/> - </select> - - <select id="selectJobById" parameterType="Long" resultMap="SysJobResult"> - <include refid="selectJobVo"/> - where job_id = #{jobId} - </select> - - <delete id="deleteJobById" parameterType="Long"> - delete from sys_job where job_id = #{jobId} - </delete> - - <delete id="deleteJobByIds" parameterType="Long"> - delete from sys_job where job_id in - <foreach collection="array" item="jobId" open="(" separator="," close=")"> - #{jobId} - </foreach> - </delete> - - <update id="updateJob" parameterType="SysJob"> - update sys_job - <set> - <if test="jobName != null and jobName != ''">job_name = #{jobName},</if> - <if test="jobGroup != null and jobGroup != ''">job_group = #{jobGroup},</if> - <if test="invokeTarget != null and invokeTarget != ''">invoke_target = #{invokeTarget},</if> - <if test="cronExpression != null and cronExpression != ''">cron_expression = #{cronExpression},</if> - <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy = #{misfirePolicy},</if> - <if test="concurrent != null and concurrent != ''">concurrent = #{concurrent},</if> - <if test="status !=null">status = #{status},</if> - <if test="remark != null and remark != ''">remark = #{remark},</if> - <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> - update_time = sysdate() - </set> - where job_id = #{jobId} - </update> - - <insert id="insertJob" parameterType="SysJob" useGeneratedKeys="true" keyProperty="jobId"> - insert into sys_job( - <if test="jobId != null and jobId != 0">job_id,</if> - <if test="jobName != null and jobName != ''">job_name,</if> - <if test="jobGroup != null and jobGroup != ''">job_group,</if> - <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if> - <if test="cronExpression != null and cronExpression != ''">cron_expression,</if> - <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy,</if> - <if test="concurrent != null and concurrent != ''">concurrent,</if> - <if test="status != null and status != ''">status,</if> - <if test="remark != null and remark != ''">remark,</if> - <if test="createBy != null and createBy != ''">create_by,</if> - create_time - )values( - <if test="jobId != null and jobId != 0">#{jobId},</if> - <if test="jobName != null and jobName != ''">#{jobName},</if> - <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if> - <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if> - <if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if> - <if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if> - <if test="concurrent != null and concurrent != ''">#{concurrent},</if> - <if test="status != null and status != ''">#{status},</if> - <if test="remark != null and remark != ''">#{remark},</if> - <if test="createBy != null and createBy != ''">#{createBy},</if> - sysdate() - ) - </insert> - -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-member/pom.xml b/ruoyi-modules/ruoyi-member/pom.xml index 4122064..7179cae 100644 --- a/ruoyi-modules/ruoyi-member/pom.xml +++ b/ruoyi-modules/ruoyi-member/pom.xml @@ -84,7 +84,7 @@ <artifactId>ruoyi-common-seata</artifactId> </dependency> - + <!-- MYBATIS PLUS--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> diff --git a/ruoyi-modules/ruoyi-order/pom.xml b/ruoyi-modules/ruoyi-order/pom.xml index 5f77d00..4537b91 100644 --- a/ruoyi-modules/ruoyi-order/pom.xml +++ b/ruoyi-modules/ruoyi-order/pom.xml @@ -84,8 +84,7 @@ <artifactId>ruoyi-common-seata</artifactId> </dependency> - - + <!-- MYBATIS PLUS--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> diff --git a/ruoyi-modules/ruoyi-shop/pom.xml b/ruoyi-modules/ruoyi-shop/pom.xml index 220e5ce..cd02e93 100644 --- a/ruoyi-modules/ruoyi-shop/pom.xml +++ b/ruoyi-modules/ruoyi-shop/pom.xml @@ -84,7 +84,7 @@ <artifactId>ruoyi-common-seata</artifactId> </dependency> - + <!-- MYBATIS PLUS--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml index 2b7a9ee..569ca88 100644 --- a/ruoyi-modules/ruoyi-system/pom.xml +++ b/ruoyi-modules/ruoyi-system/pom.xml @@ -84,7 +84,7 @@ <artifactId>ruoyi-common-seata</artifactId> </dependency> - + <!-- MYBATIS PLUS--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> diff --git a/ruoyi-visual/pom.xml b/ruoyi-visual/pom.xml deleted file mode 100644 index 933f254..0000000 --- a/ruoyi-visual/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi</artifactId> - <version>3.6.2</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <modules> - <module>ruoyi-monitor</module> - </modules> - - <artifactId>ruoyi-visual</artifactId> - <packaging>pom</packaging> - - <description> - ruoyi-visual图形化管理模块 - </description> - -</project> diff --git a/ruoyi-visual/ruoyi-monitor/pom.xml b/ruoyi-visual/ruoyi-monitor/pom.xml deleted file mode 100644 index 2cc878e..0000000 --- a/ruoyi-visual/ruoyi-monitor/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-visual</artifactId> - <version>3.6.2</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-visual-monitor</artifactId> - - <description> - ruoyi-visual-monitor监控中心 - </description> - - <dependencies> - - <!-- SpringBoot Admin --> - <dependency> - <groupId>de.codecentric</groupId> - <artifactId>spring-boot-admin-starter-server</artifactId> - <version>${spring-boot-admin.version}</version> - </dependency> - - <!-- SpringCloud Alibaba Nacos --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> - </dependency> - - <!-- SpringCloud Alibaba Nacos Config --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> - </dependency> - - <!-- SpringCloud Alibaba Sentinel --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> - </dependency> - - <!-- SpringBoot Web --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - </dependency> - - <!-- Spring Security --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-security</artifactId> - </dependency> - - </dependencies> - - <build> - <finalName>${project.artifactId}</finalName> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>repackage</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - -</project> \ No newline at end of file diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java b/ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java deleted file mode 100644 index 082834a..0000000 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ruoyi.modules.monitor; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import de.codecentric.boot.admin.server.config.EnableAdminServer; - -/** - * 监控中心 - * - * @author jqs - */ -@EnableAdminServer -@SpringBootApplication -public class RuoYiMonitorApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiMonitorApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 监控中心启动成功 ლ(´ڡ`ლ)゙ \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java b/ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java deleted file mode 100644 index 9992160..0000000 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ruoyi.modules.monitor.config; - -import de.codecentric.boot.admin.server.config.AdminServerProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.web.SecurityFilterChain; -import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; - -/** - * 监控权限配置 - * - * @author jqs - */ -@EnableWebSecurity -public class WebSecurityConfigurer -{ - private final String adminContextPath; - - public WebSecurityConfigurer(AdminServerProperties adminServerProperties) - { - this.adminContextPath = adminServerProperties.getContextPath(); - } - - @Bean - public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception - { - SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); - successHandler.setTargetUrlParameter("redirectTo"); - successHandler.setDefaultTargetUrl(adminContextPath + "/"); - - return httpSecurity - .headers().frameOptions().disable() - .and().authorizeRequests() - .antMatchers(adminContextPath + "/assets/**" - , adminContextPath + "/login" - , adminContextPath + "/actuator/**" - , adminContextPath + "/instances/**" - ).permitAll() - .anyRequest().authenticated() - .and() - .formLogin().loginPage(adminContextPath + "/login") - .successHandler(successHandler).and() - .logout().logoutUrl(adminContextPath + "/logout") - .and() - .httpBasic().and() - .csrf() - .disable() - .build(); - } -} diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml deleted file mode 100644 index f9c405e..0000000 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Tomcat -server: - port: 9100 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-monitor - profiles: - # 环境配置 - active: dev - cloud: - nacos: - discovery: - # 服务注册地址 - server-addr: 47.109.78.184:5000 - #server-addr: 127.0.0.1:8848 - config: - # 配置中心地址 - server-addr: 47.109.78.184:5000 - #server-addr: 127.0.0.1:8848 - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/logback.xml b/ruoyi-visual/ruoyi-monitor/src/main/resources/logback.xml deleted file mode 100644 index ab95c68..0000000 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/logback.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration scan="true" scanPeriod="60 seconds" debug="false"> - <!-- 日志存放路径 --> - <property name="log.path" value="logs/ruoyi-visual-monitor" /> - <!-- 日志输出格式 --> - <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> - - <!-- 控制台输出 --> - <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - </appender> - - <!-- 系统日志输出 --> - <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${log.path}/info.log</file> - <!-- 循环政策:基于时间创建日志文件 --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志文件名格式 --> - <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> - <!-- 日志最大的历史 60天 --> - <maxHistory>60</maxHistory> - </rollingPolicy> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <!-- 过滤的级别 --> - <level>INFO</level> - <!-- 匹配时的操作:接收(记录) --> - <onMatch>ACCEPT</onMatch> - <!-- 不匹配时的操作:拒绝(不记录) --> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${log.path}/error.log</file> - <!-- 循环政策:基于时间创建日志文件 --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志文件名格式 --> - <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> - <!-- 日志最大的历史 60天 --> - <maxHistory>60</maxHistory> - </rollingPolicy> - <encoder> - <pattern>${log.pattern}</pattern> - </encoder> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <!-- 过滤的级别 --> - <level>ERROR</level> - <!-- 匹配时的操作:接收(记录) --> - <onMatch>ACCEPT</onMatch> - <!-- 不匹配时的操作:拒绝(不记录) --> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 系统模块日志级别控制 --> - <logger name="com.ruoyi" level="info" /> - <!-- Spring日志级别控制 --> - <logger name="org.springframework" level="warn" /> - - <root level="info"> - <appender-ref ref="console" /> - </root> - - <!--系统操作日志--> - <root level="info"> - <appender-ref ref="file_info" /> - <appender-ref ref="file_error" /> - </root> -</configuration> \ No newline at end of file -- Gitblit v1.7.1