From 3d6fbb93f56d5221661f7899a00c5a70072e5ee5 Mon Sep 17 00:00:00 2001 From: wugh <328043740@qq.com> Date: 星期一, 22 三月 2021 09:32:49 +0800 Subject: [PATCH] !11 [功能] 拆分出Vo,QueryBo,AddBo,EditBo等领域对象 * [修改] 错误引入的无用导包删除 * [新增] 增加Vo,QueryBo,AddBo,EditBo等视图,并调整controller,service的调用代码 * [新增] 增加CreateAndUpdateMetaObjectHandler,配合fill注解,实现创建和修改人的自动设置,减少重复代码 --- ruoyi-generator/src/main/resources/vm/java/domain.java.vm | 32 -- ruoyi-generator/src/main/resources/vm/java/service.java.vm | 41 +++ ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm | 140 ++++++------- ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java | 10 ruoyi-generator/src/main/resources/vm/java/addBo.java.vm | 36 +++ ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java | 9 ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java | 67 ++++++ ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm | 42 ++++ ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java | 16 ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java | 20 ++ ruoyi-generator/src/main/resources/vm/java/controller.java.vm | 44 ++- ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java | 32 ++- ruoyi-generator/src/main/resources/vm/java/vo.java.vm | 51 +++++ ruoyi-generator/src/main/resources/vm/java/editBo.java.vm | 36 +++ 14 files changed, 432 insertions(+), 144 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java index ebf2376..516d102 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java @@ -65,9 +65,9 @@ * 鍝嶅簲璇锋眰鍒嗛〉鏁版嵁 */ @SuppressWarnings({ "rawtypes", "unchecked" }) - protected TableDataInfo getDataTable(List<?> list) + protected <T> TableDataInfo<T> getDataTable(List<T> list) { - TableDataInfo rspData = new TableDataInfo(); + TableDataInfo<T> rspData = new TableDataInfo(); rspData.setCode(HttpStatus.HTTP_OK); rspData.setMsg("鏌ヨ鎴愬姛"); rspData.setRows(list); @@ -81,7 +81,7 @@ * @param rows 褰卞搷琛屾暟 * @return 鎿嶄綔缁撴灉 */ - protected AjaxResult toAjax(int rows) + protected AjaxResult<Void> toAjax(int rows) { return rows > 0 ? AjaxResult.success() : AjaxResult.error(); } @@ -92,7 +92,7 @@ * @param result 缁撴灉 * @return 鎿嶄綔缁撴灉 */ - protected AjaxResult toAjax(boolean result) + protected AjaxResult<Void> toAjax(boolean result) { return result ? success() : error(); } @@ -100,7 +100,7 @@ /** * 杩斿洖鎴愬姛 */ - public AjaxResult success() + public AjaxResult<Void> success() { return AjaxResult.success(); } @@ -108,7 +108,7 @@ /** * 杩斿洖澶辫触娑堟伅 */ - public AjaxResult error() + public AjaxResult<Void> error() { return AjaxResult.error(); } @@ -116,7 +116,7 @@ /** * 杩斿洖鎴愬姛娑堟伅 */ - public AjaxResult success(String message) + public AjaxResult<Void> success(String message) { return AjaxResult.success(message); } @@ -124,7 +124,7 @@ /** * 杩斿洖澶辫触娑堟伅 */ - public AjaxResult error(String message) + public AjaxResult<Void> error(String message) { return AjaxResult.error(message); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java index 5609a8f..a7d2297 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java @@ -2,6 +2,7 @@ import cn.hutool.core.lang.Validator; import cn.hutool.http.HttpStatus; +import lombok.Data; import java.util.HashMap; @@ -10,7 +11,7 @@ * * @author ruoyi */ -public class AjaxResult extends HashMap<String, Object> +public class AjaxResult<T> extends HashMap<String, Object> { private static final long serialVersionUID = 1L; @@ -22,6 +23,17 @@ /** 鏁版嵁瀵硅薄 */ public static final String DATA_TAG = "data"; + + public Integer getCode(){ + return (Integer) super.get(CODE_TAG); + } + + public String getMsg(){ + return (String) super.get(MSG_TAG); + } + public T getData(){ + return (T) super.get(DATA_TAG); + } /** * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄锛屼娇鍏惰〃绀轰竴涓┖娑堟伅銆� @@ -49,7 +61,7 @@ * @param msg 杩斿洖鍐呭 * @param data 鏁版嵁瀵硅薄 */ - public AjaxResult(int code, String msg, Object data) + public AjaxResult(int code, String msg, T data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); @@ -64,7 +76,7 @@ * * @return 鎴愬姛娑堟伅 */ - public static AjaxResult success() + public static AjaxResult<Void> success() { return AjaxResult.success("鎿嶄綔鎴愬姛"); } @@ -74,7 +86,7 @@ * * @return 鎴愬姛娑堟伅 */ - public static AjaxResult success(Object data) + public static <T> AjaxResult<T> success(T data) { return AjaxResult.success("鎿嶄綔鎴愬姛", data); } @@ -85,7 +97,7 @@ * @param msg 杩斿洖鍐呭 * @return 鎴愬姛娑堟伅 */ - public static AjaxResult success(String msg) + public static AjaxResult<Void> success(String msg) { return AjaxResult.success(msg, null); } @@ -97,7 +109,7 @@ * @param data 鏁版嵁瀵硅薄 * @return 鎴愬姛娑堟伅 */ - public static AjaxResult success(String msg, Object data) + public static <T> AjaxResult<T> success(String msg, T data) { return new AjaxResult(HttpStatus.HTTP_OK, msg, data); } @@ -107,7 +119,7 @@ * * @return */ - public static AjaxResult error() + public static AjaxResult<Void> error() { return AjaxResult.error("鎿嶄綔澶辫触"); } @@ -118,7 +130,7 @@ * @param msg 杩斿洖鍐呭 * @return 璀﹀憡娑堟伅 */ - public static AjaxResult error(String msg) + public static AjaxResult<Void> error(String msg) { return AjaxResult.error(msg, null); } @@ -130,7 +142,7 @@ * @param data 鏁版嵁瀵硅薄 * @return 璀﹀憡娑堟伅 */ - public static AjaxResult error(String msg, Object data) + public static <T> AjaxResult<T> error(String msg, T data) { return new AjaxResult(HttpStatus.HTTP_INTERNAL_ERROR, msg, data); } @@ -142,7 +154,7 @@ * @param msg 杩斿洖鍐呭 * @return 璀﹀憡娑堟伅 */ - public static AjaxResult error(int code, String msg) + public static AjaxResult<Void> error(int code, String msg) { return new AjaxResult(code, msg, null); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java index 847685b..71aed2c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java @@ -8,7 +8,7 @@ * * @author ruoyi */ -public class TableDataInfo implements Serializable +public class TableDataInfo<T> implements Serializable { private static final long serialVersionUID = 1L; @@ -16,7 +16,7 @@ private long total; /** 鍒楄〃鏁版嵁 */ - private List<?> rows; + private List<T> rows; /** 娑堟伅鐘舵�佺爜 */ private int code; @@ -37,7 +37,7 @@ * @param list 鍒楄〃鏁版嵁 * @param total 鎬昏褰曟暟 */ - public TableDataInfo(List<?> list, int total) + public TableDataInfo(List<T> list, int total) { this.rows = list; this.total = total; @@ -53,12 +53,12 @@ this.total = total; } - public List<?> getRows() + public List<T> getRows() { return rows; } - public void setRows(List<?> rows) + public void setRows(List<T> rows) { this.rows = rows; } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java index c274e36..fb9c7f7 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.IllegalSQLInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.ruoyi.framework.mybatisplus.CreateAndUpdateMetaObjectHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -83,10 +84,10 @@ * 鍏冨璞″瓧娈靛~鍏呮帶鍒跺櫒 * https://baomidou.com/guide/auto-fill-metainfo.html */ -// @Bean -// public MetaObjectHandler metaObjectHandler() { -// return new MyMetaObjectHandler(); -// } + @Bean + public MetaObjectHandler metaObjectHandler() { + return new CreateAndUpdateMetaObjectHandler(); + } /** * sql娉ㄥ叆鍣ㄩ厤缃� diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java new file mode 100644 index 0000000..d4ef144 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java @@ -0,0 +1,67 @@ +package com.ruoyi.framework.mybatisplus; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.ruoyi.common.utils.SecurityUtils; +import org.apache.ibatis.reflection.MetaObject; + +import java.util.Date; + +/** + * @author woo + * @date 2021/3/11 + */ +public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler { + @Override + public void insertFill(MetaObject metaObject) { + //region 澶勭悊鍒涘缓浜轰俊鎭� + Object createBy = this.getFieldValByName("createBy", metaObject); + Object createTime = this.getFieldValByName("createTime", metaObject); + if (createBy == null) { + createBy = SecurityUtils.getUsername(); + this.setFieldValByName("createBy", createBy, metaObject); + } + if (createTime == null) { + createTime = new Date(); + this.setFieldValByName("createTime", createTime, metaObject); + } + //endregion + //region 澶勭悊淇敼浜轰俊鎭� + Object updateBy = this.getFieldValByName("updateBy", metaObject); + Object updateTime = this.getFieldValByName("updateTime", metaObject); + if (updateBy == null) { + updateBy = createBy; + this.setFieldValByName("updateBy", updateBy, metaObject); + } + if (updateTime == null) { + updateTime = createTime; + this.setFieldValByName("updateTime", updateTime, metaObject); + } + //endregion + } + + @Override + public void updateFill(MetaObject metaObject) { + //region 澶勭悊淇敼浜轰俊鎭� + Object updateBy = this.getFieldValByName("updateBy", metaObject); + Object updateTime = this.getFieldValByName("updateTime", metaObject); + if (updateBy == null) { + updateBy = SecurityUtils.getUsername(); + this.setFieldValByName("updateBy", updateBy, metaObject); + } + if (updateTime == null) { + updateTime = new Date(); + this.setFieldValByName("updateTime", updateTime, metaObject); + } + //endregion + } + + @Override + public boolean openInsertFill() { + return true; + } + + @Override + public boolean openUpdateFill() { + return true; + } +} diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java index 81d0d47..69421cc 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java @@ -129,6 +129,10 @@ { List<String> templates = new ArrayList<String>(); templates.add("vm/java/domain.java.vm"); + templates.add("vm/java/vo.java.vm"); + templates.add("vm/java/queryBo.java.vm"); + templates.add("vm/java/addBo.java.vm"); + templates.add("vm/java/editBo.java.vm"); templates.add("vm/java/mapper.java.vm"); templates.add("vm/java/service.java.vm"); templates.add("vm/java/serviceImpl.java.vm"); @@ -176,6 +180,22 @@ { fileName = StrUtil.format("{}/domain/{}.java", javaPath, className); } + if (template.contains("vo.java.vm")) + { + fileName = StrUtil.format("{}/vo/{}Vo.java", javaPath, className); + } + if (template.contains("queryBo.java.vm")) + { + fileName = StrUtil.format("{}/bo/{}QueryBo.java", javaPath, className); + } + if (template.contains("addBo.java.vm")) + { + fileName = StrUtil.format("{}/bo/{}AddBo.java", javaPath, className); + } + if (template.contains("editBo.java.vm")) + { + fileName = StrUtil.format("{}/bo/{}EditBo.java", javaPath, className); + } if (template.contains("sub-domain.java.vm") && StrUtil.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) { fileName = StrUtil.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); diff --git a/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm new file mode 100644 index 0000000..2f0770f --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm @@ -0,0 +1,36 @@ +package ${packageName}.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +#foreach ($import in $importList) +import ${import}; +#end + +/** + * ${functionName}娣诲姞瀵硅薄 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@ApiModel("${functionName}娣诲姞瀵硅薄") +public class ${ClassName}AddBo { + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if($column.isInsert && $column.isPk!=1) + /** $column.columnComment */ + @ApiModelProperty("$column.columnComment") + private $column.javaType $column.javaField; +#end +#end +#if($table.sub) + + /** $table.subTable.functionName淇℃伅 */ + @ApiModelProperty("$table.subTable.functionName") + private List<${subClassName}> ${subclassName}List; +#end +} diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm index 4e4309d..46f5617 100644 --- a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm @@ -18,13 +18,18 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; -import ${packageName}.domain.${ClassName}; +import ${packageName}.vo.${ClassName}Vo; +import ${packageName}.bo.${ClassName}QueryBo; +import ${packageName}.bo.${ClassName}AddBo; +import ${packageName}.bo.${ClassName}EditBo; import ${packageName}.service.I${ClassName}Service; import com.ruoyi.common.utils.poi.ExcelUtil; #if($table.crud || $table.sub) import com.ruoyi.common.core.page.TableDataInfo; #elseif($table.tree) #end +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; /** * ${functionName}Controller @@ -32,6 +37,7 @@ * @author ${author} * @date ${datetime} */ +@Api(value = "${functionName}鎺у埗鍣�", tags = {"${functionName}绠$悊"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/${moduleName}/${businessName}" ) @@ -42,17 +48,18 @@ /** * 鏌ヨ${functionName}鍒楄〃 */ + @ApiOperation("鏌ヨ${functionName}鍒楄〃") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')") @GetMapping("/list") #if($table.crud || $table.sub) - public TableDataInfo list(${ClassName} ${className}) { + public TableDataInfo<${ClassName}Vo> list(${ClassName}QueryBo bo) { startPage(); - List<${ClassName}> list = i${ClassName}Service.queryList(${className}); + List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); return getDataTable(list); } #elseif($table.tree) - public AjaxResult list(${ClassName} ${className}) { - List<${ClassName}> list = i${ClassName}Service.queryList(${className}); + public AjaxResult<${ClassName}Vo> list(${ClassName}QueryBo bo) { + List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); return AjaxResult.success(list); } #end @@ -60,51 +67,56 @@ /** * 瀵煎嚭${functionName}鍒楄〃 */ + @ApiOperation("瀵煎嚭${functionName}鍒楄〃") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')" ) @Log(title = "${functionName}" , businessType = BusinessType.EXPORT) @GetMapping("/export" ) - public AjaxResult export(${ClassName} ${className}) { - List<${ClassName}> list = i${ClassName}Service.queryList(${className}); - ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); + public AjaxResult<${ClassName}Vo> export(${ClassName}QueryBo bo) { + List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); + ExcelUtil<${ClassName}Vo> util = new ExcelUtil<${ClassName}Vo>(${ClassName}Vo.class); return util.exportExcel(list, "${businessName}" ); } /** * 鑾峰彇${functionName}璇︾粏淇℃伅 */ + @ApiOperation("鑾峰彇${functionName}璇︾粏淇℃伅") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')" ) @GetMapping(value = "/{${pkColumn.javaField}}" ) - public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}" ) ${pkColumn.javaType} ${pkColumn.javaField}) { - return AjaxResult.success(i${ClassName}Service.getById(${pkColumn.javaField})); + public AjaxResult<${ClassName}Vo> getInfo(@PathVariable("${pkColumn.javaField}" ) ${pkColumn.javaType} ${pkColumn.javaField}) { + return AjaxResult.success(i${ClassName}Service.queryById(${pkColumn.javaField})); } /** * 鏂板${functionName} */ + @ApiOperation("鏂板${functionName}") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')" ) @Log(title = "${functionName}" , businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody ${ClassName} ${className}) { - return toAjax(i${ClassName}Service.save(${className}) ? 1 : 0); + public AjaxResult<Void> add(@RequestBody ${ClassName}AddBo bo) { + return toAjax(i${ClassName}Service.insertByAddBo(bo) ? 1 : 0); } /** * 淇敼${functionName} */ + @ApiOperation("淇敼${functionName}") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')" ) @Log(title = "${functionName}" , businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody ${ClassName} ${className}) { - return toAjax(i${ClassName}Service.updateById(${className}) ? 1 : 0); + public AjaxResult<Void> edit(@RequestBody ${ClassName}EditBo bo) { + return toAjax(i${ClassName}Service.updateByEditBo(bo) ? 1 : 0); } /** * 鍒犻櫎${functionName} */ + @ApiOperation("鍒犻櫎${functionName}") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')" ) @Log(title = "${functionName}" , businessType = BusinessType.DELETE) @DeleteMapping("/{${pkColumn.javaField}s}" ) - public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { - return toAjax(i${ClassName}Service.removeByIds(Arrays.asList(${pkColumn.javaField}s)) ? 1 : 0); + public AjaxResult<Void> remove(@PathVariable ${pkColumn.javaType} ${pkColumn.javaField}s) { + return toAjax(i${ClassName}Service.deleteWithValidByIds(Arrays.asList(${pkColumn.javaField}s), true) ? 1 : 0); } } diff --git a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm index 028b1ea..6fd4695 100644 --- a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm @@ -1,14 +1,9 @@ package ${packageName}.domain; -import com.fasterxml.jackson.annotation.JsonFormat; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import com.ruoyi.common.annotation.Excel; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import java.util.Date; import java.util.Map; @@ -32,30 +27,19 @@ #foreach ($column in $columns) /** $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) +#if($column.javaField=="createBy"||$column.javaField=="createTime") + @TableField(fill = FieldFill.INSERT) #end -#if($parentheseIndex != -1) - @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()") -#elseif($column.javaType == 'Date') - @Excel(name = "${comment}" , width = 30, dateFormat = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") -#else - @Excel(name = "${comment}") +#if($column.javaField=="updateBy"||$column.javaField=="updateTime") + @TableField(fill = FieldFill.INSERT_UPDATE) #end +#if($column.javaField=='delFlag') + @TableLogic #end #if($column.isPk==1) @TableId(value = "$column.columnName") - private $column.javaType $column.javaField; -#else - private $column.javaType $column.javaField; #end + private $column.javaType $column.javaField; #end - @TableField(exist = false) - private Map<String, Object> params = new HashMap<>(); } diff --git a/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm new file mode 100644 index 0000000..a0fac48 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm @@ -0,0 +1,36 @@ +package ${packageName}.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +#foreach ($import in $importList) +import ${import}; +#end + +/** + * ${functionName}缂栬緫瀵硅薄 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@ApiModel("${functionName}缂栬緫瀵硅薄") +public class ${ClassName}EditBo { + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if($column.isEdit) + + /** $column.columnComment */ + @ApiModelProperty("$column.columnComment") + private $column.javaType $column.javaField; +#end +#end +#if($table.sub) + + /** $table.subTable.functionName淇℃伅 */ + @ApiModelProperty("$table.subTable.functionName") + private List<${subClassName}> ${subclassName}List; +#end +} diff --git a/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm new file mode 100644 index 0000000..7452cfb --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm @@ -0,0 +1,42 @@ +package ${packageName}.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +#foreach ($import in $importList) +import ${import}; +#end + +/** + * ${functionName}鍒嗛〉鏌ヨ瀵硅薄 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@ApiModel("${functionName}鍒嗛〉鏌ヨ瀵硅薄") +public class ${ClassName}QueryBo { + private static final long serialVersionUID = 1L; + /** 鍒嗛〉澶у皬 */ + @ApiModelProperty("鍒嗛〉澶у皬") + private Integer pageSize; + /** 褰撳墠椤垫暟 */ + @ApiModelProperty("褰撳墠椤垫暟") + private Integer pageNum; + /** 鎺掑簭鍒� */ + @ApiModelProperty("鎺掑簭鍒�") + private String orderByColumn; + /** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */ + @ApiModelProperty(value = "鎺掑簭鐨勬柟鍚�", example = "asc,desc") + private String isAsc; + + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField) && $column.query) + /** $column.columnComment */ + @ApiModelProperty("$column.columnComment") + private $column.javaType $column.javaField; +#end +#end +} diff --git a/ruoyi-generator/src/main/resources/vm/java/service.java.vm b/ruoyi-generator/src/main/resources/vm/java/service.java.vm index 97fe2d5..6a5ce97 100644 --- a/ruoyi-generator/src/main/resources/vm/java/service.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/service.java.vm @@ -1,7 +1,13 @@ package ${packageName}.service; import ${packageName}.domain.${ClassName}; +import ${packageName}.vo.${ClassName}Vo; +import ${packageName}.bo.${ClassName}QueryBo; +import ${packageName}.bo.${ClassName}AddBo; +import ${packageName}.bo.${ClassName}EditBo; import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Collection; import java.util.List; /** @@ -11,9 +17,36 @@ * @date ${datetime} */ public interface I${ClassName}Service extends IService<${ClassName}> { + /** + * 鏌ヨ鍗曚釜 + * @return + */ + ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}); - /** - * 鏌ヨ鍒楄〃 - */ - List<${ClassName}> queryList(${ClassName} ${className}); + /** + * 鏌ヨ鍒楄〃 + */ + List<${ClassName}Vo> queryList(${ClassName}QueryBo bo); + + /** + * 鏍规嵁鏂板涓氬姟瀵硅薄鎻掑叆${functionName} + * @param bo ${functionName}鏂板涓氬姟瀵硅薄 + * @return + */ + Boolean insertByAddBo(${ClassName}AddBo bo); + + /** + * 鏍规嵁缂栬緫涓氬姟瀵硅薄淇敼${functionName} + * @param bo ${functionName}缂栬緫涓氬姟瀵硅薄 + * @return + */ + Boolean updateByEditBo(${ClassName}EditBo bo); + + /** + * 鏍¢獙骞跺垹闄ゆ暟鎹� + * @param ids 涓婚敭闆嗗悎 + * @param isValid 鏄惁鏍¢獙,true-鍒犻櫎鍓嶆牎楠�,false-涓嶆牎楠� + * @return + */ + Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); } diff --git a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm index f149763..6a52f89 100644 --- a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm @@ -1,16 +1,23 @@ package ${packageName}.service.impl; +import cn.hutool.core.bean.BeanUtil; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.apache.commons.lang3.StringUtils; -import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.bo.${ClassName}AddBo; +import ${packageName}.bo.${ClassName}QueryBo; +import ${packageName}.bo.${ClassName}EditBo; import ${packageName}.domain.${ClassName}; +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.vo.${ClassName}Vo; import ${packageName}.service.I${ClassName}Service; +import java.util.Collection; +import java.util.Collections; import java.util.List; -import java.util.Map; +import java.util.stream.Collectors; /** * ${functionName}Service涓氬姟灞傚鐞� @@ -22,93 +29,80 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service { @Override - public List<${ClassName}> queryList(${ClassName} ${className}) { + public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){ + ${ClassName} db = this.baseMapper.selectById(${pkColumn.javaField}); + return entity2Vo(Collections.singletonList(db)).get(0); + } + + @Override + public List<${ClassName}Vo> queryList(${ClassName}QueryBo bo) { LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery(); #foreach($column in $columns) +#if($column.query) #set($queryType=$column.queryType) #set($javaField=$column.javaField) #set($javaType=$column.javaType) #set($columnName=$column.columnName) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#if($column.query) -#if($column.queryType == "EQ") +#set($mpMethod=$column.queryType.toLowerCase()) +#if($queryType != 'BETWEEN') #if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.eq(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } +#set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())') #else - if (${className}.get$AttrName() != null){ - lqw.eq(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } +#set($condition='bo.get'+$AttrName+'() != null') #end -#elseif($queryType == "NE") -#if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.ne(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } + lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()); #else - if (${className}.get$AttrName() != null){ - lqw.ne(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#end -#elseif($queryType == "GT") -#if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.gt(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#else - if (${className}.get$AttrName() != null){ - lqw.gt(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#end -#elseif($queryType == "GTE") -#if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.ge(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#else - if (${className}.get$AttrName() != null){ - lqw.ge(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#end -#elseif($queryType == "LT") -#if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.lt(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#else - if (${className}.get$AttrName() != null){ - lqw.lt(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#end -#elseif($queryType == "LTE") -#if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.le(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#else - if (${className}.get$AttrName() != null){ - lqw.le(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#end -#elseif($queryType == "LIKE") -#if($javaType == 'String') - if (StringUtils.isNotBlank(${className}.get$AttrName())){ - lqw.like(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#else - if (${className}.get$AttrName() != null){ - lqw.like(${ClassName}::get$AttrName ,${className}.get$AttrName()); - } -#end -#elseif($queryType == "BETWEEN") Map<String, Object> params = ${className}.getParams(); if (params.get("begin$AttrName") != null && params.get("end$AttrName") != null) { - lqw.between(${ClassName}::get$AttrName ,params.get("begin$AttrName"),params.get("end$AttrName")); + lqw.between(${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName")); } #end #end #end - return this.list(lqw); + return entity2Vo(this.list(lqw)); + } + + /** + * 瀹炰綋绫昏浆鍖栨垚瑙嗗浘瀵硅薄 + * + * @param collection 瀹炰綋绫婚泦鍚� + * @return + */ + private List<${ClassName}Vo> entity2Vo(Collection<${ClassName}> collection) { + return collection.stream() + .map(any -> BeanUtil.toBean(any, ${ClassName}Vo.class)) + .collect(Collectors.toList()); + } + + @Override + public Boolean insertByAddBo(${ClassName}AddBo bo) { + ${ClassName} add = BeanUtil.toBean(bo, ${ClassName}.class); + validEntityBeforeSave(add); + return this.save(add); + } + + @Override + public Boolean updateByEditBo(${ClassName}EditBo bo) { + ${ClassName} update = BeanUtil.toBean(bo, ${ClassName}.class); + validEntityBeforeSave(update); + return this.updateById(update); + } + + /** + * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙 + * + * @param entity 瀹炰綋绫绘暟鎹� + */ + private void validEntityBeforeSave(${ClassName} entity){ + //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫 + } + + @Override + public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { + if(isValid){ + //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠� + } + return this.removeByIds(ids); } } diff --git a/ruoyi-generator/src/main/resources/vm/java/vo.java.vm b/ruoyi-generator/src/main/resources/vm/java/vo.java.vm new file mode 100644 index 0000000..8546f5c --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/vo.java.vm @@ -0,0 +1,51 @@ +package ${packageName}.vo; + +import com.ruoyi.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +#foreach ($import in $importList) +import ${import}; +#end +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + + +/** + * ${functionName}瑙嗗浘瀵硅薄 mall_package + * + * @author ${author} + * @date ${datetime} + */ +@Data +@ApiModel("${functionName}瑙嗗浘瀵硅薄") +public class ${ClassName}Vo { + private static final long serialVersionUID = 1L; + + /** $pkColumn.columnComment */ + @ApiModelProperty("$pkColumn.columnComment") + private ${pkColumn.javaType} ${pkColumn.javaField}; + +#foreach ($column in $columns) +#if($column.isList) + /** $column.columnComment */ +#set($parentheseIndex=$column.columnComment.indexOf("锛�")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @Excel(name = "${comment}" , width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +#else + @Excel(name = "${comment}") +#end + @ApiModelProperty("$column.columnComment") + private $column.javaType $column.javaField; +#end +#end + +} -- Gitblit v1.9.3