From ea631ee42b7a6aa7249ed760aa67e14eaa0dffa1 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 10 Feb 2021 14:52:28 +0800 Subject: [PATCH] 1. 调整代码生成器模板的目录 2. 调整代码的方法 --- src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++-------------- src/main/resources/codegen/controller/controller.vm | 76 ---------------------------------------------------------------------------- src/main/resources/codegen/controller/vo/_column.vm | 13 ------------- src/main/resources/codegen/controller/vo/baseVO.vm | 21 --------------------- src/main/resources/codegen/controller/vo/createReqVO.vm | 30 ------------------------------ src/main/resources/codegen/controller/vo/pageReqVO.vm | 44 -------------------------------------------- src/main/resources/codegen/controller/vo/respVO.vm | 20 -------------------- src/main/resources/codegen/controller/vo/updateReqVO.vm | 30 ------------------------------ src/main/resources/codegen/convert/convert.vm | 32 -------------------------------- src/main/resources/codegen/dal/do.vm | 40 ---------------------------------------- src/main/resources/codegen/dal/mapper.vm | 49 ------------------------------------------------- src/main/resources/codegen/enums/errorcode.vm | 2 -- src/main/resources/codegen/java/controller/controller.vm | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/codegen/java/controller/vo/_column.vm | 13 +++++++++++++ src/main/resources/codegen/java/controller/vo/baseVO.vm | 21 +++++++++++++++++++++ src/main/resources/codegen/java/controller/vo/createReqVO.vm | 30 ++++++++++++++++++++++++++++++ src/main/resources/codegen/java/controller/vo/pageReqVO.vm | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/codegen/java/controller/vo/respVO.vm | 20 ++++++++++++++++++++ src/main/resources/codegen/java/controller/vo/updateReqVO.vm | 30 ++++++++++++++++++++++++++++++ src/main/resources/codegen/java/convert/convert.vm | 32 ++++++++++++++++++++++++++++++++ src/main/resources/codegen/java/dal/do.vm | 40 ++++++++++++++++++++++++++++++++++++++++ src/main/resources/codegen/java/dal/mapper.vm | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/codegen/java/enums/errorcode.vm | 2 ++ src/main/resources/codegen/java/service/service.vm | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/codegen/java/service/serviceImpl.vm | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/codegen/service/service.vm | 62 -------------------------------------------------------------- src/main/resources/codegen/service/serviceImpl.vm | 80 -------------------------------------------------------------------------------- 27 files changed, 545 insertions(+), 513 deletions(-) delete mode 100644 src/main/resources/codegen/controller/controller.vm delete mode 100644 src/main/resources/codegen/controller/vo/_column.vm delete mode 100644 src/main/resources/codegen/controller/vo/baseVO.vm delete mode 100644 src/main/resources/codegen/controller/vo/createReqVO.vm delete mode 100644 src/main/resources/codegen/controller/vo/pageReqVO.vm delete mode 100644 src/main/resources/codegen/controller/vo/respVO.vm delete mode 100644 src/main/resources/codegen/controller/vo/updateReqVO.vm delete mode 100644 src/main/resources/codegen/convert/convert.vm delete mode 100644 src/main/resources/codegen/dal/do.vm delete mode 100644 src/main/resources/codegen/dal/mapper.vm delete mode 100644 src/main/resources/codegen/enums/errorcode.vm create mode 100644 src/main/resources/codegen/java/controller/controller.vm create mode 100644 src/main/resources/codegen/java/controller/vo/_column.vm create mode 100644 src/main/resources/codegen/java/controller/vo/baseVO.vm create mode 100644 src/main/resources/codegen/java/controller/vo/createReqVO.vm create mode 100644 src/main/resources/codegen/java/controller/vo/pageReqVO.vm create mode 100644 src/main/resources/codegen/java/controller/vo/respVO.vm create mode 100644 src/main/resources/codegen/java/controller/vo/updateReqVO.vm create mode 100644 src/main/resources/codegen/java/convert/convert.vm create mode 100644 src/main/resources/codegen/java/dal/do.vm create mode 100644 src/main/resources/codegen/java/dal/mapper.vm create mode 100644 src/main/resources/codegen/java/enums/errorcode.vm create mode 100644 src/main/resources/codegen/java/service/service.vm create mode 100644 src/main/resources/codegen/java/service/serviceImpl.vm delete mode 100644 src/main/resources/codegen/service/service.vm delete mode 100644 src/main/resources/codegen/service/serviceImpl.vm diff --git a/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java b/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java index 8dc5771..7eef432 100644 --- a/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java +++ b/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java @@ -1,5 +1,7 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.template.TemplateConfig; import cn.hutool.extra.template.TemplateEngine; import cn.hutool.extra.template.TemplateUtil; @@ -14,6 +16,7 @@ import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColum import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; import cn.iocoder.dashboard.util.collection.CollectionUtils; import cn.iocoder.dashboard.util.date.DateUtils; +import com.google.common.collect.Maps; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -34,6 +37,29 @@ import static cn.hutool.core.text.CharSequenceUtil.*; @Component public class ToolCodegenEngine { + /** + * 模板配置 + * key:模板在 resources 的地址 + * value:生成的路径 + */ + private static final Map TEMPLATES = MapUtil.builder() + // Java + .put("codegen/java/controller/controller.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/${table.className}Controller.java") + .put("codegen/java/controller/vo/baseVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}BaseVO.java") + .put("codegen/java/controller/vo/createReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}CreateReqVO.java") + .put("codegen/java/controller/vo/pageReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}PageReqVO.java") + .put("codegen/java/controller/vo/respVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}RespVO.java") + .put("codegen/java/controller/vo/updateReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}UpdateReqVO.java") + .put("codegen/java/convert/convert.vm", "java/${basePackage}/${table.moduleName}/convert/${table.businessName}/${table.className}Convert.java") + .put("codegen/java/dal/do.vm", "java/${basePackage}/${table.moduleName}/dal/dataobject/${table.businessName}/${table.className}DO.java") + .put("codegen/java/dal/mapper.vm", "java/${basePackage}/${table.moduleName}/dal/mysql/${table.businessName}/${table.className}Mapper.java") + .put("codegen/java/enums/errorcode.vm", "java/${basePackage}.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.java") + .put("codegen/java/service/service.vm", "java/${basePackage}/${table.moduleName}/service/${table.businessName}/${table.className}Service.java") + .put("codegen/java/service/serviceImpl.vm", "java/${basePackage}/${table.moduleName}/service/${table.businessName}/impl/${table.className}ServiceImpl.java") + // Vue + // SQL + .build(); + @Resource private ToolCodegenBuilder codegenBuilder; @@ -72,7 +98,7 @@ public class ToolCodegenEngine { globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); } - public void execute(ToolCodegenTableDO table, List columns) { + public Map execute(ToolCodegenTableDO table, List columns) { // 创建 bindingMap Map bindingMap = new HashMap<>(globalBindingMap); bindingMap.put("table", table); @@ -81,6 +107,7 @@ public class ToolCodegenEngine { // moduleName 相关 String simpleModuleName = codegenBuilder.getSimpleModuleName(table.getModuleName()); bindingMap.put("simpleModuleName", simpleModuleName); // 将 system 转成 sys + bindingMap.put("simpleModuleName_upperFirst", upperFirst(simpleModuleName)); // 将 sys 转成 Sys // className 相关 String simpleClassName = subAfter(table.getClassName(), upperFirst(simpleModuleName) , false); // 将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 @@ -88,20 +115,25 @@ public class ToolCodegenEngine { bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 bindingMap.put("simpleClassName_strikeCase", toSymbolCase(simpleClassName, '-')); // 将 DictType 转换成 dict-type + // 执行生成 -// String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/controller/vo/pageReqVO.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/controller/vo/baseVO.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/controller/vo/createReqVO.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/controller/vo/updateReqVO.vm").render(bindingMap); - String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/convert/convert.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/enums/errorcode.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/service/service.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/service/serviceImpl.vm").render(bindingMap); -// String result = templateEngine.getTemplate("codegen/controller/controller.vm").render(bindingMap); - System.out.println(result); + final Map result = Maps.newHashMapWithExpectedSize(TEMPLATES.size()); + TEMPLATES.forEach((vmPath, filePath) -> { + filePath = formatFilePath(filePath, bindingMap); + String content = templateEngine.getTemplate(vmPath).render(bindingMap); + result.put(filePath, content); + }); + return result; + } + + private String formatFilePath(String filePath, Map bindingMap) { + filePath = StrUtil.replace(filePath, "${basePackage}", ((String) bindingMap.get("basePackage")).replaceAll("\\.", "/")); + ToolCodegenTableDO table = (ToolCodegenTableDO) bindingMap.get("table"); + filePath = StrUtil.replace(filePath, "${simpleModuleName_upperFirst}", (String) bindingMap.get("simpleModuleName_upperFirst")); + filePath = StrUtil.replace(filePath, "${table.moduleName}", table.getModuleName()); + filePath = StrUtil.replace(filePath, "${table.businessName}", table.getBusinessName()); + filePath = StrUtil.replace(filePath, "${table.className}", table.getClassName()); + return filePath; } } diff --git a/src/main/resources/codegen/controller/controller.vm b/src/main/resources/codegen/controller/controller.vm deleted file mode 100644 index fe05249..0000000 --- a/src/main/resources/codegen/controller/controller.vm +++ /dev/null @@ -1,76 +0,0 @@ -package ${basePackage}.${table.moduleName}.controller.${table.businessName}; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import io.swagger.annotations.*; - -import javax.validation.constraints.*; -import javax.validation.*; -import java.util.*; - -import ${PageResultClassName}; -import ${CommonResultClassName}; -import static ${CommonResultClassName}.success; - -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; -import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service; - -@Api(tags = "${table.classComment}") -@RestController -##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 -@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") -@Validated -public class ${table.className}Controller { - - @Resource - private ${table.className}Service ${classNameVar}Service; - - @ApiOperation("创建${table.classComment}") - @PostMapping("/create") - public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO) { - return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); - } - - @ApiOperation("更新${table.classComment}") - @PutMapping("/update") - public CommonResult update${simpleClassName}(@Valid ${table.className}UpdateReqVO updateReqVO) { - ${classNameVar}Service.update${simpleClassName}(updateReqVO); - return success(true); - } - - @ApiOperation("删除${table.classComment}") - @DeleteMapping("/delete") - @ApiImplicitParam(name = "id", value = "编号", required = true) - public CommonResult delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${classNameVar}Service.delete${simpleClassName}(id); - return success(true); - } - - @GetMapping("/get") - @ApiOperation("获得${table.classComment}") - @ApiImplicitParam(name = "id", value = "编号", required = true) - public CommonResult<${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); - return success(${table.className}Convert.INSTANCE.convert(${classNameVar})); - } - - @GetMapping("/list") - @ApiOperation("获得${table.classComment}列表") - @ApiImplicitParam(name = "ids", value = "编号列表", required = true) - public CommonResult> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids); - return success(${table.className}Convert.INSTANCE.convertList(list)); - } - - @ApiOperation("获得${table.classComment}分页") - @GetMapping("/page") - public CommonResult> get${simpleClassName}Page(@Valid ${table.className}PageReqVO pageVO) { - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageVO); - return success(${table.className}Convert.INSTANCE.convertPage(pageResult)); - } - -} diff --git a/src/main/resources/codegen/controller/vo/_column.vm b/src/main/resources/codegen/controller/vo/_column.vm deleted file mode 100644 index 2e22225..0000000 --- a/src/main/resources/codegen/controller/vo/_column.vm +++ /dev/null @@ -1,13 +0,0 @@ -## 提供给 baseVO、createVO、updateVO 生成字段 - @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end) -#if (!${column.nullable})## 判断 @NotEmpty 和 @NotNull 注解 -#if (${field.fieldType} == 'String') - @NotEmpty(message = "${column.columnComment}不能为空") -#else - @NotNull(message = "${column.columnComment}不能为空") -#end -#end -#if (${column.javaType} == "Date")## 时间类型 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) -#end - private ${column.javaType} ${column.javaField}; diff --git a/src/main/resources/codegen/controller/vo/baseVO.vm b/src/main/resources/codegen/controller/vo/baseVO.vm deleted file mode 100644 index 324e60e..0000000 --- a/src/main/resources/codegen/controller/vo/baseVO.vm +++ /dev/null @@ -1,21 +0,0 @@ -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; -import javax.validation.constraints.*; - -/** -* ${table.classComment} Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 - #parse("codegen/controller/vo/_column.vm") - -#end -#end -} diff --git a/src/main/resources/codegen/controller/vo/createReqVO.vm b/src/main/resources/codegen/controller/vo/createReqVO.vm deleted file mode 100644 index 82c1911..0000000 --- a/src/main/resources/codegen/controller/vo/createReqVO.vm +++ /dev/null @@ -1,30 +0,0 @@ -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; -import javax.validation.constraints.*; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}) - && ${column.javaType} == "Date")## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end - -@ApiModel("${table.classComment}创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${table.className}CreateReqVO extends ${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 - #parse("codegen/controller/vo/_column.vm") - -#end -#end -} diff --git a/src/main/resources/codegen/controller/vo/pageReqVO.vm b/src/main/resources/codegen/controller/vo/pageReqVO.vm deleted file mode 100644 index 1fe25b9..0000000 --- a/src/main/resources/codegen/controller/vo/pageReqVO.vm +++ /dev/null @@ -1,44 +0,0 @@ -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; -import ${PageParamClassName}; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperation} && ${column.javaType} == "Date")## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) -#if (${column.javaType} == "Date")## 时间类型 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) -#end - @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -@ApiModel("${table.classComment}分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${table.className}PageReqVO extends PageParam { - -#foreach ($column in $columns) -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - #columnTpl('begin', '开始') - - #columnTpl('end', '结束') -#else##情况二,非 Between 的时间 -#columnTpl('', '') -#end - -#end -#end -} diff --git a/src/main/resources/codegen/controller/vo/respVO.vm b/src/main/resources/codegen/controller/vo/respVO.vm deleted file mode 100644 index 9176c07..0000000 --- a/src/main/resources/codegen/controller/vo/respVO.vm +++ /dev/null @@ -1,20 +0,0 @@ -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; - -@ApiModel("${table.classComment} Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${table.className}RespVO extends ${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.listOperationResult} && (!${column.createOperation} || !${column.updateOperation}))##不是通用字段 - @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType} ${column.javaField}; - -#end -#end -} diff --git a/src/main/resources/codegen/controller/vo/updateReqVO.vm b/src/main/resources/codegen/controller/vo/updateReqVO.vm deleted file mode 100644 index e10abcc..0000000 --- a/src/main/resources/codegen/controller/vo/updateReqVO.vm +++ /dev/null @@ -1,30 +0,0 @@ -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; -import javax.validation.constraints.*; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}) - && ${column.javaType} == "Date"))## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end - -@ApiModel("${table.classComment}更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${table.className}UpdateReqVO extends ${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 - #parse("codegen/controller/vo/_column.vm") - -#end -#end -} diff --git a/src/main/resources/codegen/convert/convert.vm b/src/main/resources/codegen/convert/convert.vm deleted file mode 100644 index 345f4a2..0000000 --- a/src/main/resources/codegen/convert/convert.vm +++ /dev/null @@ -1,32 +0,0 @@ -package ${basePackage}.${table.moduleName}.convert.${table.businessName}; - -import java.util.*; - -import ${PageResultClassName}; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; - -/** -* ${table.classComment} Convert -* -* @author ${table.author} -*/ -@Mapper -public interface ${table.className}Convert { - - ${table.className}Convert INSTANCE = Mappers.getMapper(${table.className}Convert.class); - - ${table.className}DO convert(${table.className}CreateReqVO bean); - - ${table.className}DO convert(${table.className}UpdateReqVO bean); - - ${table.className}RespVO convert(${table.className}DO bean); - - List<${table.className}RespVO> convertList(List<${table.className}DO> list); - - PageResult<${table.className}RespVO> convertPage(PageResult<${table.className}DO> page); - -} diff --git a/src/main/resources/codegen/dal/do.vm b/src/main/resources/codegen/dal/do.vm deleted file mode 100644 index d6d35f4..0000000 --- a/src/main/resources/codegen/dal/do.vm +++ /dev/null @@ -1,40 +0,0 @@ -package ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}; - -import lombok.*; -import java.util.*; -import com.baomidou.mybatisplus.annotation.*; -import ${BaseDOClassName}; - -/** -* ${table.classComment} DO -* -* @author ${table.author} -*/ -@TableName("${table.tableName}") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ${table.className}DO extends BaseDO { - -#foreach ($column in $columns) -#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 - /** - * ${column.columnComment} - */ -#if ("$!column.dictType" != "")##处理枚举值 - // TODO 枚举 ${column.dictType} -#end -#if (${column.primaryKey} && ${column.javaType} != 'String')##处理主键 + 非 String 的情况 - @TableId -#end -#if (${column.primaryKey} && ${column.javaType} == 'String')##处理主键 + String 的情况 - @TableId(type = IdType.INPUT) -#end - private ${column.javaType} ${column.javaField}; -#end -#end - -} diff --git a/src/main/resources/codegen/dal/mapper.vm b/src/main/resources/codegen/dal/mapper.vm deleted file mode 100644 index 6eaced4..0000000 --- a/src/main/resources/codegen/dal/mapper.vm +++ /dev/null @@ -1,49 +0,0 @@ -package ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}; - -import ${PageResultClassName}; -import ${QueryWrapperClassName}; -import ${BaseMapperClassName}; -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import org.apache.ibatis.annotations.Mapper; -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.${table.className}PageReqVO; - -/** -* ${table.classComment} Mapper -* -* @author ${table.author} -*/ -@Mapper -public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { - - default PageResult<${table.className}DO> selectPage(${table.className}PageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX<${table.className}DO>() -#foreach ($column in $columns) -#if (${column.listOperation}) -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 -#if (${column.listOperationCondition} == "=")##情况一,= 的时候 - .eqIfPresent("${column.columnName}", reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 - .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">")##情况三,> 的时候 - .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 - .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<")##情况五,< 的时候 - .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 - .likeIfPresent("${column.columnName}", reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 - .betweenIfPresent("${column.columnName}", reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) -#end -#end -#end - ); - } - -} diff --git a/src/main/resources/codegen/enums/errorcode.vm b/src/main/resources/codegen/enums/errorcode.vm deleted file mode 100644 index 099a1d2..0000000 --- a/src/main/resources/codegen/enums/errorcode.vm +++ /dev/null @@ -1,2 +0,0 @@ -// ========== ${table.classComment} TODO 补充编号 ========== -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在}"); diff --git a/src/main/resources/codegen/java/controller/controller.vm b/src/main/resources/codegen/java/controller/controller.vm new file mode 100644 index 0000000..fe05249 --- /dev/null +++ b/src/main/resources/codegen/java/controller/controller.vm @@ -0,0 +1,76 @@ +package ${basePackage}.${table.moduleName}.controller.${table.businessName}; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import io.swagger.annotations.*; + +import javax.validation.constraints.*; +import javax.validation.*; +import java.util.*; + +import ${PageResultClassName}; +import ${CommonResultClassName}; +import static ${CommonResultClassName}.success; + +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; +import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; +import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; +import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service; + +@Api(tags = "${table.classComment}") +@RestController +##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 +@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") +@Validated +public class ${table.className}Controller { + + @Resource + private ${table.className}Service ${classNameVar}Service; + + @ApiOperation("创建${table.classComment}") + @PostMapping("/create") + public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO) { + return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); + } + + @ApiOperation("更新${table.classComment}") + @PutMapping("/update") + public CommonResult update${simpleClassName}(@Valid ${table.className}UpdateReqVO updateReqVO) { + ${classNameVar}Service.update${simpleClassName}(updateReqVO); + return success(true); + } + + @ApiOperation("删除${table.classComment}") + @DeleteMapping("/delete") + @ApiImplicitParam(name = "id", value = "编号", required = true) + public CommonResult delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { + ${classNameVar}Service.delete${simpleClassName}(id); + return success(true); + } + + @GetMapping("/get") + @ApiOperation("获得${table.classComment}") + @ApiImplicitParam(name = "id", value = "编号", required = true) + public CommonResult<${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { + ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); + return success(${table.className}Convert.INSTANCE.convert(${classNameVar})); + } + + @GetMapping("/list") + @ApiOperation("获得${table.classComment}列表") + @ApiImplicitParam(name = "ids", value = "编号列表", required = true) + public CommonResult> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) { + List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids); + return success(${table.className}Convert.INSTANCE.convertList(list)); + } + + @ApiOperation("获得${table.classComment}分页") + @GetMapping("/page") + public CommonResult> get${simpleClassName}Page(@Valid ${table.className}PageReqVO pageVO) { + PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageVO); + return success(${table.className}Convert.INSTANCE.convertPage(pageResult)); + } + +} diff --git a/src/main/resources/codegen/java/controller/vo/_column.vm b/src/main/resources/codegen/java/controller/vo/_column.vm new file mode 100644 index 0000000..2e22225 --- /dev/null +++ b/src/main/resources/codegen/java/controller/vo/_column.vm @@ -0,0 +1,13 @@ +## 提供给 baseVO、createVO、updateVO 生成字段 + @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end) +#if (!${column.nullable})## 判断 @NotEmpty 和 @NotNull 注解 +#if (${field.fieldType} == 'String') + @NotEmpty(message = "${column.columnComment}不能为空") +#else + @NotNull(message = "${column.columnComment}不能为空") +#end +#end +#if (${column.javaType} == "Date")## 时间类型 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) +#end + private ${column.javaType} ${column.javaField}; diff --git a/src/main/resources/codegen/java/controller/vo/baseVO.vm b/src/main/resources/codegen/java/controller/vo/baseVO.vm new file mode 100644 index 0000000..4eba009 --- /dev/null +++ b/src/main/resources/codegen/java/controller/vo/baseVO.vm @@ -0,0 +1,21 @@ +package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; + +/** +* ${table.classComment} Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class ${table.className}BaseVO { + +#foreach ($column in $columns) +#if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 + #parse("codegen/java/controller/vo/_column.vm") + +#end +#end +} diff --git a/src/main/resources/codegen/java/controller/vo/createReqVO.vm b/src/main/resources/codegen/java/controller/vo/createReqVO.vm new file mode 100644 index 0000000..3ef3618 --- /dev/null +++ b/src/main/resources/codegen/java/controller/vo/createReqVO.vm @@ -0,0 +1,30 @@ +package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; +## 处理 Date 字段的引入 +#foreach ($column in $columns) +#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}) + && ${column.javaType} == "Date")## 时间类型 +import org.springframework.format.annotation.DateTimeFormat; + +import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +#break +#end +#end + +@ApiModel("${table.classComment}创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ${table.className}CreateReqVO extends ${table.className}BaseVO { + +#foreach ($column in $columns) +#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 + #parse("codegen/java/controller/vo/_column.vm") + +#end +#end +} diff --git a/src/main/resources/codegen/java/controller/vo/pageReqVO.vm b/src/main/resources/codegen/java/controller/vo/pageReqVO.vm new file mode 100644 index 0000000..1fe25b9 --- /dev/null +++ b/src/main/resources/codegen/java/controller/vo/pageReqVO.vm @@ -0,0 +1,44 @@ +package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import ${PageParamClassName}; +## 处理 Date 字段的引入 +#foreach ($column in $columns) +#if (${column.listOperation} && ${column.javaType} == "Date")## 时间类型 +import org.springframework.format.annotation.DateTimeFormat; + +import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +#break +#end +#end +## 字段模板 +#macro(columnTpl $prefix $prefixStr) +#if (${column.javaType} == "Date")## 时间类型 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) +#end + @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) + private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; +#end + +@ApiModel("${table.classComment}分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ${table.className}PageReqVO extends PageParam { + +#foreach ($column in $columns) +#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 +#if (${column.listOperation})##查询操作 +#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 + #columnTpl('begin', '开始') + + #columnTpl('end', '结束') +#else##情况二,非 Between 的时间 +#columnTpl('', '') +#end + +#end +#end +} diff --git a/src/main/resources/codegen/java/controller/vo/respVO.vm b/src/main/resources/codegen/java/controller/vo/respVO.vm new file mode 100644 index 0000000..9176c07 --- /dev/null +++ b/src/main/resources/codegen/java/controller/vo/respVO.vm @@ -0,0 +1,20 @@ +package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; + +@ApiModel("${table.classComment} Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ${table.className}RespVO extends ${table.className}BaseVO { + +#foreach ($column in $columns) +#if (${column.listOperationResult} && (!${column.createOperation} || !${column.updateOperation}))##不是通用字段 + @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end) + private ${column.javaType} ${column.javaField}; + +#end +#end +} diff --git a/src/main/resources/codegen/java/controller/vo/updateReqVO.vm b/src/main/resources/codegen/java/controller/vo/updateReqVO.vm new file mode 100644 index 0000000..173b8db --- /dev/null +++ b/src/main/resources/codegen/java/controller/vo/updateReqVO.vm @@ -0,0 +1,30 @@ +package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; +## 处理 Date 字段的引入 +#foreach ($column in $columns) +#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}) + && ${column.javaType} == "Date"))## 时间类型 +import org.springframework.format.annotation.DateTimeFormat; + +import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +#break +#end +#end + +@ApiModel("${table.classComment}更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ${table.className}UpdateReqVO extends ${table.className}BaseVO { + +#foreach ($column in $columns) +#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 + #parse("codegen/java/controller/vo/_column.vm") + +#end +#end +} diff --git a/src/main/resources/codegen/java/convert/convert.vm b/src/main/resources/codegen/java/convert/convert.vm new file mode 100644 index 0000000..345f4a2 --- /dev/null +++ b/src/main/resources/codegen/java/convert/convert.vm @@ -0,0 +1,32 @@ +package ${basePackage}.${table.moduleName}.convert.${table.businessName}; + +import java.util.*; + +import ${PageResultClassName}; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; +import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; + +/** +* ${table.classComment} Convert +* +* @author ${table.author} +*/ +@Mapper +public interface ${table.className}Convert { + + ${table.className}Convert INSTANCE = Mappers.getMapper(${table.className}Convert.class); + + ${table.className}DO convert(${table.className}CreateReqVO bean); + + ${table.className}DO convert(${table.className}UpdateReqVO bean); + + ${table.className}RespVO convert(${table.className}DO bean); + + List<${table.className}RespVO> convertList(List<${table.className}DO> list); + + PageResult<${table.className}RespVO> convertPage(PageResult<${table.className}DO> page); + +} diff --git a/src/main/resources/codegen/java/dal/do.vm b/src/main/resources/codegen/java/dal/do.vm new file mode 100644 index 0000000..d6d35f4 --- /dev/null +++ b/src/main/resources/codegen/java/dal/do.vm @@ -0,0 +1,40 @@ +package ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import ${BaseDOClassName}; + +/** +* ${table.classComment} DO +* +* @author ${table.author} +*/ +@TableName("${table.tableName}") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ${table.className}DO extends BaseDO { + +#foreach ($column in $columns) +#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 + /** + * ${column.columnComment} + */ +#if ("$!column.dictType" != "")##处理枚举值 + // TODO 枚举 ${column.dictType} +#end +#if (${column.primaryKey} && ${column.javaType} != 'String')##处理主键 + 非 String 的情况 + @TableId +#end +#if (${column.primaryKey} && ${column.javaType} == 'String')##处理主键 + String 的情况 + @TableId(type = IdType.INPUT) +#end + private ${column.javaType} ${column.javaField}; +#end +#end + +} diff --git a/src/main/resources/codegen/java/dal/mapper.vm b/src/main/resources/codegen/java/dal/mapper.vm new file mode 100644 index 0000000..6eaced4 --- /dev/null +++ b/src/main/resources/codegen/java/dal/mapper.vm @@ -0,0 +1,49 @@ +package ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}; + +import ${PageResultClassName}; +import ${QueryWrapperClassName}; +import ${BaseMapperClassName}; +import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; +import org.apache.ibatis.annotations.Mapper; +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.${table.className}PageReqVO; + +/** +* ${table.classComment} Mapper +* +* @author ${table.author} +*/ +@Mapper +public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { + + default PageResult<${table.className}DO> selectPage(${table.className}PageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX<${table.className}DO>() +#foreach ($column in $columns) +#if (${column.listOperation}) +#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 +#if (${column.listOperationCondition} == "=")##情况一,= 的时候 + .eqIfPresent("${column.columnName}", reqVO.get${JavaField}()) +#end +#if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 + .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) +#end +#if (${column.listOperationCondition} == ">")##情况三,> 的时候 + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) +#end +#if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 + .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) +#end +#if (${column.listOperationCondition} == "<")##情况五,< 的时候 + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) +#end +#if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 + .likeIfPresent("${column.columnName}", reqVO.get${JavaField}()) +#end +#if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 + .betweenIfPresent("${column.columnName}", reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) +#end +#end +#end + ); + } + +} diff --git a/src/main/resources/codegen/java/enums/errorcode.vm b/src/main/resources/codegen/java/enums/errorcode.vm new file mode 100644 index 0000000..099a1d2 --- /dev/null +++ b/src/main/resources/codegen/java/enums/errorcode.vm @@ -0,0 +1,2 @@ +// ========== ${table.classComment} TODO 补充编号 ========== +ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在}"); diff --git a/src/main/resources/codegen/java/service/service.vm b/src/main/resources/codegen/java/service/service.vm new file mode 100644 index 0000000..5a00505 --- /dev/null +++ b/src/main/resources/codegen/java/service/service.vm @@ -0,0 +1,62 @@ +package ${basePackage}.${table.moduleName}.service.${table.businessName}; + +import java.util.*; +import javax.validation.*; +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; +import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; +import ${PageResultClassName}; + +/** +* ${table.classComment} Service 接口 +* +* @author ${table.author} +*/ +public interface ${table.className}Service { + + /** + * 创建${table.classComment} + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO); + + /** + * 更新${table.classComment} + * + * @param updateReqVO 更新信息 + */ + void update${simpleClassName}(@Valid ${table.className}UpdateReqVO updateReqVO); + + /** + * 删除${table.classComment} + * + * @param id 编号 + */ + void delete${simpleClassName}(${primaryColumn.javaType} id); + + /** + * 获得${table.classComment} + * + * @param id 编号 + * @return ${table.classComment} + */ + ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id); + + /** + * 获得${table.classComment}列表 + * + * @param ids 编号 + * @return ${table.classComment}列表 + */ + List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids); + + /** + * 获得${table.classComment}分页 + * + * @param pageReqVO 分页查询 + * @return ${table.classComment}分页 + */ + PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO); + +} diff --git a/src/main/resources/codegen/java/service/serviceImpl.vm b/src/main/resources/codegen/java/service/serviceImpl.vm new file mode 100644 index 0000000..1803f9e --- /dev/null +++ b/src/main/resources/codegen/java/service/serviceImpl.vm @@ -0,0 +1,80 @@ +package ${basePackage}.${table.moduleName}.service.${table.businessName}.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; +import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; +import ${PageResultClassName}; + +import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; +import ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; +import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service; + +import ${ServiceExceptionUtilClassName}; + +import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*; + +/** +* ${table.classComment} Service 实现类 +* +* @author ${table.author} +*/ +@Service +@Validated +public class ${table.className}ServiceImpl implements ${table.className}Service { + + @Resource + private ${table.className}Mapper ${classNameVar}Mapper; + + @Override + public ${primaryColumn.javaType} create${simpleClassName}(${table.className}CreateReqVO createReqVO) { + // 插入 + ${table.className}DO ${classNameVar} = ${table.className}Convert.INSTANCE.convert(createReqVO); + ${classNameVar}Mapper.insert(${classNameVar}); + // 返回 + return ${classNameVar}.getId(); + } + + @Override + public void update${simpleClassName}(${table.className}UpdateReqVO updateReqVO) { + // 校验存在 + this.validate${simpleClassName}Exists(updateReqVO.getId()); + // 更新 + ${table.className}DO updateObj = ${table.className}Convert.INSTANCE.convert(updateReqVO); + ${classNameVar}Mapper.updateById(updateObj); + } + + @Override + public void delete${simpleClassName}(${primaryColumn.javaType} id) { + // 校验存在 + this.validate${simpleClassName}Exists(id); + // 更新 + ${classNameVar}Mapper.deleteById(id); + } + + private void validate${simpleClassName}Exists(${primaryColumn.javaType} id) { + if (${classNameVar}Mapper.selectById(id) == null) { + throw ServiceExceptionUtil.exception(${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); + } + } + + @Override + public ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id) { + return ${classNameVar}Mapper.selectById(id); + } + + @Override + public List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids) { + return ${classNameVar}Mapper.selectBatchIds(ids); + } + + @Override + public PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO) { + return ${classNameVar}Mapper.selectPage(pageReqVO); + } + +} diff --git a/src/main/resources/codegen/service/service.vm b/src/main/resources/codegen/service/service.vm deleted file mode 100644 index 5a00505..0000000 --- a/src/main/resources/codegen/service/service.vm +++ /dev/null @@ -1,62 +0,0 @@ -package ${basePackage}.${table.moduleName}.service.${table.businessName}; - -import java.util.*; -import javax.validation.*; -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${PageResultClassName}; - -/** -* ${table.classComment} Service 接口 -* -* @author ${table.author} -*/ -public interface ${table.className}Service { - - /** - * 创建${table.classComment} - * - * @param createReqVO 创建信息 - * @return 编号 - */ - ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO); - - /** - * 更新${table.classComment} - * - * @param updateReqVO 更新信息 - */ - void update${simpleClassName}(@Valid ${table.className}UpdateReqVO updateReqVO); - - /** - * 删除${table.classComment} - * - * @param id 编号 - */ - void delete${simpleClassName}(${primaryColumn.javaType} id); - - /** - * 获得${table.classComment} - * - * @param id 编号 - * @return ${table.classComment} - */ - ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id); - - /** - * 获得${table.classComment}列表 - * - * @param ids 编号 - * @return ${table.classComment}列表 - */ - List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids); - - /** - * 获得${table.classComment}分页 - * - * @param pageReqVO 分页查询 - * @return ${table.classComment}分页 - */ - PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO); - -} diff --git a/src/main/resources/codegen/service/serviceImpl.vm b/src/main/resources/codegen/service/serviceImpl.vm deleted file mode 100644 index 488c88e..0000000 --- a/src/main/resources/codegen/service/serviceImpl.vm +++ /dev/null @@ -1,80 +0,0 @@ -package ${basePackage}.${table.moduleName}.service.${table.businessName}.impl; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${PageResultClassName}; - -import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; -import ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; -import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service; - -import ${ServiceExceptionUtilClassName}; - -import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName.substring(0,1).toUpperCase()}${simpleModuleName.substring(1)}ErrorCodeConstants.*; - -/** -* ${table.classComment} Service 实现类 -* -* @author ${table.author} -*/ -@Service -@Validated -public class ${table.className}ServiceImpl implements ${table.className}Service { - - @Resource - private ${table.className}Mapper ${classNameVar}Mapper; - - @Override - public ${primaryColumn.javaType} create${simpleClassName}(${table.className}CreateReqVO createReqVO) { - // 插入 - ${table.className}DO ${classNameVar} = ${table.className}Convert.INSTANCE.convert(createReqVO); - ${classNameVar}Mapper.insert(${classNameVar}); - // 返回 - return ${classNameVar}.getId(); - } - - @Override - public void update${simpleClassName}(${table.className}UpdateReqVO updateReqVO) { - // 校验存在 - this.validate${simpleClassName}Exists(updateReqVO.getId()); - // 更新 - ${table.className}DO updateObj = ${table.className}Convert.INSTANCE.convert(updateReqVO); - ${classNameVar}Mapper.updateById(updateObj); - } - - @Override - public void delete${simpleClassName}(${primaryColumn.javaType} id) { - // 校验存在 - this.validate${simpleClassName}Exists(id); - // 更新 - ${classNameVar}Mapper.deleteById(id); - } - - private void validate${simpleClassName}Exists(${primaryColumn.javaType} id) { - if (${classNameVar}Mapper.selectById(id) == null) { - throw ServiceExceptionUtil.exception(${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - } - - @Override - public ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id) { - return ${classNameVar}Mapper.selectById(id); - } - - @Override - public List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids) { - return ${classNameVar}Mapper.selectBatchIds(ids); - } - - @Override - public PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO) { - return ${classNameVar}Mapper.selectPage(pageReqVO); - } - -} -- libgit2 0.21.4