Commit 2210ed5cf876ce80792c8d28cba80988b85fcd7d

Authored by YunaiV
1 parent 763e2079

增加 service 模板

ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java deleted
1 -package com.ruoyi.generator.util;  
2 -  
3 -import java.util.Properties;  
4 -  
5 -import org.apache.velocity.app.Velocity;  
6 -import com.ruoyi.common.constant.Constants;  
7 -  
8 -/**  
9 - * VelocityEngine工厂  
10 - *  
11 - * @author RuoYi  
12 - */  
13 -public class VelocityInitializer {  
14 - /**  
15 - * 初始化vm方法  
16 - */  
17 - public static void initVelocity() {  
18 - Properties p = new Properties();  
19 - try {  
20 - // 加载classpath目录下的vm文件  
21 - p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");  
22 - // 定义字符集  
23 - p.setProperty(Velocity.ENCODING_DEFAULT, Constants.UTF8);  
24 - p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8);  
25 - // 初始化Velocity引擎,指定配置Properties  
26 - Velocity.init(p);  
27 - } catch (Exception e) {  
28 - throw new RuntimeException(e);  
29 - }  
30 - }  
31 -}  
ruoyi-generator/src/main/resources/vm/java/domain.java.vm deleted
1 -package ${packageName}.domain;  
2 -  
3 -#foreach ($import in $importList)  
4 -import ${import};  
5 -#end  
6 -import org.apache.commons.lang3.builder.ToStringBuilder;  
7 -import org.apache.commons.lang3.builder.ToStringStyle;  
8 -import com.ruoyi.common.annotation.Excel;  
9 -#if($table.crud)  
10 -import com.ruoyi.common.core.domain.BaseEntity;  
11 -#elseif($table.tree)  
12 -import com.ruoyi.common.core.domain.TreeEntity;  
13 -#end  
14 -  
15 -/**  
16 - * ${functionName}对象 ${tableName}  
17 - *  
18 - * @author ${author}  
19 - * @date ${datetime}  
20 - */  
21 -#if($table.crud)  
22 -#set($Entity="BaseEntity")  
23 -#elseif($table.tree)  
24 -#set($Entity="TreeEntity")  
25 -#end  
26 -public class ${ClassName} extends ${Entity}  
27 -{  
28 - private static final long serialVersionUID = 1L;  
29 -  
30 -#foreach ($column in $columns)  
31 -#if(!$table.isSuperColumn($column.javaField))  
32 - /** $column.columnComment */  
33 -#if($column.list)  
34 -#set($parentheseIndex=$column.columnComment.indexOf("("))  
35 -#if($parentheseIndex != -1)  
36 -#set($comment=$column.columnComment.substring(0, $parentheseIndex))  
37 -#else  
38 -#set($comment=$column.columnComment)  
39 -#end  
40 -#if($parentheseIndex != -1)  
41 - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")  
42 -#elseif($column.javaType == 'Date')  
43 - @JsonFormat(pattern = "yyyy-MM-dd")  
44 - @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")  
45 -#else  
46 - @Excel(name = "${comment}")  
47 -#end  
48 -#end  
49 - private $column.javaType $column.javaField;  
50 -  
51 -#end  
52 -#end  
53 -#foreach ($column in $columns)  
54 -#if(!$table.isSuperColumn($column.javaField))  
55 -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))  
56 -#set($AttrName=$column.javaField)  
57 -#else  
58 -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})  
59 -#end  
60 - public void set${AttrName}($column.javaType $column.javaField)  
61 - {  
62 - this.$column.javaField = $column.javaField;  
63 - }  
64 -  
65 - public $column.javaType get${AttrName}()  
66 - {  
67 - return $column.javaField;  
68 - }  
69 -#end  
70 -#end  
71 -  
72 - @Override  
73 - public String toString() {  
74 - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)  
75 -#foreach ($column in $columns)  
76 -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))  
77 -#set($AttrName=$column.javaField)  
78 -#else  
79 -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})  
80 -#end  
81 - .append("${column.javaField}", get${AttrName}())  
82 -#end  
83 - .toString();  
84 - }  
85 -}  
ruoyi-generator/src/main/resources/vm/java/mapper.java.vm deleted
1 -package ${packageName}.mapper;  
2 -  
3 -import java.util.List;  
4 -import ${packageName}.domain.${ClassName};  
5 -  
6 -/**  
7 - * ${functionName}Mapper接口  
8 - *  
9 - * @author ${author}  
10 - * @date ${datetime}  
11 - */  
12 -public interface ${ClassName}Mapper  
13 -{  
14 - /**  
15 - * 查询${functionName}  
16 - *  
17 - * @param ${pkColumn.javaField} ${functionName}ID  
18 - * @return ${functionName}  
19 - */  
20 - public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});  
21 -  
22 - /**  
23 - * 查询${functionName}列表  
24 - *  
25 - * @param ${className} ${functionName}  
26 - * @return ${functionName}集合  
27 - */  
28 - public List<${ClassName}> select${ClassName}List(${ClassName} ${className});  
29 -  
30 - /**  
31 - * 新增${functionName}  
32 - *  
33 - * @param ${className} ${functionName}  
34 - * @return 结果  
35 - */  
36 - public int insert${ClassName}(${ClassName} ${className});  
37 -  
38 - /**  
39 - * 修改${functionName}  
40 - *  
41 - * @param ${className} ${functionName}  
42 - * @return 结果  
43 - */  
44 - public int update${ClassName}(${ClassName} ${className});  
45 -  
46 - /**  
47 - * 删除${functionName}  
48 - *  
49 - * @param ${pkColumn.javaField} ${functionName}ID  
50 - * @return 结果  
51 - */  
52 - public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});  
53 -  
54 - /**  
55 - * 批量删除${functionName}  
56 - *  
57 - * @param ${pkColumn.javaField}s 需要删除的数据ID  
58 - * @return 结果  
59 - */  
60 - public int delete${ClassName}ByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s);  
61 -}  
src/main/java/cn/iocoder/dashboard/DashboardApplication.java
@@ -8,11 +8,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,11 +8,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
8 @EnableAdminServer // TODO 芋艿:需要迁移出去 8 @EnableAdminServer // TODO 芋艿:需要迁移出去
9 public class DashboardApplication { 9 public class DashboardApplication {
10 10
11 - public static void main(String[] args) {  
12 - // 设置读取的配置文件  
13 - System.setProperty("spring.config.name", "application,db"); 11 +// static {
  12 +// // 设置读取的配置文件
  13 +// System.setProperty("spring.config.name", "application,db");
  14 +// }
14 15
15 - // 启动 Spring Boot 16 + public static void main(String[] args) {
16 SpringApplication.run(DashboardApplication.class, args); 17 SpringApplication.run(DashboardApplication.class, args);
17 } 18 }
18 19
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java
@@ -3,9 +3,11 @@ package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; @@ -3,9 +3,11 @@ package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept;
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import lombok.Data; 4 import lombok.Data;
5 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
  6 +import lombok.ToString;
6 7
7 @ApiModel("部门创建 Request VO") 8 @ApiModel("部门创建 Request VO")
8 @Data 9 @Data
9 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
  11 +@ToString(callSuper = true)
10 public class SysDeptCreateReqVO extends SysDeptBaseVO { 12 public class SysDeptCreateReqVO extends SysDeptBaseVO {
11 } 13 }
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
@@ -10,14 +10,16 @@ import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; @@ -10,14 +10,16 @@ import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
10 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; 10 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
11 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO; 11 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
12 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO; 12 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
  13 +import cn.iocoder.dashboard.util.collection.CollectionUtils;
13 import cn.iocoder.dashboard.util.date.DateUtils; 14 import cn.iocoder.dashboard.util.date.DateUtils;
14 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
15 16
16 -import java.util.Date;  
17 import java.util.HashMap; 17 import java.util.HashMap;
18 import java.util.List; 18 import java.util.List;
19 import java.util.Map; 19 import java.util.Map;
20 20
  21 +import static cn.hutool.core.text.CharSequenceUtil.*;
  22 +
21 /** 23 /**
22 * 代码生成的引擎,用于具体生成代码 24 * 代码生成的引擎,用于具体生成代码
23 * 目前基于 {@link org.apache.velocity.app.Velocity} 模板引擎实现 25 * 目前基于 {@link org.apache.velocity.app.Velocity} 模板引擎实现
@@ -49,7 +51,7 @@ public class ToolCodegenEngine { @@ -49,7 +51,7 @@ public class ToolCodegenEngine {
49 51
50 private void initGlobalBindingMap() { 52 private void initGlobalBindingMap() {
51 // 全局配置 53 // 全局配置
52 - globalBindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包 54 + globalBindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包, 抽成参数
53 // 全局 Java Bean 55 // 全局 Java Bean
54 globalBindingMap.put("PageResultClassName", PageResult.class.getName()); 56 globalBindingMap.put("PageResultClassName", PageResult.class.getName());
55 globalBindingMap.put("DateUtilsClassName", DateUtils.class.getName()); 57 globalBindingMap.put("DateUtilsClassName", DateUtils.class.getName());
@@ -64,16 +66,21 @@ public class ToolCodegenEngine { @@ -64,16 +66,21 @@ public class ToolCodegenEngine {
64 66
65 public void execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) { 67 public void execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) {
66 // 创建 bindingMap 68 // 创建 bindingMap
67 - Map<String, Object> bindingMap = new HashMap<>(); 69 + Map<String, Object> bindingMap = new HashMap<>(globalBindingMap);
68 bindingMap.put("table", table); 70 bindingMap.put("table", table);
69 bindingMap.put("columns", columns); 71 bindingMap.put("columns", columns);
70 - bindingMap.put("hasDateColumn", columns.stream().anyMatch(codegenColumnDO ->  
71 - codegenColumnDO.getJavaType().equals(Date.class.getSimpleName())));  
72 - bindingMap.putAll(globalBindingMap); 72 + bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, ToolCodegenColumnDO::getPrimaryKey));
  73 + bindingMap.put("simpleClassName", upperFirst(toCamelCase(subAfter( // 去掉第一个驼峰,例如说 SysUser 去掉后是 User
  74 + toUnderlineCase(table.getClassName()), '_', false))));
73 // 执行生成 75 // 执行生成
74 // String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); 76 // String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap);
75 // String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); 77 // String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap);
76 - String result = templateEngine.getTemplate("codegen/controller/vo/pageReqVO.vm").render(bindingMap); 78 +// String result = templateEngine.getTemplate("codegen/controller/vo/pageReqVO.vm").render(bindingMap);
  79 +// String result = templateEngine.getTemplate("codegen/controller/vo/baseVO.vm").render(bindingMap);
  80 +// String result = templateEngine.getTemplate("codegen/controller/vo/createReqVO.vm").render(bindingMap);
  81 +// String result = templateEngine.getTemplate("codegen/controller/vo/updateReqVO.vm").render(bindingMap);
  82 +// String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap);
  83 + String result = templateEngine.getTemplate("codegen/service/service.vm").render(bindingMap);
77 System.out.println(result); 84 System.out.println(result);
78 } 85 }
79 86
src/main/java/cn/iocoder/dashboard/util/collection/CollectionUtils.java
@@ -86,6 +86,13 @@ public class CollectionUtils { @@ -86,6 +86,13 @@ public class CollectionUtils {
86 return !CollectionUtil.isEmpty(from) ? from.get(0) : null; 86 return !CollectionUtil.isEmpty(from) ? from.get(0) : null;
87 } 87 }
88 88
  89 + public static <T> T findFirst(List<T> from, Predicate<T> predicate) {
  90 + if (CollUtil.isEmpty(from)) {
  91 + return null;
  92 + }
  93 + return from.stream().filter(predicate).findFirst().orElse(null);
  94 + }
  95 +
89 public static <T> void addIfNotNull(Collection<T> coll, T item) { 96 public static <T> void addIfNotNull(Collection<T> coll, T item) {
90 if (item == null) { 97 if (item == null) {
91 return; 98 return;
src/main/resources/application.yaml
@@ -2,6 +2,13 @@ spring: @@ -2,6 +2,13 @@ spring:
2 application: 2 application:
3 name: dashboard 3 name: dashboard
4 4
  5 + # 数据源配置项 TODO 多数据源;TODO 监控配置
  6 + datasource:
  7 + url: jdbc:mysql://127.0.1:33061/ruoyi-vue-pro?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
  8 + driver-class-name: com.mysql.jdbc.Driver
  9 + username: root
  10 + password: 123456
  11 +
5 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 12 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
6 redis: 13 redis:
7 host: 127.0.0.1 # 地址 14 host: 127.0.0.1 # 地址
src/main/resources/codegen/service/service.vm 0 → 100644
  1 +package ${basePackage}.${table.moduleName}.service.${table.businessName};
  2 +
  3 +import java.util.*;
  4 +import javax.validation.*;
  5 +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*;
  6 +import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO;
  7 +import ${PageResultClassName};
  8 +
  9 +/**
  10 +* ${table.classComment} Service 接口
  11 +*
  12 +* @author ${table.author}
  13 +*/
  14 +public interface ${table.className}Service {
  15 +
  16 + /**
  17 + * 创建${table.classComment}
  18 + *
  19 + * @param createReqVO 创建信息
  20 + * @return ${class.description}
  21 + */
  22 + ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO);
  23 +
  24 + /**
  25 + * 更新${table.classComment}
  26 + *
  27 + * @param updateReqVO 更新信息
  28 + */
  29 + void update${simpleClassName}(@Valid ${table.className}UpdateReqVO updateReqVO);
  30 +
  31 + /**
  32 + * 删除${table.classComment}
  33 + *
  34 + * @param id 编号
  35 + */
  36 + void delete${simpleClassName}(${primaryColumn.javaType} id);
  37 +
  38 + /**
  39 + * 获得${table.classComment}
  40 + *
  41 + * @param id 编号
  42 + * @return ${class.description}
  43 + */
  44 + ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id);
  45 +
  46 + /**
  47 + * 获得${table.classComment}列表
  48 + *
  49 + * @param ids 编号
  50 + * @return ${class.classComment}列表
  51 + */
  52 + List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids);
  53 +
  54 + /**
  55 + * 获得${table.classComment}分页
  56 + *
  57 + * @param pageReqVO 分页查询
  58 + * @return ${class.classComment}分页
  59 + */
  60 + PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO);
  61 +
  62 +}
src/main/resources/db.yaml deleted
1 -spring:  
2 - # 数据源配置项 TODO 多数据源;TODO 监控配置  
3 - datasource:  
4 - url: jdbc:mysql://127.0.1:33061/ruoyi-vue-pro?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT  
5 - driver-class-name: com.mysql.jdbc.Driver  
6 - username: root  
7 - password: 123456