diff --git a/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java b/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java index 7601fac6..89f8633e 100644 --- a/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java +++ b/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java @@ -1,5 +1,8 @@ package com.hxkj.common.constant; +import java.util.LinkedHashMap; +import java.util.Map; + public class GenConstants { /** 单表(增删改查) */ @@ -89,7 +92,7 @@ public class GenConstants { public static final String QUERY_LIKE = "LIKE"; /** 相等查询 */ - public static final String QUERY_EQ = "EQ"; + public static final String QUERY_EQ = "="; /** 需要 */ public static final Integer REQUIRE = 1; diff --git a/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java b/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java index f3e2be36..e171a0a6 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java @@ -1,4 +1,4 @@ -package com.hxkj.admin.config; +package com.hxkj.generator.config; public class GenConfig { diff --git a/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java b/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java index 92837e85..db8bf518 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java @@ -15,10 +15,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Map; -import java.util.zip.ZipOutputStream; @RestController @RequestMapping("/api/gen") @@ -46,11 +44,13 @@ public class GenController { * 生成列表 * * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 * @return Object */ @GetMapping("/list") public Object list(@Validated PageParam pageParam, - @RequestParam Map params) { + @RequestParam Map params) { PageResult list = iGenerateService.list(pageParam, params); return AjaxResult.success(list); } @@ -59,6 +59,7 @@ public class GenController { * 生成详情 * * @author fzr + * @param id 主键 * @return Object */ @GetMapping("/detail") @@ -75,7 +76,7 @@ public class GenController { */ @PostMapping("/importTable") public Object importTable(String tables) { - Assert.notNull(tables, "tables参数缺失"); + Assert.notNull(tables, "请选择要导出的表"); String[] tableNames = tables.split(","); iGenerateService.importTable(tableNames); return AjaxResult.success(); @@ -85,6 +86,7 @@ public class GenController { * 编辑表结构 * * @author fzr + * @param genParam 参数 * @return Object */ @PostMapping("/editTable") @@ -97,6 +99,7 @@ public class GenController { * 删除表结构 * * @author fzr + * @param id 主键 * @return Object */ @PostMapping("/deleteTable") @@ -109,6 +112,7 @@ public class GenController { * 同步表结构 * * @author fzr + * @param id 主键 * @return Object */ @PostMapping("/syncTable") @@ -121,6 +125,7 @@ public class GenController { * 预览代码 * * @author fzr + * @param id 主键 * @return Object */ @GetMapping("/previewCode") @@ -132,23 +137,23 @@ public class GenController { /** * 生成代码 * - * @author fzr - * @return Object + * @param response 响应对象 + * @param tables 表名 + * @throws IOException 异常 */ @GetMapping("/genCode") - public Object genCode(HttpServletResponse response, String tables) throws IOException { + public void genCode(HttpServletResponse response, String tables) throws IOException { + Assert.notNull(tables, "请选择要生成的表"); String[] tableNames = tables.split(","); - byte[] data = iGenerateService.downloadCode(tableNames); response.reset(); response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); - response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); + response.setHeader("Content-Disposition", "attachment; filename=\"like.zip\""); response.addHeader("Content-Length", "" + data.length); response.setContentType("application/octet-stream; charset=UTF-8"); IOUtils.write(data, response.getOutputStream()); - return null; } } diff --git a/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java b/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java index 5451145c..29c02079 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java @@ -127,6 +127,7 @@ public class GenerateServiceImpl implements IGenerateService { public Map detail(Integer id) { Map maps = new LinkedHashMap<>(); GenTable genTable = genTableMapper.selectById(id); + Assert.notNull(genTable, "查询的数据不存在"); // 基本信息 Map base = new LinkedHashMap<>(); @@ -329,6 +330,7 @@ public class GenerateServiceImpl implements IGenerateService { * 预览代码 * * @author fzr + * @param id 主键 * @return Map */ @Override @@ -357,6 +359,13 @@ public class GenerateServiceImpl implements IGenerateService { return map; } + /** + * 下载代码 + * + * @author fzr + * @param tableNames 表名集合 + * @return byte[] + */ @Override public byte[] downloadCode(String[] tableNames) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); @@ -374,7 +383,7 @@ public class GenerateServiceImpl implements IGenerateService { * @param tableName 表名 * @param zip 压缩包 */ - public void genZipCode(String tableName, ZipOutputStream zip) { + private void genZipCode(String tableName, ZipOutputStream zip) { // 查表信息 GenTable table = genTableMapper.selectOne(new QueryWrapper() .eq("table_name", tableName) diff --git a/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java b/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java index 5d09d031..ff85ba29 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java @@ -10,7 +10,10 @@ import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Properties; +import java.util.function.Function; +import java.util.stream.Collectors; public class VelocityUtil { @@ -36,6 +39,17 @@ public class VelocityUtil { * @return VelocityContext */ public static VelocityContext prepareContext(GenTable table, List columns) { + // 处理变量字段 + boolean isSearch = false; + List fields = new LinkedList<>(); + for (GenTableColumn column : columns) { + fields.add(column.getColumnName()); + if (column.getIsQuery() == 1) { + isSearch = true; + } + } + + // 设置模板变量 VelocityContext velocityContext = new VelocityContext(); velocityContext.put("genTpl", table.getGenTpl()); velocityContext.put("tableName", table.getTableName()); @@ -48,6 +62,9 @@ public class VelocityUtil { velocityContext.put("functionName", StringUtil.isNotEmpty(table.getFunctionName()) ? table.getFunctionName() : "【请填写功能名称】"); velocityContext.put("table", table); velocityContext.put("columns", columns); + velocityContext.put("fields", fields); + velocityContext.put("isSearch", isSearch); + return velocityContext; } @@ -59,12 +76,12 @@ public class VelocityUtil { */ public static List getTemplateList(String genTpl) { List templates = new LinkedList<>(); - templates.add("java/controller.java.vm"); - templates.add("java/entity.java.vm"); - templates.add("java/mapper.java.vm"); - templates.add("java/service.java.vm"); +// templates.add("java/controller.java.vm"); +// templates.add("java/entity.java.vm"); +// templates.add("java/mapper.java.vm"); +// templates.add("java/service.java.vm"); templates.add("java/serviceImpl.java.vm"); - templates.add("java/validate.java.vm"); +// templates.add("java/validate.java.vm"); return templates; } diff --git a/server/like-generator/src/main/resources/java/serviceImpl.java.vm b/server/like-generator/src/main/resources/java/serviceImpl.java.vm index b95367dc..d6801523 100644 --- a/server/like-generator/src/main/resources/java/serviceImpl.java.vm +++ b/server/like-generator/src/main/resources/java/serviceImpl.java.vm @@ -51,16 +51,31 @@ public class ${EntityName}ServiceImpl implements I${EntityName}Service { queryWrapper.eq("is_delete", 0); queryWrapper.orderByDesc(Arrays.asList("id", "sort")); - #if($column.isPk) - systemAdminMapper.setSearch(queryWrapper, params, new String[]{ - "like:username:str", - "like:nickname:str", - "=:role:int" + #if($isSearch) + ${entityName}Mapper.setSearch(queryWrapper, params, new String[]{ + #foreach ($column in $columns) + #if($column.isQuery) + #if($column.queryType=="EQ") + #if($column.javaType=="String") + #if($column.javaField.equals($column.columnName)) + "=:${column.javaField}:str", + #else + "=:${column.javaField}@${column.columnName}:str", + #end + #elseif($column.javaType=="Integer") + #if($column.javaField.equals($column.columnName)) + "=:${column.javaField}:int", + #else + "=:${column.javaField}@${column.columnName}:int", + #end + #end + #end + #end + #end }); #end IPage iPage = systemAdminMapper.selectPage(new Page<>(page, limit), queryWrapper); - for (SystemAdminVo vo : iPage.getRecords()) { vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime())); vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime())); @@ -70,93 +85,4 @@ public class ${EntityName}ServiceImpl implements I${EntityName}Service { return PageResult.iPageHandle(iPage); } - /** - * ${functionName}详细 - * - * @author ${authorName} - * @param id 主键 - * @return SysAdmin - */ - @Override - public ${EntityName}Vo detail(Integer id) { - SystemAdmin sysAdmin = systemAdminMapper.selectOne(new QueryWrapper() - .select(SystemAdmin.class, info-> - !info.getColumn().equals("salt") && - !info.getColumn().equals("password") && - !info.getColumn().equals("is_delete") && - !info.getColumn().equals("delete_time")) - .eq("id", id) - .eq("is_delete", 0) - .last("limit 1")); - - Assert.notNull(sysAdmin, "账号已不存在!"); - - SystemAdminVo vo = new SystemAdminVo(); - BeanUtils.copyProperties(sysAdmin, vo); - - vo.setDept(String.valueOf(vo.getDeptId())); - vo.setRole(String.valueOf(sysAdmin.getRole())); - vo.setAvatar(UrlUtil.toAbsoluteUrl(sysAdmin.getAvatar())); - vo.setCreateTime(TimeUtil.timestampToDate(sysAdmin.getCreateTime())); - vo.setUpdateTime(TimeUtil.timestampToDate(sysAdmin.getUpdateTime())); - vo.setLastLoginTime(TimeUtil.timestampToDate(sysAdmin.getLastLoginTime())); - - return vo; - } - - /** - * ${functionName}新增 - * - * @author ${authorName} - * @param ${entityName}Param 参数 - */ - @Override - public void add(${EntityName}Param ${entityName}Param) { - SystemAdmin model = new SystemAdmin(); - #foreach ($column in $columns) - model.set${column.javaField}(${entityName}Param.get${column.javaField.toUpperCase()}()); - #end - ${entityName}Mapper.insert(model); - } - - /** - * ${functionName}更新 - * - * @author ${authorName} - * @param ${entityName}Param 参数 - */ - @Override - public void edit(${EntityName}Param ${entityName}Param) { - SystemAdmin model = new SystemAdmin(); - model.setId(systemAdminParam.getId()); - model.setDeptId(systemAdminParam.getDeptId()); - model.setPostId(systemAdminParam.getPostId()); - model.setNickname(systemAdminParam.getNickname()); - model.setUsername(systemAdminParam.getUsername()); - model.setAvatar( UrlUtil.toRelativeUrl(systemAdminParam.getAvatar())); - model.setRole(systemAdminParam.getId() == 1 ? 0 : systemAdminParam.getRole()); - model.setSort(systemAdminParam.getSort()); - model.setIsMultipoint(systemAdminParam.getIsMultipoint()); - model.setIsDisable(systemAdminParam.getIsDisable()); - model.setUpdateTime(System.currentTimeMillis() / 1000); - - systemAdminMapper.updateById(model); - this.cacheAdminUserByUid(systemAdminParam.getId()); - } - - /** - * ${functionName}删除 - * - * @author ${authorName} - * @param id 主键 - */ - @Override - public void del(Integer id) { - SystemAdmin model = new SystemAdmin(); - model.setId(id); - model.setIsDelete(1); - model.setDeleteTime(System.currentTimeMillis() / 1000); - systemAdminMapper.updateById(model); - } - } diff --git a/server/like-generator/src/main/resources/vue/index.vue.vm b/server/like-generator/src/main/resources/vue/index.vue.vm index 51cf1e95..72fde9cb 100644 --- a/server/like-generator/src/main/resources/vue/index.vue.vm +++ b/server/like-generator/src/main/resources/vue/index.vue.vm @@ -1,2 +1,393 @@ -$hello -ffff \ No newline at end of file + + +