Pārlūkot izejas kodu

refactor: 代码生成器模板

jay 1 gadu atpakaļ
vecāks
revīzija
5051ac78a8

+ 5 - 3
iot-module/iot-generator/src/main/java/cc/iotkit/generator/util/VelocityUtils.java

@@ -111,14 +111,16 @@ public class VelocityUtils {
      */
     public static List<String> getTemplateList(String tplCategory) {
         List<String> templates = new ArrayList<String>();
-        templates.add("vm/java/domain.java.vm");
+        templates.add("vm/java/model.java.vm");
         templates.add("vm/java/vo.java.vm");
         templates.add("vm/java/bo.java.vm");
-        templates.add("vm/java/mapper.java.vm");
+//        templates.add("vm/java/mapper.java.vm");
         templates.add("vm/java/service.java.vm");
         templates.add("vm/java/serviceImpl.java.vm");
         templates.add("vm/java/controller.java.vm");
-        templates.add("vm/xml/mapper.xml.vm");
+        templates.add("vm/java/idata.java.vm");
+        templates.add("vm/java/idataimpl.java.vm");
+        templates.add("vm/java/tbmodel.java.vm");
         if (DataBaseHelper.isOracle()) {
             templates.add("vm/sql/oracle/sql.vm");
         } else if (DataBaseHelper.isPostgerSql()) {

+ 7 - 4
iot-module/iot-generator/src/main/resources/vm/java/bo.java.vm

@@ -1,9 +1,12 @@
 package ${packageName}.domain.bo;
 
 import ${packageName}.domain.${ClassName};
-import cc.iotkit.common.mybatis.core.domain.BaseEntity;
-import cc.iotkit.common.core.validate.AddGroup;
-import cc.iotkit.common.core.validate.EditGroup;
+import cc.iotkit.common.api.BaseDto;
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
+import cc.iotkit.common.api.Request;
+import cc.iotkit.common.validate.AddGroup;
+import cc.iotkit.common.validate.EditGroup;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -21,7 +24,7 @@ import ${import};
 @Data
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = ${ClassName}.class, reverseConvertGenerate = false)
-public class ${ClassName}Bo extends BaseEntity {
+public class ${ClassName}Bo extends BaseDto {
 
 #foreach ($column in $columns)
 #if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.insert || $column.edit))

+ 31 - 30
iot-module/iot-generator/src/main/resources/vm/java/controller.java.vm

@@ -2,28 +2,27 @@ package ${packageName}.controller;
 
 import java.util.List;
 
+
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
-import cc.iotkit.common.idempotent.annotation.RepeatSubmit;
 import cc.iotkit.common.log.annotation.Log;
 import cc.iotkit.common.web.core.BaseController;
-import cc.iotkit.common.mybatis.core.page.PageQuery;
-import cc.iotkit.common.core.domain.R;
-import cc.iotkit.common.core.validate.AddGroup;
-import cc.iotkit.common.core.validate.EditGroup;
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
+import cc.iotkit.common.api.Request;
+import cc.iotkit.common.validate.AddGroup;
+import cc.iotkit.common.validate.EditGroup;
 import cc.iotkit.common.log.enums.BusinessType;
 import cc.iotkit.common.excel.utils.ExcelUtil;
 import ${packageName}.domain.vo.${ClassName}Vo;
 import ${packageName}.domain.bo.${ClassName}Bo;
 import ${packageName}.service.I${ClassName}Service;
-#if($table.crud || $table.sub)
-import cc.iotkit.common.mybatis.core.page.TableDataInfo;
-#elseif($table.tree)
-#end
+
 
 /**
  * ${functionName}
@@ -44,20 +43,22 @@ public class ${ClassName}Controller extends BaseController {
      */
     @SaCheckPermission("${permissionPrefix}:list")
     @PostMapping("/list")
+    @ApiOperation("查询${functionName}列表")
 #if($table.crud || $table.sub)
-    public TableDataInfo<${ClassName}Vo> list(${ClassName}Bo bo, PageQuery pageQuery) {
-        return ${className}Service.queryPageList(bo, pageQuery);
+    public Paging<${ClassName}Vo> list( PageRequest<${ClassName}Bo> pageQuery) {
+        return ${className}Service.queryPageList(pageQuery);
     }
 #elseif($table.tree)
-    public R<List<${ClassName}Vo>> list(${ClassName}Bo bo) {
-        List<${ClassName}Vo> list = ${className}Service.queryList(bo);
-        return R.ok(list);
+    public List<${ClassName}Vo> list(Request<${ClassName}Bo> query) {
+        List<${ClassName}Vo> list = ${className}Service.queryList(query.getData());
+        return list;
     }
 #end
 
     /**
      * 导出${functionName}列表
      */
+    @ApiOperation("导出${functionName}列表")
     @SaCheckPermission("${permissionPrefix}:export")
     @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
@@ -72,10 +73,10 @@ public class ${ClassName}Controller extends BaseController {
      * @param ${pkColumn.javaField} 主键
      */
     @SaCheckPermission("${permissionPrefix}:query")
-    @PostMapping("/{${pkColumn.javaField}}")
-    public R<${ClassName}Vo> getInfo(@NotNull(message = "主键不能为空")
-                                     @PathVariable ${pkColumn.javaType} ${pkColumn.javaField}) {
-        return R.ok(${className}Service.queryById(${pkColumn.javaField}));
+    @PostMapping("/getDetail")
+    @ApiOperation("获取${functionName}详细信息")
+    public R<${ClassName}Vo> getDetail(@Validated @RequestBody Request<Long> request) {
+        return ${className}Service.queryById(request.getData());
     }
 
     /**
@@ -83,10 +84,10 @@ public class ${ClassName}Controller extends BaseController {
      */
     @SaCheckPermission("${permissionPrefix}:add")
     @Log(title = "${functionName}", businessType = BusinessType.INSERT)
-    @RepeatSubmit()
-    @PostMapping()
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) {
-        return toAjax(${className}Service.insertByBo(bo));
+    @PostMapping(value = "/add")
+    @ApiOperation("新增${functionName}")
+    public Long add(@Validated(AddGroup.class) @RequestBody Request<${ClassName}Bo> request) {
+        return ${className}Service.insertByBo(request.getData());
     }
 
     /**
@@ -94,10 +95,10 @@ public class ${ClassName}Controller extends BaseController {
      */
     @SaCheckPermission("${permissionPrefix}:edit")
     @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
-    @RepeatSubmit()
-    @PutMapping()
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ${ClassName}Bo bo) {
-        return toAjax(${className}Service.updateByBo(bo));
+    @PostMapping("/edit")
+    @ApiOperation("修改${functionName}")
+    public boolean edit(@Validated(EditGroup.class) @RequestBody  Request<${ClassName}Bo> bo) {
+        return ${className}Service.updateByBo(bo);
     }
 
     /**
@@ -107,9 +108,9 @@ public class ${ClassName}Controller extends BaseController {
      */
     @SaCheckPermission("${permissionPrefix}:remove")
     @Log(title = "${functionName}", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{${pkColumn.javaField}s}")
-    public R<Void> remove(@NotEmpty(message = "主键不能为空")
-                          @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
-        return toAjax(${className}Service.deleteWithValidByIds(List.of(${pkColumn.javaField}s), true));
+    @PostMapping("/delete")
+    @ApiOperation("删除${functionName}")
+    public boolean remove(@Validated @RequestBody Request<List<Long>> query) {
+        return ${className}Service.deleteWithValidByIds(query.getData());
     }
 }

+ 17 - 0
iot-module/iot-generator/src/main/resources/vm/java/idata.java.vm

@@ -0,0 +1,17 @@
+package ${packageName}.data;
+
+import cc.iotkit.data.ICommonData;
+import cc.iotkit.model.system.SysRole;
+
+import java.util.List;
+
+/**
+ * 数据接口
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+public interface I${ClassName}Data extends ICommonData<${ClassName}, Long> {
+
+
+}

+ 76 - 0
iot-module/iot-generator/src/main/resources/vm/java/idataimpl.java.vm

@@ -0,0 +1,76 @@
+package ${packageName}.data;
+
+import cc.iotkit.data.ICommonData;
+import ${packageName}.data.I${ClassName}Data;
+import ${packageName}.data.${ClassName};
+import java.util.List;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
+
+
+import static ${packageName}.data.model.QTb${ClassName}.tb${ClassName};
+/**
+ * 数据实现接口
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+@Primary
+@Service
+@RequiredArgsConstructor
+public class ${ClassName}DataImpl implements I${ClassName}Data, IJPACommData<${ClassName}, Long> {
+
+    private final ${ClassName}Repository baseRepository;
+
+
+
+    @Override
+    public JpaRepository getBaseRepository() {
+        return baseRepository;
+    }
+
+    @Override
+    public Class getJpaRepositoryClass() {
+        return Tb${ClassName}.class;
+    }
+
+    @Override
+    public Class getTClass() {
+        return ${ClassName}.class;
+    }
+
+
+    @Override
+    public Paging<${ClassName}> findAll(PageRequest<${ClassName}> pageRequest) {
+        return PageBuilder.toPaging(baseRepository.findAll(buildQueryCondition(pageRequest.getData()), PageBuilder.toPageable(pageRequest))).to(${ClassName}.class);
+    }
+
+    private Predicate buildQueryCondition(${ClassName} bo) {
+        PredicateBuilder builder = PredicateBuilder.instance();
+
+        #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($queryType != 'BETWEEN')
+                    #if($javaType == 'String')
+                        #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())')
+                    #else
+                        #set($condition='bo.get'+$AttrName+'() != null')
+                    #end
+                    builder.and($condition, ()=>tb${ClassName}.${columnName}.eq(bo.get${AttrName}()));
+                #else
+                    builder.and(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
+                            ()=>tb${ClassName}.${columnName}.bettwen(params.get("begin$AttrName"), params.get("end$AttrName")));
+                #end
+            #end
+        #end
+        return builder.build();
+    }
+
+}

+ 7 - 17
iot-module/iot-generator/src/main/resources/vm/java/domain.java.vm → iot-module/iot-generator/src/main/resources/vm/java/model.java.vm

@@ -1,16 +1,16 @@
-package ${packageName}.domain;
+package ${packageName}.model;
 
+import cc.iotkit.model.Id;
 #foreach ($column in $columns)
 #if($column.javaField=='tenantId')
 #set($IsTenant=1)
 #end
 #end
 #if($IsTenant==1)
-import cc.iotkit.common.tenant.core.TenantEntity;
+import cc.iotkit.model.TenantModel;
 #else
-import cc.iotkit.common.mybatis.core.domain.BaseEntity;
+import cc.iotkit.data.model.BaseEntity;
 #end
-import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 #foreach ($import in $importList)
@@ -26,14 +26,13 @@ import java.io.Serial;
  * @date ${datetime}
  */
 #if($IsTenant==1)
-#set($Entity="TenantEntity")
+#set($Entity="TenantModel")
 #else
-#set($Entity="BaseEntity")
+#set($Entity="BaseModel")
 #end
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("${tableName}")
-public class ${ClassName} extends ${Entity} {
+public class ${ClassName} extends ${Entity} implements Id<Long>, Serializable{
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -43,15 +42,6 @@ public class ${ClassName} extends ${Entity} {
     /**
      * $column.columnComment
      */
-#if($column.javaField=='delFlag')
-    @TableLogic
-#end
-#if($column.javaField=='version')
-    @Version
-#end
-#if($column.isPk==1)
-    @TableId(value = "$column.columnName")
-#end
     private $column.javaType $column.javaField;
 
 #end

+ 2 - 2
iot-module/iot-generator/src/main/resources/vm/java/service.java.vm

@@ -28,7 +28,7 @@ public interface I${ClassName}Service {
     /**
      * 查询${functionName}列表
      */
-    TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery);
+    Paging<${ClassName}Vo> queryPageList(PageRequest<${ClassName}Bo> pageQuery);
 #end
 
     /**
@@ -39,7 +39,7 @@ public interface I${ClassName}Service {
     /**
      * 新增${functionName}
      */
-    Boolean insertByBo(${ClassName}Bo bo);
+    Long insertByBo(${ClassName}Bo bo);
 
     /**
      * 修改${functionName}

+ 12 - 42
iot-module/iot-generator/src/main/resources/vm/java/serviceImpl.java.vm

@@ -3,18 +3,15 @@ package ${packageName}.service.impl;
 import cc.iotkit.common.core.utils.MapstructUtils;
 import cc.iotkit.common.core.utils.StringUtils;
 #if($table.crud || $table.sub)
-import cc.iotkit.common.mybatis.core.page.TableDataInfo;
-import cc.iotkit.common.mybatis.core.page.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 #end
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import cc.iotkit.common.api.Request;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import ${packageName}.domain.bo.${ClassName}Bo;
 import ${packageName}.domain.vo.${ClassName}Vo;
 import ${packageName}.domain.${ClassName};
-import ${packageName}.mapper.${ClassName}Mapper;
 import ${packageName}.service.I${ClassName}Service;
 
 import java.util.List;
@@ -31,14 +28,14 @@ import java.util.Collection;
 @Service
 public class ${ClassName}ServiceImpl implements I${ClassName}Service {
 
-    private final ${ClassName}Mapper baseMapper;
+    private final I${ClassName}Data baseData;
 
     /**
      * 查询${functionName}
      */
     @Override
     public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){
-        return baseMapper.selectVoById(${pkColumn.javaField});
+        return baseData.selectVoById(${pkColumn.javaField});
     }
 
 #if($table.crud || $table.sub)
@@ -46,10 +43,10 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
      * 查询${functionName}列表
      */
     @Override
-    public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) {
+    public Paging<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
-        Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        return TableDataInfo.build(result);
+        Paging<${ClassName}Vo> result = baseData.selectVoPage(pageQuery.build(), lqw);
+        return result;
     }
 #end
 
@@ -58,35 +55,8 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
      */
     @Override
     public List<${ClassName}Vo> queryList(${ClassName}Bo bo) {
-        LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
-        return baseMapper.selectVoList(lqw);
-    }
 
-    private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) {
-        Map<String, Object> params = bo.getParams();
-        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)})
-#set($mpMethod=$column.queryType.toLowerCase())
-#if($queryType != 'BETWEEN')
-#if($javaType == 'String')
-#set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())')
-#else
-#set($condition='bo.get'+$AttrName+'() != null')
-#end
-        lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName());
-#else
-        lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
-            ${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName"));
-#end
-#end
-#end
-        return lqw;
+        return baseData.selectVoList(bo);
     }
 
     /**
@@ -96,7 +66,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
     public Boolean insertByBo(${ClassName}Bo bo) {
         ${ClassName} add = MapstructUtils.convert(bo, ${ClassName}.class);
         validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
+        boolean flag = baseData.insert(add) > 0;
 #set($pk=$pkColumn.javaField.substring(0,1).toUpperCase() + ${pkColumn.javaField.substring(1)})
         if (flag) {
             bo.set$pk(add.get$pk());
@@ -111,7 +81,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
     public Boolean updateByBo(${ClassName}Bo bo) {
         ${ClassName} update = MapstructUtils.convert(bo, ${ClassName}.class);
         validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
+        return baseData.updateById(update) > 0;
     }
 
     /**
@@ -129,6 +99,6 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
         if(isValid){
             //TODO 做一些业务上的校验,判断是否需要校验
         }
-        return baseMapper.deleteBatchIds(ids) > 0;
+        return baseData.deleteBatchIds(ids) > 0;
     }
 }

+ 69 - 0
iot-module/iot-generator/src/main/resources/vm/java/tbmodel.java.vm

@@ -0,0 +1,69 @@
+package ${packageName}.data.model;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.GenericGenerator;
+#foreach ($column in $columns)
+#if($column.javaField=='tenantId')
+#set($IsTenant=1)
+#end
+#end
+#if($IsTenant==1)
+import cc.iotkit.model.TenantModel;
+#else
+import cc.iotkit.data.model.BaseEntity;
+#end
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+#foreach ($import in $importList)
+import ${import};
+#end
+
+import java.io.Serial;
+
+/**
+ * ${functionName}对象 ${tableName}
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+#if($IsTenant==1)
+#set($Entity="TenantEntity")
+#else
+#set($Entity="BaseEntity")
+#end
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Entity
+@Table(name = "${tableName}")
+@AutoMapper(target = ${ClassName}.class)
+public class Tb${ClassName} extends ${Entity} {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+#foreach ($column in $columns)
+#if(!$table.isSuperColumn($column.javaField))
+    /**
+     * $column.columnComment
+     */
+#if($column.javaField=='delFlag')
+#end
+#if($column.javaField=='version')
+#end
+#if($column.isPk==1)
+    @Id
+    @GeneratedValue(generator = "SnowflakeIdGenerator")
+    @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "cc.iotkit.data.config.id.SnowflakeIdGenerator")
+#end
+    @ApiModelProperty(value = "$column.columnComment")
+    private $column.javaType $column.javaField;
+
+#end
+#end
+
+}