优化代码生成api

This commit is contained in:
不做码农 2021-12-13 21:53:48 +08:00
parent 57f5437920
commit 3037718786
8 changed files with 90 additions and 61 deletions

View File

@ -4,7 +4,6 @@ using Infrastructure.Enums;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
using SqlSugar; using SqlSugar;
using System; using System;
@ -19,7 +18,6 @@ using ZR.Common;
using ZR.Model; using ZR.Model;
using ZR.Model.System.Dto; using ZR.Model.System.Dto;
using ZR.Model.System.Generate; using ZR.Model.System.Generate;
using ZR.Service;
using ZR.Service.System.IService; using ZR.Service.System.IService;
namespace ZR.Admin.WebApi.Controllers namespace ZR.Admin.WebApi.Controllers
@ -31,20 +29,18 @@ namespace ZR.Admin.WebApi.Controllers
[Route("tool/gen")] [Route("tool/gen")]
public class CodeGeneratorController : BaseController public class CodeGeneratorController : BaseController
{ {
private CodeGeneraterService _CodeGeneraterService = new CodeGeneraterService(); private readonly CodeGeneraterService _CodeGeneraterService = new CodeGeneraterService();
private IGenTableService GenTableService; private readonly IGenTableService GenTableService;
private IGenTableColumnService GenTableColumnService; private readonly IGenTableColumnService GenTableColumnService;
private readonly ISysDictDataService SysDictDataService;
private IWebHostEnvironment WebHostEnvironment; private readonly IWebHostEnvironment WebHostEnvironment;
public CodeGeneratorController( public CodeGeneratorController(
IGenTableService genTableService, IGenTableService genTableService,
IGenTableColumnService genTableColumnService, IGenTableColumnService genTableColumnService,
ISysDictDataService dictDataService,
IWebHostEnvironment webHostEnvironment) IWebHostEnvironment webHostEnvironment)
{ {
GenTableService = genTableService; GenTableService = genTableService;
GenTableColumnService = genTableColumnService; GenTableColumnService = genTableColumnService;
SysDictDataService = dictDataService;
WebHostEnvironment = webHostEnvironment; WebHostEnvironment = webHostEnvironment;
} }
@ -62,7 +58,7 @@ namespace ZR.Admin.WebApi.Controllers
} }
/// <summary> /// <summary>
///获取所有表根据数据 ///获取所有表根据数据
/// </summary> /// </summary>
/// <param name="dbName">数据库名</param> /// <param name="dbName">数据库名</param>
/// <param name="tableName">表名</param> /// <param name="tableName">表名</param>
@ -78,12 +74,13 @@ namespace ZR.Admin.WebApi.Controllers
} }
/// <summary> /// <summary>
/// 获取代码生成表列表 /// 查询生成表数据
/// </summary> /// </summary>
/// <param name="tableName">表名</param> /// <param name="tableName">表名</param>
/// <param name="pagerInfo">分页信息</param> /// <param name="pagerInfo">分页信息</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("listGenTable")] [HttpGet("list")]
[ActionPermissionFilter(Permission = "tool:gen:list")]
public IActionResult GetGenTable(string tableName, PagerInfo pagerInfo) public IActionResult GetGenTable(string tableName, PagerInfo pagerInfo)
{ {
//查询原表数据,部分字段映射到代码生成表字段 //查询原表数据,部分字段映射到代码生成表字段
@ -93,18 +90,34 @@ namespace ZR.Admin.WebApi.Controllers
} }
/// <summary> /// <summary>
/// 查询表字段列表 /// 修改代码生成业务查询
/// </summary> /// </summary>
/// <param name="tableId">genTable表id</param> /// <param name="tableId">genTable表id</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("column/{tableId}")] [HttpGet("{tableId}")]
[ActionPermissionFilter(Permission = "tool:gen:query")]
public IActionResult GetColumnList(long tableId) public IActionResult GetColumnList(long tableId)
{ {
var tableColumns = GenTableColumnService.GenTableColumns(tableId); var tableColumns = GenTableColumnService.GenTableColumns(tableId);
var tableInfo = GenTableService.GetGenTableInfo(tableId); var tableInfo = GenTableService.GetGenTableInfo(tableId);
return SUCCESS(new { cloumns = tableColumns, info = tableInfo }); var tables = GenTableService.GetGenTableAll();
return SUCCESS(new { columns = tableColumns, info = tableInfo, tables });
} }
/// <summary>
/// 根据表id查询表列
/// </summary>
/// <param name="tableId">genTable表id</param>
/// <returns></returns>
[HttpGet("column/{tableId}")]
[ActionPermissionFilter(Permission = "tool:gen:query")]
public IActionResult GetTableColumnList(long tableId)
{
var tableColumns = GenTableColumnService.GenTableColumns(tableId);
return SUCCESS(new { columns = tableColumns });
}
/// <summary> /// <summary>
/// 删除代码生成 /// 删除代码生成
/// </summary> /// </summary>

View File

