package com.boman.gen.controller; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import com.boman.common.core.constant.UserConstants; import com.boman.common.core.utils.SecurityUtils; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.boman.common.core.text.Convert; import com.boman.common.core.web.controller.BaseController; import com.boman.common.core.web.domain.AjaxResult; import com.boman.common.core.web.page.TableDataInfo; import com.boman.common.log.annotation.Log; import com.boman.common.log.enums.BusinessType; import com.boman.common.security.annotation.PreAuthorize; import com.boman.gen.domain.GenTable; import com.boman.gen.domain.GenTableColumn; import com.boman.gen.service.IGenTableColumnService; import com.boman.gen.service.IGenTableService; /** * 代码生成 操作处理 * * @author ruoyi */ @RequestMapping("/gen") @RestController public class GenController extends BaseController { @Autowired private IGenTableService genTableService; @Autowired private IGenTableColumnService genTableColumnService; /** * 查询代码生成列表 */ @PreAuthorize(hasPermi = "tool:gen:list") @GetMapping("/list") public TableDataInfo genList(GenTable genTable) { startPage(); List list = genTableService.selectGenTableList(genTable); return getDataTable(list); } /** * 修改代码生成业务 */ @PreAuthorize(hasPermi = "tool:gen:query") @GetMapping(value = "/{talbleId}") public AjaxResult getInfo(@PathVariable Long talbleId) { GenTable table = genTableService.selectGenTableById(talbleId); List tables = genTableService.selectGenTableAll(); List list = genTableColumnService.selectGenTableColumnListByTableId(talbleId); Map map = new HashMap(); map.put("info" , table); map.put("rows" , list); map.put("tables" , tables); return AjaxResult.success(map); } /** * 查询数据库列表 */ @PreAuthorize(hasPermi = "tool:gen:list") @GetMapping("/db/list") public TableDataInfo dataList(GenTable genTable) { startPage(); List list = genTableService.selectDbTableList(genTable); return getDataTable(list); } /** * 查询数据表字段列表 */ @GetMapping(value = "/column/{talbleId}") public TableDataInfo columnList(Long tableId) { TableDataInfo dataInfo = new TableDataInfo(); List list = genTableColumnService.selectGenTableColumnListByTableId(tableId); dataInfo.setRows(list); dataInfo.setTotal(list.size()); return dataInfo; } /** * 功能描述: 根据表名查询表信息 * * @param tableName tableName * @return GenTable */ @GetMapping(value = "/table/{tableName}") public GenTable getByTableName(@PathVariable String tableName) { return genTableService.selectGenTableByName(tableName); } /** * 功能描述: 根据表id查询表信息 * * @param tableId tableId * @return GenTable */ @GetMapping(value = "/tableId/{tableId}") public GenTable getByTableName(@PathVariable Long tableId) { return genTableService.getByTableId(tableId); } /** * 导入表结构(保存) */ @PreAuthorize(hasPermi = "tool:gen:list") @Log(title = "代码生成" , businessType = BusinessType.IMPORT) @PostMapping("/importTable") public AjaxResult importTableSave(String tables) { String[] tableNames = Convert.toStrArray(tables); // 查询表信息 List tableList = genTableService.selectDbTableListByNames(tableNames); genTableService.importGenTable(tableList); return AjaxResult.success(); } /** * 修改保存代码生成业务 */ @PreAuthorize(hasPermi = "tool:gen:edit") @Log(title = "代码生成" , businessType = BusinessType.UPDATE) @PutMapping public AjaxResult editSave(@Validated @RequestBody GenTable genTable) { genTableService.validateEdit(genTable); genTableService.updateGenTable(genTable); return AjaxResult.success(); } /** * 删除代码生成 */ @PreAuthorize(hasPermi = "tool:gen:remove") @Log(title = "代码生成" , businessType = BusinessType.DELETE) @DeleteMapping("/{tableIds}") public AjaxResult remove(@PathVariable Long[] tableIds) { genTableService.deleteGenTableByIds(tableIds); return AjaxResult.success(); } /** * 预览代码 */ @PreAuthorize(hasPermi = "tool:gen:preview") @GetMapping("/preview/{tableId}") public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException { Map dataMap = genTableService.previewCode(tableId); return AjaxResult.success(dataMap); } /** * 生成代码(下载方式) */ @PreAuthorize(hasPermi = "tool:gen:code") @Log(title = "代码生成" , businessType = BusinessType.GENCODE) @GetMapping("/download/{tableName}") public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException { byte[] data = genTableService.downloadCode(tableName); genCode(response, data); } /** * 生成代码(自定义路径) */ @PreAuthorize(hasPermi = "tool:gen:code") @Log(title = "代码生成" , businessType = BusinessType.GENCODE) @GetMapping("/genCode/{tableName}") public AjaxResult genCode(@PathVariable("tableName") String tableName) { genTableService.generatorCode(tableName); return AjaxResult.success(); } /** * 同步数据库 */ @PreAuthorize(hasPermi = "tool:gen:edit") @Log(title = "代码生成" , businessType = BusinessType.UPDATE) @GetMapping("/synchDb/{tableName}") public AjaxResult synchDb(@PathVariable("tableName") String tableName) { genTableService.synchDb(tableName); return AjaxResult.success(); } /** * 批量生成代码 */ @PreAuthorize(hasPermi = "tool:gen:code") @Log(title = "代码生成" , businessType = BusinessType.GENCODE) @GetMapping("/batchGenCode") public void batchGenCode(HttpServletResponse response, String tables) throws IOException { String[] tableNames = Convert.toStrArray(tables); byte[] data = genTableService.downloadCode(tableNames); genCode(response, data); } /** * 生成zip文件 */ private void genCode(HttpServletResponse response, byte[] data) throws IOException { response.reset(); response.setHeader("Content-Disposition" , "attachment; filename=\"boMan.zip\""); response.addHeader("Content-Length" , "" + data.length); response.setContentType("application/octet-stream; charset=UTF-8"); IOUtils.write(data, response.getOutputStream()); } /** * @Description 数据表 新增功能 * @Author: tjf * @Date: 2021/3/24 */ @PostMapping("/addTable") public AjaxResult add(@Validated @RequestBody GenTable genTable) { if (UserConstants.NOT_UNIQUE.equals(genTableService.checkTableNameUnique(genTable))) { return AjaxResult.error("新增表名'" + genTable.getTableName() + "'失败,表名已存在"); } return genTableService.insertGenTable(genTable); } }