From 3ab7f9fec8c6a9f98ac3585fcdf6e1908de85fed Mon Sep 17 00:00:00 2001 From: dongzeliang <2746733890@qq.com> Date: Mon, 17 Mar 2025 22:11:43 +0800 Subject: [PATCH] =?UTF-8?q?feat()=EF=BC=9B=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=99=A8=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/muyu/gen/config/GenConfig.java | 34 +-- .../{ => impl}/GenTableColumnServiceImpl.java | 3 +- .../{ => impl}/GenTableServiceImpl.java | 3 +- .../main/java/com/muyu/gen/util/GenUtils.java | 10 +- .../java/com/muyu/gen/util/VelocityUtils.java | 46 +++-- .../main/resources/vm/java/controller.java.vm | 98 ++++----- .../src/main/resources/vm/java/domain.java.vm | 144 ++++++++----- .../src/main/resources/vm/java/edit.java.vm | 66 ++++++ .../src/main/resources/vm/java/mapper.java.vm | 82 +------- .../src/main/resources/vm/java/query.java.vm | 65 ++++++ .../src/main/resources/vm/java/save.java.vm | 67 ++++++ .../main/resources/vm/java/service.java.vm | 49 +---- .../resources/vm/java/serviceImpl.java.vm | 194 +++++------------- 13 files changed, 442 insertions(+), 419 deletions(-) rename cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/{ => impl}/GenTableColumnServiceImpl.java (94%) rename cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/{ => impl}/GenTableServiceImpl.java (99%) create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/edit.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/query.java.vm create mode 100644 cloud-modules/cloud-modules-gen/src/main/resources/vm/java/save.java.vm diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java index 65d9824..1e686bd 100644 --- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/config/GenConfig.java @@ -1,5 +1,7 @@ package com.muyu.gen.config; +import lombok.Data; +import lombok.Getter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -8,17 +10,20 @@ import org.springframework.stereotype.Component; * * @author muyu */ +@Data @Component @ConfigurationProperties(prefix = "gen") public class GenConfig { /** * 作者 */ + @Getter public static String author; /** * 生成包路径 */ + @Getter public static String packageName; /** @@ -29,37 +34,10 @@ public class GenConfig { /** * 表前缀(类名不会包含表前缀) */ + @Getter 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/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/impl/GenTableColumnServiceImpl.java similarity index 94% rename from cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java rename to cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/impl/GenTableColumnServiceImpl.java index 7b3a5cb..e042a26 100644 --- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableColumnServiceImpl.java +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/impl/GenTableColumnServiceImpl.java @@ -1,7 +1,8 @@ -package com.muyu.gen.service; +package com.muyu.gen.service.impl; import com.muyu.gen.domain.GenTableColumn; import com.muyu.gen.mapper.GenTableColumnMapper; +import com.muyu.gen.service.IGenTableColumnService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/impl/GenTableServiceImpl.java similarity index 99% rename from cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java rename to cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/impl/GenTableServiceImpl.java index a81486b..a57a2e4 100644 --- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/GenTableServiceImpl.java +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/service/impl/GenTableServiceImpl.java @@ -1,4 +1,4 @@ -package com.muyu.gen.service; +package com.muyu.gen.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; @@ -12,6 +12,7 @@ import com.muyu.gen.domain.GenTable; import com.muyu.gen.domain.GenTableColumn; import com.muyu.gen.mapper.GenTableColumnMapper; import com.muyu.gen.mapper.GenTableMapper; +import com.muyu.gen.service.IGenTableService; import com.muyu.gen.util.GenUtils; import com.muyu.gen.util.VelocityInitializer; import com.muyu.gen.util.VelocityUtils; diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java index d42609d..d8efbb6 100644 --- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/GenUtils.java @@ -171,16 +171,16 @@ public class GenUtils { /** * 批量替换前缀 * - * @param replacementm 替换值 + * @param replaceMentm 替换值 * @param searchList 替换列表 * * @return */ - public static String replaceFirst (String replacementm, String[] searchList) { - String text = replacementm; + public static String replaceFirst (String replaceMentm, String[] searchList) { + String text = replaceMentm; for (String searchString : searchList) { - if (replacementm.startsWith(searchString)) { - text = replacementm.replaceFirst(searchString, ""); + if (replaceMentm.startsWith(searchString)) { + text = replaceMentm.replaceFirst(searchString, ""); break; } } diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java index 094166d..ba3a656 100644 --- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java +++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java @@ -65,7 +65,7 @@ public class VelocityUtils { velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); velocityContext.put("columns", genTable.getColumns()); velocityContext.put("table", genTable); - velocityContext.put("dicts", getDicts(genTable)); + velocityContext.put("dicts", getDictList(genTable)); setMenuVelocityContext(velocityContext, genTable); if (GenConstants.TPL_TREE.equals(tplCategory)) { setTreeVelocityContext(velocityContext, genTable); @@ -86,7 +86,7 @@ public class VelocityUtils { public static void setTreeVelocityContext (VelocityContext context, GenTable genTable) { String options = genTable.getOptions(); JSONObject paramsObj = JSON.parseObject(options); - String treeCode = getTreecode(paramsObj); + String treeCode = getTreeCode(paramsObj); String treeParentCode = getTreeParentCode(paramsObj); String treeName = getTreeName(paramsObj); @@ -125,12 +125,15 @@ public class VelocityUtils { * @return 模板列表 */ public static List getTemplateList (String tplCategory) { - List templates = new ArrayList<>(); + List templates = new ArrayList(); templates.add("vm/java/domain.java.vm"); - templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/query.java.vm"); + templates.add("vm/java/save.java.vm"); + templates.add("vm/java/edit.java.vm"); + templates.add("vm/java/controller.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/java/mapper.java.vm"); templates.add("vm/xml/mapper.xml.vm"); templates.add("vm/sql/sql.vm"); templates.add("vm/js/api.js.vm"); @@ -167,12 +170,19 @@ public class VelocityUtils { 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")) { + if (template.contains("query.java.vm")) { + fileName = StringUtils.format("{}/domain/req/{}QueryReq.java", javaPath, className); + } + if (template.contains("save.java.vm")) { + fileName = StringUtils.format("{}/domain/req/{}SaveReq.java", javaPath, className); + } + if (template.contains("edit.java.vm")) { + fileName = StringUtils.format("{}/domain/req/{}EditReq.java", javaPath, className); + } + 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); + fileName = StringUtils.format("{}/service/{}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")) { @@ -235,29 +245,29 @@ public class VelocityUtils { * * @return 返回字典组 */ - public static String getDicts (GenTable genTable) { + public static String getDictList(GenTable genTable) { List columns = genTable.getColumns(); - Set dicts = new HashSet<>(); - addDicts(dicts, columns); + Set dictSet = new HashSet<>(); + addDictList(dictSet, columns); if (StringUtils.isNotNull(genTable.getSubTable())) { List subColumns = genTable.getSubTable().getColumns(); - addDicts(dicts, subColumns); + addDictList(dictSet, subColumns); } - return StringUtils.join(dicts, ", "); + return StringUtils.join(dictSet, ", "); } /** * 添加字典列表 * - * @param dicts 字典列表 + * @param dictList 字典列表 * @param columns 列集合 */ - public static void addDicts (Set dicts, List columns) { + public static void addDictList(Set dictList, List 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() + "'"); + dictList.add("'" + column.getDictType() + "'"); } } } @@ -296,7 +306,7 @@ public class VelocityUtils { * * @return 树编码 */ - public static String getTreecode (JSONObject paramsObj) { + public static String getTreeCode(JSONObject paramsObj) { if (paramsObj.containsKey(GenConstants.TREE_CODE)) { return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); } diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm index baa0527..0b1bf6a 100644 --- a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/controller.java.vm @@ -1,8 +1,10 @@ package ${packageName}.controller; import java.util.List; +import javax.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpServletResponse; +import io.swagger.annotations.*; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -12,16 +14,18 @@ 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.muyu.common.log.annotation.Log; -import com.muyu.common.log.enums.BusinessType; -import com.muyu.common.security.annotation.RequiresPermissions; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.common.enums.BusinessType; import ${packageName}.domain.${ClassName}; -import ${packageName}.service.I${ClassName}Service; -import com.muyu.common.core.web.controller.BaseController; -import com.muyu.common.core.domain.Result; -import com.muyu.common.core.utils.poi.ExcelUtil; -#if($table.crud || $table.sub) -import com.muyu.common.core.web.page.DataPageResp; +import ${packageName}.domain.req.${ClassName}QueryReq; +import ${packageName}.domain.req.${ClassName}SaveReq; +import ${packageName}.domain.req.${ClassName}EditReq; +import ${packageName}.service.${ClassName}Service; +import com.ruoyi.common.utils.poi.ExcelUtil; +#if($table.crud) +import com.ruoyi.common.core.page.TableDataInfo; #elseif($table.tree) #end @@ -31,41 +35,41 @@ import com.muyu.common.core.web.page.DataPageResp; * @author ${author} * @date ${datetime} */ +@Api(tags = "${functionName}") @RestController -@RequestMapping("/${businessName}") -public class ${ClassName}Controller extends BaseController -{ +@RequestMapping("/${moduleName}/${businessName}") +public class ${ClassName}Controller extends BaseController { @Autowired - private I${ClassName}Service ${className}Service; + private ${ClassName}Service ${className}Service; /** * 查询${functionName}列表 */ - @RequiresPermissions("${permissionPrefix}:list") - @PostMapping("/list") -#if($table.crud || $table.sub) - public Result list(${ClassName} ${className}) - { - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); - return Result.success(new DataPageResp<>(0,list)); + @ApiOperation("获取${functionName}列表") + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')") + @GetMapping("/list") +#if($table.crud) + public Result> list(${ClassName}QueryReq ${className}QueryReq) { + startPage(); + List<${ClassName}> list = ${className}Service.list(${ClassName}.queryBuild(${className}QueryReq)); + return getDataTable(list); } #elseif($table.tree) - public Result list(${ClassName} ${className}) - { - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); - return success(list); + public Result> list(${ClassName} ${className}) { + List<${ClassName}> list = ${className}Service.list(${className}); + return Result.success(list); } #end /** * 导出${functionName}列表 */ - @RequiresPermissions("${permissionPrefix}:export") + @ApiOperation("导出${functionName}列表") + @PreAuthorize("@ss.hasPermi('${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}); + public void export(HttpServletResponse response, ${ClassName} ${className}) { + List<${ClassName}> list = ${className}Service.list(${className}); ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); util.exportExcel(response, list, "${functionName}数据"); } @@ -73,43 +77,45 @@ public class ${ClassName}Controller extends BaseController /** * 获取${functionName}详细信息 */ - @RequiresPermissions("${permissionPrefix}:query") + @ApiOperation("获取${functionName}详细信息") + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')") @GetMapping(value = "/{${pkColumn.javaField}}") - public Result getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) - { - return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); + @ApiImplicitParam(name = "${pkColumn.javaField}", value = "${pkColumn.javaField}", required = true, dataType = "${pkColumn.javaType}", paramType = "path", dataTypeClass = ${pkColumn.javaType}.class) + public Result<${ClassName}> getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) { + return Result.success(${className}Service.getById(${pkColumn.javaField})); } /** * 新增${functionName} */ - @RequiresPermissions("${permissionPrefix}:add") + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')") @Log(title = "${functionName}", businessType = BusinessType.INSERT) @PostMapping - public Result add(@RequestBody ${ClassName} ${className}) - { - return toAjax(${className}Service.insert${ClassName}(${className})); + @ApiOperation("新增${functionName}") + public Result add(@RequestBody ${ClassName}SaveReq ${className}SaveReq) { + return toAjax(${className}Service.save(${ClassName}.saveBuild(${className}SaveReq))); } /** * 修改${functionName} */ - @RequiresPermissions("${permissionPrefix}:edit") + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')") @Log(title = "${functionName}", businessType = BusinessType.UPDATE) - @PutMapping - public Result edit(@RequestBody ${ClassName} ${className}) - { - return toAjax(${className}Service.update${ClassName}(${className})); + @PutMapping("/{${pkColumn.javaField}}") + @ApiOperation("修改${functionName}") + public Result edit(@PathVariable ${pkColumn.javaType} ${pkColumn.javaField}, @RequestBody ${ClassName}EditReq ${className}EditReq) { + return toAjax(${className}Service.updateById(${ClassName}.editBuild(${pkColumn.javaField},${className}EditReq))); } /** * 删除${functionName} */ - @RequiresPermissions("${permissionPrefix}:remove") + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')") @Log(title = "${functionName}", businessType = BusinessType.DELETE) @DeleteMapping("/{${pkColumn.javaField}s}") - public Result remove(@PathVariable("${pkColumn.javaField}s") ${pkColumn.javaType}[] ${pkColumn.javaField}s) - { - return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); + @ApiOperation("删除${functionName}") + @ApiImplicitParam(name = "${pkColumn.javaField}", value = "${pkColumn.javaField}", required = true, dataType = "${pkColumn.javaType}", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") + public Result remove(@PathVariable List<${pkColumn.javaType}> ${pkColumn.javaField}s) { + return toAjax(${className}Service.removeBatchByIds(${pkColumn.javaField}s)); } } diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm index 1292991..96a65a2 100644 --- a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/domain.java.vm @@ -3,11 +3,23 @@ package ${packageName}.domain; #foreach ($import in $importList) import ${import}; #end -import com.muyu.common.core.annotation.Excel; -#if($table.crud || $table.sub) -import com.muyu.common.core.web.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.ruoyi.common.annotation.Excel; +import ${packageName}.domain.req.${ClassName}QueryReq; +import ${packageName}.domain.req.${ClassName}SaveReq; +import ${packageName}.domain.req.${ClassName}EditReq; +#if($table.crud) +import com.ruoyi.common.core.domain.BaseEntity; #elseif($table.tree) -import com.muyu.common.core.web.domain.TreeEntity; +import com.ruoyi.common.core.domain.TreeEntity; #end /** @@ -16,13 +28,20 @@ import com.muyu.common.core.web.domain.TreeEntity; * @author ${author} * @date ${datetime} */ -#if($table.crud || $table.sub) +#if($table.crud) #set($Entity="BaseEntity") #elseif($table.tree) #set($Entity="TreeEntity") #end -public class ${ClassName} extends ${Entity} -{ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("${tableName}") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "${ClassName}", description = "${functionName}") +public class ${ClassName} extends ${Entity} { + private static final long serialVersionUID = 1L; #foreach ($column in $columns) @@ -44,60 +63,77 @@ public class ${ClassName} extends ${Entity} @Excel(name = "${comment}") #end #end +#if($column.javaField == $pkColumn.javaField) + @TableId(value = "${pkColumn.columnName}",type = IdType.AUTO) +#end +#set($comment='') +#if($column.isRequired == '1') + #set($comment=', required = true') +#end + @ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}"$comment) private $column.javaType $column.javaField; #end #end -#if($table.sub) - /** $table.subTable.functionName信息 */ - private List<${subClassName}> ${subclassName}List; + /** + * 查询构造器 + */ + public static ${ClassName} queryBuild( ${ClassName}QueryReq ${className}QueryReq){ + return ${ClassName}.builder() + #foreach ($column in $columns) + #if($column.isQuery == '1') + #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 + .${column.javaField}(${className}QueryReq.get${AttrName}()) + #end + #end + #end + .build(); + } -#end + /** + * 添加构造器 + */ + public static ${ClassName} saveBuild(${ClassName}SaveReq ${className}SaveReq){ + return ${ClassName}.builder() + #foreach ($column in $columns) + #if($column.isEdit == '1') + #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 + .${column.javaField}(${className}SaveReq.get${AttrName}()) + #end + #end + #end + .build(); + } + + /** + * 修改构造器 + */ + public static ${ClassName} editBuild(${pkColumn.javaType} ${pkColumn.javaField}, ${ClassName}EditReq ${className}EditReq){ + return ${ClassName}.builder() + .${pkColumn.javaField}(${pkColumn.javaField}) #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)}) + #if($column.isEdit == '1') + #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 + .${column.javaField}(${className}EditReq.get${AttrName}()) + #end + #end #end - public void set${AttrName}($column.javaType $column.javaField) - { - this.$column.javaField = $column.javaField; + .build(); } - 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/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/edit.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/edit.java.vm new file mode 100644 index 0000000..0218bf2 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/edit.java.vm @@ -0,0 +1,66 @@ +package ${packageName}.domain.req; + +#foreach ($import in $importList) +import ${import}; +#end +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.ruoyi.common.annotation.Excel; +#if($table.crud) +import com.ruoyi.common.core.domain.BaseEntity; +#elseif($table.tree) +import com.ruoyi.common.core.domain.TreeEntity; +#end + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($table.crud) + #set($Entity="BaseEntity") +#elseif($table.tree) + #set($Entity="TreeEntity") +#end +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "${ClassName}EditReq", description = "${functionName}") +public class ${ClassName}EditReq extends ${Entity} { + + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) + #if(!$table.isSuperColumn($column.javaField)) + #if($column.isEdit == '1') + /** $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($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + #end + #end + #set($isRequired='') + #if($column.isRequired == '1') + #set($isRequired=', required = true') + #end + @ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}"$isRequired) + private $column.javaType $column.javaField; + + #end + #end +#end +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm index 7e7d7c2..2926740 100644 --- a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/mapper.java.vm @@ -1,91 +1,15 @@ package ${packageName}.mapper; import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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}); +public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> { - /** - * 查询${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/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/query.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/query.java.vm new file mode 100644 index 0000000..65876b7 --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/query.java.vm @@ -0,0 +1,65 @@ +package ${packageName}.domain.req; + +#foreach ($import in $importList) +import ${import}; +#end +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.ruoyi.common.annotation.Excel; +#if($table.crud) +import com.ruoyi.common.core.domain.BaseEntity; +#elseif($table.tree) +import com.ruoyi.common.core.domain.TreeEntity; +#end + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($table.crud) +#set($Entity="BaseEntity") +#elseif($table.tree) +#set($Entity="TreeEntity") +#end +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "${ClassName}QueryReq", description = "${functionName}") +public class ${ClassName}QueryReq extends ${Entity} { + + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.isQuery == '1') + /** $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($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + #end +#end +#if($column.javaField == $pkColumn.javaField) + @TableId(value = "${pkColumn.javaField}",type = IdType.AUTO) +#end + @ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}") + private $column.javaType $column.javaField; + +#end +#end +#end +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/save.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/save.java.vm new file mode 100644 index 0000000..34952af --- /dev/null +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/save.java.vm @@ -0,0 +1,67 @@ +package ${packageName}.domain.req; + +#foreach ($import in $importList) +import ${import}; +#end +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.ruoyi.common.annotation.Excel; +#if($table.crud) +import com.ruoyi.common.core.domain.BaseEntity; +#elseif($table.tree) +import com.ruoyi.common.core.domain.TreeEntity; +#end + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($table.crud) + #set($Entity="BaseEntity") +#elseif($table.tree) + #set($Entity="TreeEntity") +#end +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "${ClassName}SaveReq", description = "${functionName}") +public class ${ClassName}SaveReq extends ${Entity} { + + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) + #if(!$table.isSuperColumn($column.javaField)) + #if($column.isInsert == '1') + /** $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($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + #end + #end + + #set($isRequired='') + #if($column.isRequired == '1') + #set($isRequired=', required = true') + #end + @ApiModelProperty(name = "${column.columnComment}", value = "${column.columnComment}"$isRequired) + private $column.javaType $column.javaField; + + #end + #end +#end +} diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm index 264882b..89bbdf4 100644 --- a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/service.java.vm @@ -2,60 +2,21 @@ package ${packageName}.service; import java.util.List; import ${packageName}.domain.${ClassName}; +import com.baomidou.mybatisplus.extension.service.IService; /** * ${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}); - +public interface ${ClassName}Service extends IService<${ClassName}> { /** * 查询${functionName}列表 - * + * * @param ${className} ${functionName} * @return ${functionName}集合 */ - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + public List<${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/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm index 3904af5..28dbce6 100644 --- a/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm +++ b/cloud-modules/cloud-modules-gen/src/main/resources/vm/java/serviceImpl.java.vm @@ -1,23 +1,16 @@ package ${packageName}.service.impl; import java.util.List; -#foreach ($column in $columns) -#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') -import com.muyu.common.core.utils.DateUtils; -#break -#end -#end -import org.springframework.beans.factory.annotation.Autowired; + +import com.ruoyi.common.utils.ObjUtils; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -#if($table.sub) -import java.util.ArrayList; -import com.muyu.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; +import ${packageName}.service.${ClassName}Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; /** * ${functionName}Service业务层处理 @@ -25,23 +18,9 @@ import ${packageName}.service.I${ClassName}Service; * @author ${author} * @date ${datetime} */ +@Slf4j @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}); - } +public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements ${ClassName}Service { /** * 查询${functionName}列表 @@ -50,120 +29,49 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service * @return ${functionName} */ @Override - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) - { - return ${className}Mapper.select${ClassName}List(${className}); - } + public List<${ClassName}> list(${ClassName} ${className}) { + LambdaQueryWrapper<${ClassName}> queryWrapper = new LambdaQueryWrapper<>(); +#foreach($column in $columns) + #set($queryType=$column.queryType) + #set($javaField=$column.javaField) + #set($JavaField=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - /** - * 新增${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); - } + #if($column.query) + #if($queryType == "EQ") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.eq(${ClassName}::get$JavaField, ${className}.get$JavaField()); } - } + #elseif($queryType == "NE") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.ne(${ClassName}::get$JavaField, ${className}.get$JavaField()); + } + #elseif($queryType == "GT") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.gt(${ClassName}::get$JavaField, ${className}.get$JavaField()); + } + #elseif($queryType == "GTE") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.ge(${ClassName}::get$JavaField, ${className}.get$JavaField()); + } + #elseif($queryType == "LT") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.lt()${ClassName}::get$JavaField, ${className}.get$JavaField()); + } + #elseif($queryType == "LTE") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.le()${ClassName}::get$JavaField, ${className}.get$JavaField()); + } + #elseif($queryType == "LIKE") + if (ObjUtils.notNull(${className}.get$JavaField())){ + queryWrapper.like(${ClassName}::get$JavaField, ${className}.get$JavaField()); + } + #elseif($queryType == "BETWEEN") + if (ObjUtils.notChildNull(${className}.getBetween("$JavaField"))){ + queryWrapper.between(${ClassName}::get$JavaField, ${className}.getBeginParam("$JavaField"),${className}.getEndParam("$JavaField")); + } + #end + #end #end + return list(queryWrapper); + } }