diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java index c494f5bf..dc68745c 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -30,6 +30,9 @@ public class GenConfig { @NotBlank private String tableName; + /** 接口名称 **/ + private String apiAlias; + /** 包路径 */ @NotBlank private String pack; diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index 62b72051..d5acc0f6 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -58,13 +58,14 @@ public class GenUtil { List templateNames = new ArrayList<>(); templateNames.add("api"); templateNames.add("index"); - templateNames.add("eForm"); return templateNames; } public static void generatorCode(List columnInfos, GenConfig genConfig) throws IOException { // 存储模版字段数据 Map genMap = new HashMap<>(16); + // 接口别名 + genMap.put("apiAlias",genConfig.getApiAlias()); // 包名称 genMap.put("package",genConfig.getPack()); // 模块名称 @@ -110,8 +111,8 @@ public class GenUtil { List> queryColumns = new ArrayList<>(); // 存储字典信息 List dicts = new ArrayList<>(); - // 存储 DateRange 信息 - List> dateRanges = new ArrayList<>(); + // 存储 between 信息 + List> betweens = new ArrayList<>(); // 存储不为空的字段信息 List> isNotNullColumns = new ArrayList<>(); @@ -194,8 +195,8 @@ public class GenUtil { // 查询中存储 BigDecimal 类型 genMap.put("queryHasBigDecimal",true); } - if("DateRange".equalsIgnoreCase(column.getQueryType())){ - dateRanges.add(listMap); + if("between".equalsIgnoreCase(column.getQueryType())){ + betweens.add(listMap); } else { // 添加到查询列表中 queryColumns.add(listMap); @@ -211,7 +212,7 @@ public class GenUtil { // 保存字段列表 genMap.put("dicts",dicts); // 保存查询列表 - genMap.put("dateRanges",dateRanges); + genMap.put("betweens",betweens); // 保存非空字段信息 genMap.put("isNotNullColumns",isNotNullColumns); TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); @@ -277,7 +278,7 @@ public class GenUtil { } if ("Dto".equals(templateName)) { - return packagePath + "service" + File.separator + "dto" + File.separator + className + "DTO.java"; + return packagePath + "service" + File.separator + "dto" + File.separator + className + "Dto.java"; } if ("QueryCriteria".equals(templateName)) { @@ -309,9 +310,6 @@ public class GenUtil { return path + File.separator + "index.vue"; } - if ("eForm".equals(templateName)) { - return path + File.separator + File.separator + "form.vue"; - } return null; } diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/domain/GenTest.java b/eladmin-system/src/main/java/me/zhengjie/gen/domain/GenTest.java new file mode 100644 index 00000000..1a90ddf8 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/domain/GenTest.java @@ -0,0 +1,51 @@ +package me.zhengjie.gen.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import javax.validation.constraints.*; +import javax.persistence.Entity; +import javax.persistence.Table; +import org.hibernate.annotations.*; +import java.sql.Timestamp; +import java.io.Serializable; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +@Entity +@Data +@Table(name="gen_test") +public class GenTest implements Serializable { + + /** ID */ + @Id + @Column(name = "id") + private Long id; + + /** 名称 */ + @Column(name = "name",nullable = false) + @NotBlank + private String name; + + /** 状态 */ + @Column(name = "status",nullable = false) + @NotNull + private Boolean status; + + /** 日期 */ + @Column(name = "date",nullable = false) + @NotNull + private Timestamp date; + + /** 创建日期 */ + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public void copy(GenTest source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/repository/GenTestRepository.java b/eladmin-system/src/main/java/me/zhengjie/gen/repository/GenTestRepository.java new file mode 100644 index 00000000..bb413ed4 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/repository/GenTestRepository.java @@ -0,0 +1,12 @@ +package me.zhengjie.gen.repository; + +import me.zhengjie.gen.domain.GenTest; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +public interface GenTestRepository extends JpaRepository, JpaSpecificationExecutor { +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/rest/GenTestController.java b/eladmin-system/src/main/java/me/zhengjie/gen/rest/GenTestController.java new file mode 100644 index 00000000..2d7efaed --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/rest/GenTestController.java @@ -0,0 +1,82 @@ +package me.zhengjie.gen.rest; + +import me.zhengjie.aop.log.Log; +import me.zhengjie.gen.domain.GenTest; +import me.zhengjie.gen.service.GenTestService; +import me.zhengjie.gen.service.dto.GenTestQueryCriteria; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +@Api(tags = "测试生成管理") +@RestController +@RequestMapping("/api/genTest") +public class GenTestController { + + private final GenTestService genTestService; + + public GenTestController(GenTestService genTestService) { + this.genTestService = genTestService; + } + + @Log("导出数据") + @ApiOperation("导出数据") + @GetMapping(value = "/download") + @PreAuthorize("@el.check('genTest:list')") + public void download(HttpServletResponse response, GenTestQueryCriteria criteria) throws IOException { + genTestService.download(genTestService.queryAll(criteria), response); + } + + @GetMapping + @Log("查询测试生成") + @ApiOperation("查询测试生成") + @PreAuthorize("@el.check('genTest:list')") + public ResponseEntity getGenTests(GenTestQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity<>(genTestService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @PostMapping + @Log("新增测试生成") + @ApiOperation("新增测试生成") + @PreAuthorize("@el.check('genTest:add')") + public ResponseEntity create(@Validated @RequestBody GenTest resources){ + return new ResponseEntity<>(genTestService.create(resources),HttpStatus.CREATED); + } + + @PutMapping + @Log("修改测试生成") + @ApiOperation("修改测试生成") + @PreAuthorize("@el.check('genTest:edit')") + public ResponseEntity update(@Validated @RequestBody GenTest resources){ + genTestService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @DeleteMapping(value = "/{id}") + @Log("删除测试生成") + @ApiOperation("删除测试生成") + @PreAuthorize("@el.check('genTest:del')") + public ResponseEntity delete(@PathVariable Long id){ + genTestService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } + + @Log("多选删除测试生成") + @ApiOperation("多选删除测试生成") + @PreAuthorize("@el.check('genTest:del')") + @DeleteMapping + public ResponseEntity deleteAll(@RequestBody Long[] ids) { + genTestService.deleteAll(ids); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/service/GenTestService.java b/eladmin-system/src/main/java/me/zhengjie/gen/service/GenTestService.java new file mode 100644 index 00000000..046d6d00 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/service/GenTestService.java @@ -0,0 +1,72 @@ +package me.zhengjie.gen.service; + +import me.zhengjie.gen.domain.GenTest; +import me.zhengjie.gen.service.dto.GenTestDto; +import me.zhengjie.gen.service.dto.GenTestQueryCriteria; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +public interface GenTestService { + + /** + * 查询数据分页 + * @param criteria 条件 + * @param pageable 分页参数 + * @return Map + */ + Map queryAll(GenTestQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria 条件参数 + * @return List + */ + List queryAll(GenTestQueryCriteria criteria); + + /** + * 根据ID查询 + * @param id ID + * @return GenTestDto + */ + GenTestDto findById(Long id); + + /** + * 创建 + * @param resources / + * @return GenTestDto + */ + GenTestDto create(GenTest resources); + + /** + * 编辑 + * @param resources / + */ + void update(GenTest resources); + + /** + * 删除 + * @param id / + */ + void delete(Long id); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 导出数据 + * @param all 待导出的数据 + * @param response / + * @throws IOException / + */ + void download(List all, HttpServletResponse response) throws IOException; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/service/dto/GenTestDto.java b/eladmin-system/src/main/java/me/zhengjie/gen/service/dto/GenTestDto.java new file mode 100644 index 00000000..c190eb46 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/service/dto/GenTestDto.java @@ -0,0 +1,32 @@ +package me.zhengjie.gen.service.dto; + +import lombok.Data; +import java.sql.Timestamp; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +@Data +public class GenTestDto implements Serializable { + + /** ID */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long id; + + /** 名称 */ + private String name; + + /** 状态 */ + private Boolean status; + + /** 日期 */ + private Timestamp date; + + /** 创建日期 */ + private Timestamp createTime; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/service/dto/GenTestQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/gen/service/dto/GenTestQueryCriteria.java new file mode 100644 index 00000000..c1b63b48 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/service/dto/GenTestQueryCriteria.java @@ -0,0 +1,25 @@ +package me.zhengjie.gen.service.dto; + +import lombok.Data; +import java.sql.Timestamp; +import java.util.List; +import me.zhengjie.annotation.Query; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +@Data +public class GenTestQueryCriteria{ + + /** 模糊 */ + @Query(type = Query.Type.INNER_LIKE) + private String name; + + /** 精确 */ + @Query + private Boolean status; + /** BETWEEN */ + @Query(type = Query.Type.BETWEEN) + private List createTime; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/service/impl/GenTestServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/gen/service/impl/GenTestServiceImpl.java new file mode 100644 index 00000000..185cf3fb --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/service/impl/GenTestServiceImpl.java @@ -0,0 +1,116 @@ +package me.zhengjie.gen.service.impl; + +import me.zhengjie.gen.domain.GenTest; +import me.zhengjie.utils.ValidationUtil; +import me.zhengjie.utils.FileUtil; +import me.zhengjie.gen.repository.GenTestRepository; +import me.zhengjie.gen.service.GenTestService; +import me.zhengjie.gen.service.dto.GenTestDto; +import me.zhengjie.gen.service.dto.GenTestQueryCriteria; +import me.zhengjie.gen.service.mapper.GenTestMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import me.zhengjie.utils.PageUtil; +import me.zhengjie.utils.QueryHelp; +import java.util.List; +import java.util.Map; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.LinkedHashMap; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +@Service +@CacheConfig(cacheNames = "genTest") +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class GenTestServiceImpl implements GenTestService { + + private final GenTestRepository genTestRepository; + + private final GenTestMapper genTestMapper; + + public GenTestServiceImpl(GenTestRepository genTestRepository, GenTestMapper genTestMapper) { + this.genTestRepository = genTestRepository; + this.genTestMapper = genTestMapper; + } + + @Override + @Cacheable + public Map queryAll(GenTestQueryCriteria criteria, Pageable pageable){ + Page page = genTestRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(genTestMapper::toDto)); + } + + @Override + @Cacheable + public List queryAll(GenTestQueryCriteria criteria){ + return genTestMapper.toDto(genTestRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + @Cacheable(key = "#p0") + public GenTestDto findById(Long id) { + GenTest genTest = genTestRepository.findById(id).orElseGet(GenTest::new); + ValidationUtil.isNull(genTest.getId(),"GenTest","id",id); + return genTestMapper.toDto(genTest); + } + + @Override + @CacheEvict(allEntries = true) + @Transactional(rollbackFor = Exception.class) + public GenTestDto create(GenTest resources) { + Snowflake snowflake = IdUtil.createSnowflake(1, 1); + resources.setId(snowflake.nextId()); + return genTestMapper.toDto(genTestRepository.save(resources)); + } + + @Override + @CacheEvict(allEntries = true) + @Transactional(rollbackFor = Exception.class) + public void update(GenTest resources) { + GenTest genTest = genTestRepository.findById(resources.getId()).orElseGet(GenTest::new); + ValidationUtil.isNull( genTest.getId(),"GenTest","id",resources.getId()); + genTest.copy(resources); + genTestRepository.save(genTest); + } + + @Override + @CacheEvict(allEntries = true) + @Transactional(rollbackFor = Exception.class) + public void delete(Long id) { + genTestRepository.deleteById(id); + } + + @Override + @CacheEvict(allEntries = true) + public void deleteAll(Long[] ids) { + for (Long id : ids) { + genTestRepository.deleteById(id); + } + } + + @Override + public void download(List all, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (GenTestDto genTest : all) { + Map map = new LinkedHashMap<>(); + map.put("名称", genTest.getName()); + map.put("状态", genTest.getStatus()); + map.put("日期", genTest.getDate()); + map.put("创建日期", genTest.getCreateTime()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/gen/service/mapper/GenTestMapper.java b/eladmin-system/src/main/java/me/zhengjie/gen/service/mapper/GenTestMapper.java new file mode 100644 index 00000000..4c0502b1 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/gen/service/mapper/GenTestMapper.java @@ -0,0 +1,16 @@ +package me.zhengjie.gen.service.mapper; + +import me.zhengjie.base.BaseMapper; +import me.zhengjie.gen.domain.GenTest; +import me.zhengjie.gen.service.dto.GenTestDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author Zheng Jie +* @date 2019-11-25 +*/ +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface GenTestMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java index 7949e2c2..579fb636 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java @@ -17,7 +17,7 @@ public interface DeptRepository extends JpaRepository, JpaSpecificat /** * 根据 PID 查询 * @param id pid - * @return 、 + * @return / */ List findByPid(Long id); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl index 88704414..173093c6 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl @@ -18,7 +18,7 @@ import javax.servlet.http.HttpServletResponse; * @author ${author} * @date ${date} */ -@Api(tags = "${className}管理") +@Api(tags = "${apiAlias}管理") @RestController @RequestMapping("/api/${changeClassName}") public class ${className}Controller { @@ -38,24 +38,24 @@ public class ${className}Controller { } @GetMapping - @Log("查询${className}") - @ApiOperation("查询${className}") + @Log("查询${apiAlias}") + @ApiOperation("查询${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:list')") public ResponseEntity get${className}s(${className}QueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); } @PostMapping - @Log("新增${className}") - @ApiOperation("新增${className}") + @Log("新增${apiAlias}") + @ApiOperation("新增${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:add')") public ResponseEntity create(@Validated @RequestBody ${className} resources){ return new ResponseEntity<>(${changeClassName}Service.create(resources),HttpStatus.CREATED); } @PutMapping - @Log("修改${className}") - @ApiOperation("修改${className}") + @Log("修改${apiAlias}") + @ApiOperation("修改${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:edit')") public ResponseEntity update(@Validated @RequestBody ${className} resources){ ${changeClassName}Service.update(resources); @@ -63,16 +63,16 @@ public class ${className}Controller { } @DeleteMapping(value = "/{${pkChangeColName}}") - @Log("删除${className}") - @ApiOperation("删除${className}") + @Log("删除${apiAlias}") + @ApiOperation("删除${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:del')") public ResponseEntity delete(@PathVariable ${pkColumnType} ${pkChangeColName}){ ${changeClassName}Service.delete(${pkChangeColName}); return new ResponseEntity(HttpStatus.OK); } - @Log("多选删除${className}") - @ApiOperation("多选删除${className}") + @Log("多选删除${apiAlias}") + @ApiOperation("多选删除${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:del')") @DeleteMapping public ResponseEntity deleteAll(@RequestBody ${pkColumnType}[] ids) { diff --git a/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl b/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl index c97b19fb..dc478f5e 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl @@ -13,22 +13,21 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; - /** * @author ${author} * @date ${date} */ @Data -public class ${className}DTO implements Serializable { +public class ${className}Dto implements Serializable { <#if columns??> <#list columns as column> <#if column.remark != ''> - // ${column.remark} + /** ${column.remark} */ <#if column.columnKey = 'PRI'> <#if !auto && pkColumnType = 'Long'> - // 处理精度丢失问题 + /** 防止精度丢失 */ @JsonSerialize(using= ToStringSerializer.class) diff --git a/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl b/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl index d2a1494d..34d18934 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl @@ -32,7 +32,7 @@ public class ${className} implements Serializable { <#list columns as column> <#if column.remark != ''> - // ${column.remark} + /** ${column.remark} */ <#if column.columnKey = 'PRI'> @Id diff --git a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl index 0b207a7b..c1ac5a0f 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl @@ -2,7 +2,7 @@ package ${package}.service.mapper; import me.zhengjie.base.BaseMapper; import ${package}.domain.${className}; -import ${package}.service.dto.${className}DTO; +import ${package}.service.dto.${className}Dto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date ${date} */ @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface ${className}Mapper extends BaseMapper<${className}DTO, ${className}> { +public interface ${className}Mapper extends BaseMapper<${className}Dto, ${className}> { } \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl b/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl index ab87ee3f..c8c55254 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl @@ -7,7 +7,7 @@ import java.sql.Timestamp; <#if queryHasBigDecimal> import java.math.BigDecimal; -<#if dateRanges??> +<#if betweens??> import java.util.List; <#if queryColumns??> @@ -24,34 +24,35 @@ public class ${className}QueryCriteria{ <#list queryColumns as column> <#if column.queryType = '='> - // 精确 + /** 精确 */ @Query private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = 'Like'> - // 模糊 + /** 模糊 */ @Query(type = Query.Type.INNER_LIKE) private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = '!='> - // 不等于 + /** 不等于 */ @Query(type = Query.Type.NOT_EQUAL) private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = '>='> - // 大于等于 + /** 大于等于 */ @Query(type = Query.Type.GREATER_THAN) private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = '<='> - // 小于等于 + /** 小于等于 */ @Query(type = Query.Type.LESS_THAN) private ${column.columnType} ${column.changeColumnName}; -<#if dateRanges??> - <#list dateRanges as column> +<#if betweens??> + <#list betweens as column> + /** BETWEEN */ @Query(type = Query.Type.BETWEEN) private List<${column.columnType}> createTime; diff --git a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl index 73d4e9e9..e1b7f28f 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl @@ -12,7 +12,11 @@ public interface ${className}Repository extends JpaRepository<${className}, ${pk <#if columns??> <#list columns as column> <#if column.columnKey = 'UNI'> - + /** + * 根据 ${column.capitalColumnName} 查询 + * @param ${column.columnName} / + * @return / + */ ${className} findBy${column.capitalColumnName}(${column.columnType} ${column.columnName}); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl index 96bb534d..5321a7b3 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl @@ -17,7 +17,7 @@ public interface ${className}Service { /** * 查询数据分页 - * @param criteria 条件参数 + * @param criteria 条件 * @param pageable 分页参数 * @return Map */ @@ -37,13 +37,36 @@ public interface ${className}Service { */ ${className}Dto findById(${pkColumnType} ${pkChangeColName}); + /** + * 创建 + * @param resources / + * @return ${className}Dto + */ ${className}Dto create(${className} resources); + /** + * 编辑 + * @param resources / + */ void update(${className} resources); + /** + * 删除 + * @param ${pkChangeColName} / + */ void delete(${pkColumnType} ${pkChangeColName}); + /** + * 多选删除 + * @param ids / + */ void deleteAll(${pkColumnType}[] ids); + /** + * 导出数据 + * @param all 待导出的数据 + * @param response / + * @throws IOException / + */ void download(List<${className}Dto> all, HttpServletResponse response) throws IOException; } \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl index e093128a..ecb6a80c 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl @@ -14,7 +14,7 @@ import me.zhengjie.utils.ValidationUtil; import me.zhengjie.utils.FileUtil; import ${package}.repository.${className}Repository; import ${package}.service.${className}Service; -import ${package}.service.dto.${className}DTO; +import ${package}.service.dto.${className}Dto; import ${package}.service.dto.${className}QueryCriteria; import ${package}.service.mapper.${className}Mapper; import org.springframework.stereotype.Service; @@ -68,13 +68,13 @@ public class ${className}ServiceImpl implements ${className}Service { @Override @Cacheable - public List<${className}DTO> queryAll(${className}QueryCriteria criteria){ + public List<${className}Dto> queryAll(${className}QueryCriteria criteria){ return ${changeClassName}Mapper.toDto(${changeClassName}Repository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override @Cacheable(key = "#p0") - public ${className}DTO findById(${pkColumnType} ${pkChangeColName}) { + public ${className}Dto findById(${pkColumnType} ${pkChangeColName}) { ${className} ${changeClassName} = ${changeClassName}Repository.findById(${pkChangeColName}).orElseGet(${className}::new); ValidationUtil.isNull(${changeClassName}.get${pkCapitalColName}(),"${className}","${pkChangeColName}",${pkChangeColName}); return ${changeClassName}Mapper.toDto(${changeClassName}); @@ -83,7 +83,7 @@ public class ${className}ServiceImpl implements ${className}Service { @Override @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) - public ${className}DTO create(${className} resources) { + public ${className}Dto create(${className} resources) { <#if !auto && pkColumnType = 'Long'> Snowflake snowflake = IdUtil.createSnowflake(1, 1); resources.set${pkCapitalColName}(snowflake.nextId()); @@ -142,9 +142,9 @@ public class ${className}ServiceImpl implements ${className}Service { } @Override - public void download(List<${className}DTO> all, HttpServletResponse response) throws IOException { + public void download(List<${className}Dto> all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); - for (${className}DTO ${changeClassName} : all) { + for (${className}Dto ${changeClassName} : all) { Map map = new LinkedHashMap<>(); <#list columns as column> <#if column.columnKey != 'PRI'> diff --git a/eladmin-system/src/main/resources/template/generator/front/api.ftl b/eladmin-system/src/main/resources/template/generator/front/api.ftl index 5a49e1be..071a562f 100644 --- a/eladmin-system/src/main/resources/template/generator/front/api.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/api.ftl @@ -30,11 +30,4 @@ export function edit(data) { }) } -export function download${className}(params) { - return request({ - url: 'api/${changeClassName}/download', - method: 'get', - params, - responseType: 'blob' - }) -} +export default { add, edit, del, delAll } diff --git a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl deleted file mode 100644 index fd881ec4..00000000 --- a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl +++ /dev/null @@ -1,152 +0,0 @@ - - - - - diff --git a/eladmin-system/src/main/resources/template/generator/front/index.ftl b/eladmin-system/src/main/resources/template/generator/front/index.ftl index ef2ab00f..b7b370a7 100644 --- a/eladmin-system/src/main/resources/template/generator/front/index.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/index.ftl @@ -5,137 +5,161 @@
<#if hasQuery> - + - + -<#if dateRanges??> - <#list dateRanges as column> - <#if column.queryType = 'DateRange'> +<#if betweens??> + <#list betweens as column> + <#if column.queryType = 'BetWeen'> + end-placeholder="${column.changeColumnName}End" + /> 搜索 -
- 新增 -
+ 新增 -
- 导出 -
+ 导出 -
- 删除 -
-
- - :dicts="dict"/> - - - - <#if columns??> - <#list columns as column> - <#if column.columnShow> - <#if column.dictName??> - - - - <#elseif column.columnType != 'Timestamp'> - + 删除 + + + :rules="rules" size="small" label-width="80px"> + <#if columns??> + <#list columns as column> + <#if column.formShow> + prop="${column.changeColumnName}"> + <#if column.formType = 'Input'> + + <#elseif column.formType = 'Textarea'> + + <#elseif column.formType = 'Radio'> + <#if column.dictName??> + {{ item.label }} <#else> - - - + 未设置字典,请手动设置 Radio - - - - - - - - - + <#elseif column.formType = 'Select'> + <#if column.dictName??> + + + + <#else> + 未设置字典,请手动设置 Select + + <#else> + + + + + + + + + + + + + <#if columns??> + <#list columns as column> + <#if column.columnShow> + <#if column.dictName??> + + + + <#elseif column.columnType != 'Timestamp'> + + <#else> + + + + + + + + + + + + + +