@ -25,7 +25,7 @@ namespace ZR.Model.System.Generate
/// <summary> /// <summary>
/// 列说明 /// 列说明
/// </summary> /// </summary>
public string ColumnComment { get; set; } public string ColumnComment { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 数据库列类型 /// 数据库列类型
/// </summary> /// </summary>

View File

@ -60,6 +60,15 @@ namespace ZR.Service.System
return info; return info;
} }
/// <summary>
/// 获取所有代码生成表
/// </summary>
/// <returns></returns>
public List<GenTable> GetGenTableAll()
{
return GenTableRepository.GetAll();
}
/// <summary> /// <summary>
/// 设置代码生成其他参数 /// 设置代码生成其他参数
/// </summary> /// </summary>

View File

@ -14,6 +14,7 @@ namespace ZR.Service.System.IService
int DeleteGenTableByTbName(string tableName); int DeleteGenTableByTbName(string tableName);
PagedInfo<GenTable> GetGenTables(GenTable genTable, Model.PagerInfo pagerInfo); PagedInfo<GenTable> GetGenTables(GenTable genTable, Model.PagerInfo pagerInfo);
GenTable GetGenTableInfo(long tableId); GenTable GetGenTableInfo(long tableId);
List<GenTable> GetGenTableAll();
int UpdateGenTable(GenTable genTable); int UpdateGenTable(GenTable genTable);
} }

View File

