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