@ -21,7 +21,7 @@
"dependencies": { "dependencies": {
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"axios": "^0.21.4", "axios": "^0.21.4",
"clipboard": "2.0.4", "clipboard": "2.0.8",
"core-js": "3.6.5", "core-js": "3.6.5",
"echarts": "^5.1.1", "echarts": "^5.1.1",
"element-ui": "2.15.6", "element-ui": "2.15.6",

View File

@ -60,15 +60,23 @@ export function queryColumnInfo(tableId) {
}) })
} }
// 查询生成表数据
// 查询表详细信息 export function listTable(params) {
export function getGenTable(params) {
return request({ return request({
url: 'tool/gen/listGenTable', url: 'tool/gen/list',
method: 'get', method: 'get',
params: params params: params
}) })
} }
// 查询表详细信息
export function getGenTable(tableId) {
return request({
url: '/tool/gen/' + tableId,
method: 'get'
})
}
// 导入表 // 导入表
export function importTable(data) { export function importTable(data) {
return request({ return request({
@ -102,25 +110,3 @@ export function previewTable(tableId, data) {
data: data data: data
}) })
} }
// /**
// *
// * 数据库解密
// */
// export function dbtoolsConnStrDecrypt(data) {
// return request({
// url: 'DbTools/ConnStrDecrypt',
// method: 'post',
// params: data,
// })
// }
// /**
// * 数据库加密
// */
// export function dbtoolsConnStrEncrypt(data) {
// return request({
// url: 'DbTools/ConnStrEncrypt',
// method: 'post',
// params: data,
// })
// }

View File

@ -5,7 +5,7 @@
<basic-info-form ref="basicInfo" :info="info" /> <basic-info-form ref="basicInfo" :info="info" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="字段信息" name="cloum"> <el-tab-pane label="字段信息" name="cloum">
<el-table ref="dragTable" :data="cloumns" row-key="columnId" :max-height="tableHeight"> <el-table ref="dragTable" :data="columns" row-key="columnId" :max-height="tableHeight">
<el-table-column label="序号" type="index" min-width="5%" class-name="allowDrag" /> <el-table-column label="序号" type="index" min-width="5%" class-name="allowDrag" />
<el-table-column label="字段列名" prop="columnName" min-width="10%" :show-overflow-tooltip="true" /> <el-table-column label="字段列名" prop="columnName" min-width="10%" :show-overflow-tooltip="true" />
<el-table-column label="字段描述" min-width="10%"> <el-table-column label="字段描述" min-width="10%">
@ -101,7 +101,7 @@
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="生成信息" name="genInfo"> <el-tab-pane label="生成信息" name="genInfo">
<gen-info-form ref="genInfo" :info="info" :tables="tables" :menus="menus" :columns="cloumns" /> <gen-info-form ref="genInfo" :info="info" :tables="tables" :menus="menus" :columns="columns" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-form label-width="100px"> <el-form label-width="100px">
@ -114,7 +114,7 @@
</el-card> </el-card>
</template> </template>
<script> <script>
import { updateGenTable, queryColumnInfo } from "@/api/tool/gen"; import { updateGenTable, getGenTable } from "@/api/tool/gen";
import { listType } from "@/api/system/dict/type"; import { listType } from "@/api/system/dict/type";
import { listMenu as getMenuTreeselect } from "@/api/system/menu"; import { listMenu as getMenuTreeselect } from "@/api/system/menu";
import basicInfoForm from "./basicInfoForm"; import basicInfoForm from "./basicInfoForm";
@ -136,7 +136,7 @@ export default {
// //
tables: [], tables: [],
// //
cloumns: [], columns: [],
// //
dictOptions: [], dictOptions: [],
// //
@ -154,10 +154,10 @@ export default {
if (tableId) { if (tableId) {
// //
queryColumnInfo(tableId).then((res) => { getGenTable(tableId).then((res) => {
this.cloumns = res.data.cloumns; this.columns = res.data.columns;
this.info = res.data.info; this.info = res.data.info;
// this.tables = res.data.tables;/ this.tables = res.data.tables;//
}); });
/** 查询字典下拉列表 */ /** 查询字典下拉列表 */
listType().then((response) => { listType().then((response) => {
@ -177,7 +177,7 @@ export default {
const validateResult = res.every((item) => !!item); const validateResult = res.every((item) => !!item);
if (validateResult) { if (validateResult) {
const genTable = Object.assign({}, basicForm.model, genForm.model); const genTable = Object.assign({}, basicForm.model, genForm.model);
genTable.columns = this.cloumns; genTable.columns = this.columns;
genTable.params = { genTable.params = {
// treeCode: genTable.treeCode, // treeCode: genTable.treeCode,
// treeName: genTable.treeName, // treeName: genTable.treeName,
@ -217,7 +217,7 @@ export default {
const sortable = Sortable.create(el, { const sortable = Sortable.create(el, {
handle: ".allowDrag", handle: ".allowDrag",
onEnd: (evt) => { onEnd: (evt) => {
const targetRow = that.cloumns.splice(evt.oldIndex, 1)[0]; const targetRow = that.columns.splice(evt.oldIndex, 1)[0];
columns.splice(evt.newIndex, 0, targetRow); columns.splice(evt.newIndex, 0, targetRow);
for (let index in columns) { for (let index in columns) {
columns[index].sort = parseInt(index) + 1; columns[index].sort = parseInt(index) + 1;
@ -230,7 +230,7 @@ export default {
}, },
}, },
watch: { watch: {
cloumns: { columns: {
handler(val) { handler(val) {
this.sortTable(val); this.sortTable(val);
}, },

View File

@ -7,7 +7,8 @@
<el-select v-model="info.tplCategory" @change="tplSelectChange"> <el-select v-model="info.tplCategory" @change="tplSelectChange">
<el-option label="单表(增删改查)" value="crud" /> <el-option label="单表(增删改查)" value="crud" />
<!-- <el-option label="树表(增删改查)" value="tree" /> <!-- <el-option label="树表(增删改查)" value="tree" />
<el-option label="主子表(增删改查)" value="sub" /> --> <el-option label="导航查询" value="subNav"></el-option> -->
<!-- <el-option label="主子表(增删改查)" value="sub" /> -->
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -179,7 +180,7 @@
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</span> </span>
<el-select v-model="info.subTableName" placeholder="请选择" @change="subSelectChange"> <el-select v-model="info.subTableName" placeholder="请选择" @change="subSelectChange(this)">
<el-option v-for="(table, index) in tables" :key="index" :label="table.tableName + '' + table.tableComment" :value="table.tableName"> <el-option v-for="(table, index) in tables" :key="index" :label="table.tableName + '' + table.tableComment" :value="table.tableName">
</el-option> </el-option>
</el-select> </el-select>
@ -203,6 +204,7 @@
</el-form> </el-form>
</template> </template>
<script> <script>
import { queryColumnInfo } from "@/api/tool/gen";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@ -214,7 +216,7 @@ export default {
type: Object, type: Object,
default: null, default: null,
}, },
// //
tables: { tables: {
type: Array, type: Array,
default: null, default: null,
@ -237,10 +239,20 @@ export default {
{ required: true, message: "请选择生成模板", trigger: "blur" }, { required: true, message: "请选择生成模板", trigger: "blur" },
], ],
moduleName: [ moduleName: [
{ required: true, message: "请输入生成模块名", trigger: "blur", pattern:/^[A-Za-z]+$/ }, {
required: true,
message: "请输入生成模块名",
trigger: "blur",
pattern: /^[A-Za-z]+$/,
},
], ],
businessName: [ businessName: [
{ required: true, message: "请输入生成业务名", trigger: "blur", pattern:/^[A-Za-z]+$/}, {
required: true,
message: "请输入生成业务名",
trigger: "blur",
pattern: /^[A-Za-z]+$/,
},
], ],
functionName: [ functionName: [
{ required: true, message: "请输入生成功能名", trigger: "blur" }, { required: true, message: "请输入生成功能名", trigger: "blur" },
@ -281,10 +293,18 @@ export default {
}, },
/** 设置关联外键 */ /** 设置关联外键 */
setSubTableColumns(value) { setSubTableColumns(value) {
console.log(value);
if (value == null || value == undefined || value == "") {
return;
}
for (var item in this.tables) { for (var item in this.tables) {
const name = this.tables[item].tableName; const obj = this.tables[item];
if (value === name) { if (value === obj.tableName) {
this.subColumns = this.tables[item].columns; queryColumnInfo(obj.tableId).then((res) => {
if (res.code == 200) {
this.subColumns = res.data.columns;
}
});
break; break;
} }
} }