diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs
index 49eecc9..17a3441 100644
--- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs
@@ -1,6 +1,7 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Enums;
+using Infrastructure.Extensions;
using Mapster;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
@@ -105,11 +106,13 @@ namespace ZR.Admin.WebApi.Controllers
[ActionPermissionFilter(Permission = "tool:gen:query")]
public IActionResult GetColumnList(long tableId)
{
- var tableColumns = GenTableColumnService.GenTableColumns(tableId);
var tableInfo = GenTableService.GetGenTableInfo(tableId);
var tables = GenTableService.GetGenTableAll();
-
- return SUCCESS(new { columns = tableColumns, info = tableInfo, tables });
+ if (tableInfo != null)
+ {
+ tableInfo.Columns = GenTableColumnService.GenTableColumns(tableId);
+ }
+ return SUCCESS(new { info = tableInfo, tables });
}
///
@@ -202,6 +205,7 @@ namespace ZR.Admin.WebApi.Controllers
}
var genTable = genTableDto.Adapt().ToUpdate(HttpContext);
+ //将前端额外参数转成字符串存入Options中
genTable.Options = JsonConvert.SerializeObject(genTableDto.Params);
DbResult result = GenTableService.UseTran(() =>
{
@@ -211,19 +215,21 @@ namespace ZR.Admin.WebApi.Controllers
GenTableColumnService.UpdateGenTableColumn(genTable.Columns);
}
});
-
+
return SUCCESS(result.IsSuccess);
}
///
/// 预览代码
///
- ///
+ ///
///
[HttpPost("preview/{tableId}")]
[ActionPermissionFilter(Permission = "tool:gen:preview")]
- public IActionResult Preview([FromBody] GenerateDto dto)
+ public IActionResult Preview(long tableId = 0)
{
+ GenerateDto dto = new();
+ dto.TableId = tableId;
if (dto == null || dto.TableId <= 0)
{
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
@@ -231,10 +237,9 @@ namespace ZR.Admin.WebApi.Controllers
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
+ dto.DbType = ConfigUtils.Instance.GetAppConfig(OptionsSetting.ConnBusDbType, 0);
dto.GenTable = genTableInfo;
- dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
- dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
- dto.IsPreview = 1;
+ dto.IsPreview = true;
//生成代码
CodeGeneratorTool.Generate(dto);
@@ -251,23 +256,37 @@ namespace ZR.Admin.WebApi.Controllers
[ActionPermissionFilter(Permission = "tool:gen:code")]
public IActionResult CodeGenerate([FromBody] GenerateDto dto)
{
- if (dto.TableId <= 0)
+ if (dto?.TableId <= 0)
{
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
}
- dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
- dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
-
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
+ dto.DbType = ConfigUtils.Instance.GetAppConfig(OptionsSetting.ConnBusDbType, 0);
dto.GenTable = genTableInfo;
- //生成代码
+ //自定义路径
+ if (genTableInfo.GenType == "1")
+ {
+ string tempPath = WebHostEnvironment.ContentRootPath;
+
+ //代码生成文件夹路径
+ dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? Directory.GetParent(tempPath).FullName : genTableInfo.GenPath;
+ }
+ else
+ {
+ dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
+ dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
+ }
+ //生成压缩包
+ string zipReturnFileName = $"ZrAdmin.NET-{genTableInfo.TableComment}-{DateTime.Now:MMddHHmmss}.zip";
+
+ //生成代码到指定文件夹
CodeGeneratorTool.Generate(dto);
//下载文件
- FileHelper.ZipGenCode(dto);
+ FileHelper.ZipGenCode(dto.ZipPath, dto.GenCodePath, zipReturnFileName);
- return SUCCESS(new { path = "/Generatecode/" + dto.ZipFileName, fileName = dto.ZipFileName });
+ return SUCCESS(new { path = "/Generatecode/" + zipReturnFileName, fileName = dto.ZipFileName });
}
///
diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
index fcd1415..48acd22 100644
--- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
+++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
@@ -66,10 +66,8 @@
-
-
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt
index 1251cef..c33b222 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt
@@ -1,6 +1,6 @@
-- 菜单
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time)
-VALUES ('${genTable.functionName}', ${parentId}, 999, '${genTable.BusinessName}', '${genTable.ModuleName}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', '', 'system', sysdate());
+VALUES ('${genTable.functionName}', ${parentId}, 999, '${genTable.BusinessName}', '${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', '', 'system', sysdate());
-- 按钮父菜单id
SELECT @menuId := LAST_INSERT_ID();
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt
index 1599694..1c9eeab 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt
@@ -1,6 +1,6 @@
-- ${genTable.functionName}菜单
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time)
-VALUES ('${genTable.functionName}', ${parentId}, 999, '${genTable.BusinessName}', '${genTable.ModuleName}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', '', 'system', GETDATE());
+VALUES ('${genTable.functionName}', ${parentId}, 999, '${genTable.BusinessName}', '${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', '', 'system', GETDATE());
-- 按钮父菜单id
declare @menuId int = @@identity
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
index 0a5a915..2d0dab2 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
@@ -80,6 +80,7 @@ $end
return SUCCESS(response);
}
+$if(replaceDto.ShowBtnAdd)
///
/// 添加${genTable.FunctionName}
///
@@ -106,7 +107,9 @@ ${end}
});
return ToResponse(response);
}
+$end
+$if(replaceDto.ShowBtnEdit)
///
/// 更新${genTable.FunctionName}
///
@@ -135,7 +138,9 @@ ${end}
return ToResponse(response);
}
+$end
+$if(replaceDto.ShowBtnDelete)
///
/// 删除${genTable.FunctionName}
///
@@ -152,6 +157,7 @@ ${end}
return ToResponse(response);
}
+$end
$if(replaceDto.ShowBtnExport)
///
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt
index f38883a..a1f0bf8 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt
@@ -72,7 +72,7 @@ $end
$if(showCustomInput)
changeSort
$end
-} from '@/api/${genTable.ModuleName}/${lowerBusinessName}.js';
+} from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${lowerBusinessName}.js';
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt
index 3c2739c..a9d5b49 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt
@@ -34,7 +34,7 @@ ${VueViewListContent}
+ @click="handleUpdate(scope.row)">
@@ -70,7 +70,7 @@ $end
$if(showCustomInput)
changeSort
$end
-} from '@/api/${genTable.ModuleName}/${lowerBusinessName}.js';
+} from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${lowerBusinessName}.js';
export default {
name: "${lowerBusinessName}",
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index 3b3e315..3f8e1b5 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -44,12 +44,12 @@ namespace ZR.CodeGenerator
string PKType = "int";
ReplaceDto replaceDto = new();
replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名
- replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限
+ replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName.ToLower()}:{dto.GenTable.ClassName.ToLower()}";//权限
replaceDto.Author = dto.GenTable.FunctionAuthor;
- replaceDto.ShowBtnAdd = dto.CheckedBtn.Any(f => f == 1);
- replaceDto.ShowBtnEdit = dto.CheckedBtn.Any(f => f == 2);
- replaceDto.ShowBtnDelete = dto.CheckedBtn.Any(f => f == 3);
- replaceDto.ShowBtnExport = dto.CheckedBtn.Any(f => f == 4);
+ replaceDto.ShowBtnAdd = dto.GenTable.CheckedBtn.Any(f => f == 1);
+ replaceDto.ShowBtnEdit = dto.GenTable.CheckedBtn.Any(f => f == 2);
+ replaceDto.ShowBtnDelete = dto.GenTable.CheckedBtn.Any(f => f == 3);
+ replaceDto.ShowBtnExport = dto.GenTable.CheckedBtn.Any(f => f == 4);
//循环表字段信息
foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns.OrderBy(x => x.Sort))
@@ -85,7 +85,7 @@ namespace ZR.CodeGenerator
GenerateVueJs(replaceDto, dto);
GenerateSql(replaceDto, dto);
- if (dto.IsPreview == 1) return;
+ if (dto.IsPreview) return;
foreach (var item in dto.GenCodes)
{
@@ -102,11 +102,10 @@ namespace ZR.CodeGenerator
/// 替换实体
private static void GenerateModels(ReplaceDto replaceDto, GenerateDto generateDto)
{
- var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
-
var tpl = FileHelper.ReadJtTemplate("TplModel.txt");
var result = tpl.Render();
+ string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, result));
}
@@ -117,10 +116,11 @@ namespace ZR.CodeGenerator
/// 替换实体
private static void GenerateInputDto(ReplaceDto replaceDto, GenerateDto generateDto)
{
- var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
var tpl = FileHelper.ReadJtTemplate("TplDto.txt");
var result = tpl.Render();
+ var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
+
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPath, result));
}
@@ -131,10 +131,10 @@ namespace ZR.CodeGenerator
/// 替换实体
private static void GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto)
{
- var fullPath = Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
var tpl = FileHelper.ReadJtTemplate("TplRepository.txt");
-
var result = tpl.Render();
+ var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
+
generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result));
}
@@ -143,14 +143,15 @@ namespace ZR.CodeGenerator
///
private static void GenerateService(ReplaceDto replaceDto, GenerateDto generateDto)
{
- var fullPath = Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
var tpl = FileHelper.ReadJtTemplate("TplService.txt");
- var result = tpl.Render();
- generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result));
-
- var fullPath2 = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
var tpl2 = FileHelper.ReadJtTemplate("TplIService.txt");
+ var result = tpl.Render();
var result2 = tpl2.Render();
+
+ var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
+ var fullPath2 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
+
+ generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result));
generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, result2));
}
@@ -159,11 +160,11 @@ namespace ZR.CodeGenerator
///
private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto)
{
- var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
var tpl = FileHelper.ReadJtTemplate("TplControllers.txt");
-
tpl.Set("QueryCondition", replaceDto.QueryCondition);
var result = tpl.Render();
+
+ var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result));
}
@@ -171,7 +172,6 @@ namespace ZR.CodeGenerator
/// 生成Vue页面
private static void GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto)
{
- var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, $"{generateDto.GenTable.BusinessName}.vue");
string fileName = string.Empty;
switch (generateDto.GenTable.TplCategory)
{
@@ -192,6 +192,8 @@ namespace ZR.CodeGenerator
tpl.Set("lowerBusinessName", FirstLowerCase(generateDto.GenTable.BusinessName));
var result = tpl.Render();
+ var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", FirstLowerCase(generateDto.GenTable.ModuleName), $"{generateDto.GenTable.BusinessName}.vue");
+
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result));
}
@@ -203,10 +205,10 @@ namespace ZR.CodeGenerator
///
public static void GenerateVueJs(ReplaceDto replaceDto, GenerateDto generateDto)
{
- string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName, FirstLowerCase(generateDto.GenTable.BusinessName) + ".js");
var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt");
-
var result = tpl.Render();
+
+ string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", FirstLowerCase(generateDto.GenTable.ModuleName), FirstLowerCase(generateDto.GenTable.BusinessName) + ".js");
generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result));
}
@@ -217,8 +219,6 @@ namespace ZR.CodeGenerator
///
public static void GenerateSql(ReplaceDto replaceDto, GenerateDto generateDto)
{
- string fullPath = Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql");
-
var tempName = "";
switch (generateDto.DbType)
{
@@ -234,6 +234,8 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt");
tpl.Set("parentId", generateDto.GenTable.ParentMenuId ?? 0);
var result = tpl.Render();
+ string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql");
+
generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result));
}
diff --git a/ZR.CodeGenerator/FileHelper.cs b/ZR.CodeGenerator/FileHelper.cs
index 549c45f..fd675d0 100644
--- a/ZR.CodeGenerator/FileHelper.cs
+++ b/ZR.CodeGenerator/FileHelper.cs
@@ -1,13 +1,8 @@
using JinianNet.JNTemplate;
using System;
-using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
-using System.Linq;
using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading.Tasks;
-using ZR.CodeGenerator.Model;
namespace ZR.CodeGenerator
{
@@ -123,31 +118,31 @@ namespace ZR.CodeGenerator
///
/// 压缩代码
///
- ///
+ ///
+ ///
+ /// 压缩后的文件名
///
- public static string ZipGenCode(GenerateDto dto)
+ public static bool ZipGenCode(string zipPath, string genCodePath,string zipFileName)
{
+ if (string.IsNullOrEmpty(zipPath)) return false;
try
{
- //生成压缩包
- string zipReturnFileName = "ZrAdmin.NET" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip";
-
- CreateDirectory(dto.GenCodePath);
- string zipFileName = Path.Combine(dto.ZipPath, zipReturnFileName);
- if (File.Exists(zipFileName))
+ CreateDirectory(genCodePath);
+ string zipFileFullName = Path.Combine(zipPath, zipFileName);
+ if (File.Exists(zipFileFullName))
{
- File.Delete(zipFileName);
+ File.Delete(zipFileFullName);
}
- ZipFile.CreateFromDirectory(dto.GenCodePath, zipFileName);
- DeleteDirectory(dto.GenCodePath);
- dto.ZipFileName = zipReturnFileName;
- return zipReturnFileName;
+ ZipFile.CreateFromDirectory(genCodePath, zipFileFullName);
+ DeleteDirectory(genCodePath);
+
+ return true;
}
catch (Exception ex)
{
Console.WriteLine("压缩文件出错。" + ex.Message);
- return "";
+ return false;
}
}
diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs
index bdb2c22..91e99a8 100644
--- a/ZR.CodeGenerator/Model/GenerateDto.cs
+++ b/ZR.CodeGenerator/Model/GenerateDto.cs
@@ -9,7 +9,7 @@ namespace ZR.CodeGenerator.Model
///
/// 是否预览代码
///
- public int IsPreview { get; set; }
+ public bool IsPreview { get; set; }
///
/// 生成代码的数据库类型 0、mysql 1、sqlserver
///
@@ -17,7 +17,7 @@ namespace ZR.CodeGenerator.Model
///
/// 生成的按钮功能
///
- public int[] CheckedBtn { get; set; }
+ public int[] CheckedBtn { get; set; } = System.Array.Empty();
public GenTable GenTable { get; set; }
public CodeGenerateOption GenOptions { get; set; }
#region 存储路径
@@ -37,6 +37,11 @@ namespace ZR.CodeGenerator.Model
/// 代码生成压缩包名称
///
public string ZipFileName { get; set; }
+ ///
+ /// 生成代码方式(0zip压缩包 1自定义路径)
+ ///
+ public string GenType { get; set; }
+ public string GenPath { get; set; } = "";
#endregion
}
diff --git a/ZR.Model/System/Dto/GenTableDto.cs b/ZR.Model/System/Dto/GenTableDto.cs
index cf5f022..a0fc883 100644
--- a/ZR.Model/System/Dto/GenTableDto.cs
+++ b/ZR.Model/System/Dto/GenTableDto.cs
@@ -20,13 +20,7 @@ namespace ZR.Model.System.Dto
public string FunctionName { get; set; }
public string FunctionAuthor { get; set; }
public string GenType { get; set; }
- public string Options { get; set; }
- ///
- /// 上级菜单id
- ///
- //public int? ParentMenuId { get; set; }
- //public string SortField { get; set; }
- //public string SortType { get; set; }
+ public string GenPath { get; set; }
///
/// 额外参数
///
@@ -36,6 +30,7 @@ namespace ZR.Model.System.Dto
///
/// 额外参数
+ /// ****注意里面参数统一首字母小写*****
///
public class Options
{
@@ -45,6 +40,10 @@ namespace ZR.Model.System.Dto
public int? parentMenuId { get; set; }
public string sortField { get; set; }
public string sortType { get; set; }
+ ///
+ /// 额外参数字符串
+ ///
+ public string checkedBtn { get; set; }
}
public class GenTableColumnDto
{
diff --git a/ZR.Model/System/Generate/GenTable.cs b/ZR.Model/System/Generate/GenTable.cs
index de0f198..1dfea22 100644
--- a/ZR.Model/System/Generate/GenTable.cs
+++ b/ZR.Model/System/Generate/GenTable.cs
@@ -68,6 +68,7 @@ namespace ZR.Model.System.Generate
/// 生成代码方式(0zip压缩包 1自定义路径)
///
public string GenType { get; set; }
+ public string GenPath { get; set; }
///
/// 其他生成选项
///
@@ -86,7 +87,7 @@ namespace ZR.Model.System.Generate
[SqlSugar.SugarColumn(IsIgnore = true)]
public object SortField { get; set; } = string.Empty;
-
+
[SqlSugar.SugarColumn(IsIgnore = true)]
public object TreeCode { get; set; } = string.Empty;
@@ -95,6 +96,11 @@ namespace ZR.Model.System.Generate
[SqlSugar.SugarColumn(IsIgnore = true)]
public object TreeParentCode { get; set; }
+ ///
+ /// 生成的按钮功能
+ ///
+ [SqlSugar.SugarColumn(IsIgnore = true)]
+ public int[] CheckedBtn { get; set; } = new int[] { 1, 2, 3 };
#endregion
}
}
diff --git a/ZR.Repository/BaseRepository.cs b/ZR.Repository/BaseRepository.cs
index f19a0b0..484b060 100644
--- a/ZR.Repository/BaseRepository.cs
+++ b/ZR.Repository/BaseRepository.cs
@@ -349,6 +349,12 @@ namespace ZR.Repository
return source.ToPage(parm);
}
+
+ public PagedInfo GetPages(Expression> where, PagerInfo parm, Expression> order, string orderByType)
+ {
+ return GetPages(where, parm, order, orderByType == "desc" ? OrderByType.Desc : OrderByType.Asc);
+ }
+
///
/// 查询所有数据(无分页,请慎用)
///
diff --git a/ZR.Repository/IBaseRepository.cs b/ZR.Repository/IBaseRepository.cs
index 0dedf0f..1a51f70 100644
--- a/ZR.Repository/IBaseRepository.cs
+++ b/ZR.Repository/IBaseRepository.cs
@@ -87,6 +87,7 @@ namespace ZR.Repository
PagedInfo GetPages(Expression> where, PagerInfo parm);
PagedInfo GetPages(Expression> where, PagerInfo parm, Expression> order, OrderByType orderEnum = OrderByType.Asc);
+ PagedInfo GetPages(Expression> where, PagerInfo parm, Expression> order, string orderByType);
bool Any(Expression> expression);
diff --git a/ZR.Repository/ZR.Repository.csproj b/ZR.Repository/ZR.Repository.csproj
index 144f850..8814759 100644
--- a/ZR.Repository/ZR.Repository.csproj
+++ b/ZR.Repository/ZR.Repository.csproj
@@ -16,8 +16,4 @@
-
-
-
-
diff --git a/ZR.Service/System/GenTableService.cs b/ZR.Service/System/GenTableService.cs
index 286932c..880ef4a 100644
--- a/ZR.Service/System/GenTableService.cs
+++ b/ZR.Service/System/GenTableService.cs
@@ -5,6 +5,7 @@ using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
+using ZR.Common;
using ZR.Model;
using ZR.Model.System.Generate;
using ZR.Repository.System;
@@ -89,6 +90,9 @@ namespace ZR.Service.System
genTable.TreeParentCode = options.GetValueOrDefault("treeParentCode") ?? "";
genTable.TreeName = options.GetValueOrDefault("treeName") ?? "";
genTable.TreeCode = options.GetValueOrDefault("treeCode") ?? "";
+
+ var checkdBtn = options.GetValueOrDefault("checkedBtn");
+ genTable.CheckedBtn = Tools.SpitIntArrary(checkdBtn.ToString());
}
}
diff --git a/ZR.Vue/src/api/tool/gen.js b/ZR.Vue/src/api/tool/gen.js
index 59317ef..b28fe8e 100644
--- a/ZR.Vue/src/api/tool/gen.js
+++ b/ZR.Vue/src/api/tool/gen.js
@@ -1,23 +1,5 @@
-import request from '@/utils/request'
+import request from '@/utils/request';
-// 预览生成代码
-// export function previewTable(tableId) {
-// return request({
-// url: '/tool/gen/preview/' + tableId,
-// method: 'get'
-// })
-// }
-
-/**
- * 创建数据库连接
- */
-// export function createGetDBConn(data) {
-// return request({
-// url: 'tool/gen/CreateDBConn',
-// method: 'post',
-// data: data,
-// })
-// }
/**
* 获取数据库
*/
@@ -43,7 +25,7 @@ export function listDbTable(data) {
export async function codeGenerator(data) {
return await request({
url: 'tool/gen/genCode',
- method: 'post',
+ method: 'POST',
data: data,
})
}
@@ -103,11 +85,11 @@ export function updateGenTable(data) {
}
// 预览生成代码
-export function previewTable(tableId, data) {
+export function previewTable(tableId) {
return request({
url: '/tool/gen/preview/' + tableId,
method: 'post',
- data: data
+ // data: data
})
}
diff --git a/ZR.Vue/src/views/tool/file/index.vue b/ZR.Vue/src/views/tool/file/index.vue
index bc21521..8e88bf3 100644
--- a/ZR.Vue/src/views/tool/file/index.vue
+++ b/ZR.Vue/src/views/tool/file/index.vue
@@ -35,7 +35,7 @@
-
+
{{ scope.row.fileName }}
@@ -70,7 +70,7 @@
-
+
@@ -104,7 +104,7 @@
@@ -235,8 +235,6 @@ export default {
created() {
// 列表数据查询
this.getList();
-
- var dictParams = [];
},
methods: {
// 查询数据
@@ -329,6 +327,9 @@ export default {
//上传成功方法
handleUploadSuccess(columnName, filelist) {
this.form[columnName] = filelist;
+
+ this.open = false;
+ this.getList();
},
// 存储类型字典翻译
storeTypeFormat(row, column) {
diff --git a/ZR.Vue/src/views/tool/gen/editTable.vue b/ZR.Vue/src/views/tool/gen/editTable.vue
index 00c43c7..2a74761 100644
--- a/ZR.Vue/src/views/tool/gen/editTable.vue
+++ b/ZR.Vue/src/views/tool/gen/editTable.vue
@@ -8,12 +8,13 @@
-
+
-
+
+
@@ -57,7 +58,7 @@
-
+
@@ -93,7 +94,8 @@
-
+
{{ dict.dictName }}
{{ dict.dictType }}
@@ -106,9 +108,9 @@
- 提交
- 刷新
- 返回
+ 提交
+ 刷新
+ 返回
@@ -143,6 +145,7 @@ export default {
menus: [],
// 表详细信息
info: {},
+ loading: true,
};
},
created() {
@@ -155,7 +158,8 @@ export default {
if (tableId) {
// 获取表详细信息
getGenTable(tableId).then((res) => {
- this.columns = res.data.columns;
+ this.loading = false;
+ this.columns = res.data.info.columns;
this.info = res.data.info;
this.tables = res.data.tables; //子表
});
@@ -178,14 +182,18 @@ export default {
if (validateResult) {
const genTable = Object.assign({}, basicForm.model, genForm.model);
genTable.columns = this.columns;
+ // 额外参数拼接
genTable.params = {
treeCode: genTable.treeCode,
treeName: genTable.treeName,
treeParentCode: genTable.treeParentCode,
parentMenuId: genTable.parentMenuId,
+ sortField: genTable.sortField,
+ sortType: genTable.sortType,
+ checkedBtn: genTable.checkedBtn.toString(),
};
console.log("genForm", genTable);
-
+
updateGenTable(genTable).then((res) => {
this.msgSuccess(res.msg);
if (res.code === 200) {
diff --git a/ZR.Vue/src/views/tool/gen/genInfoForm.vue b/ZR.Vue/src/views/tool/gen/genInfoForm.vue
index 8ad3455..fb36cfb 100644
--- a/ZR.Vue/src/views/tool/gen/genInfoForm.vue
+++ b/ZR.Vue/src/views/tool/gen/genInfoForm.vue
@@ -5,10 +5,10 @@
生成模板
-
+
-
+
@@ -34,7 +34,7 @@
-
+
@@ -94,12 +94,12 @@
生成代码方式
-
+
zip压缩包
-
+ 自定义路径
@@ -124,6 +124,24 @@
+
+
+
+
+ 添加
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
@@ -234,6 +252,7 @@ export default {
},
data() {
return {
+ checkedBtn: [],
subColumns: [],
rules: {
tplCategory: [
@@ -265,6 +284,10 @@ export default {
"info.subTableName": function (val) {
this.setSubTableColumns(val);
},
+ "info.checkedBtn": function (val) {
+ console.log(val + ',checkedBtn');
+ this.checkedBtn = val;
+ },
},
methods: {
/** 转换菜单数据结构 */
@@ -282,6 +305,9 @@ export default {
subSelectChange(value) {
this.info.subTableFkName = "";
},
+ checkedBtnSelect(value) {
+ this.info.checkedBtn = value;
+ },
/** 选择生成模板触发 */
tplSelectChange(value) {
if (value !== "sub") {
@@ -291,7 +317,6 @@ export default {
},
/** 设置关联外键 */
setSubTableColumns(value) {
- console.log(value);
if (value == null || value == undefined || value == "") {
return;
}
diff --git a/ZR.Vue/src/views/tool/gen/index.vue b/ZR.Vue/src/views/tool/gen/index.vue
index 420b94a..03ade24 100644
--- a/ZR.Vue/src/views/tool/gen/index.vue
+++ b/ZR.Vue/src/views/tool/gen/index.vue
@@ -37,11 +37,11 @@
- 预览
+ 预览
编辑
删除
同步
- 生成代码
+ 生成代码
@@ -59,35 +59,6 @@
-
-
-
-
-
-
- 添加
-
-
- 修改
-
-
- 删除
-
-
- 导出
-
-
-
-
- mySql
- sqlServer
-
-
-
-
@@ -122,8 +93,6 @@ export default {
activeName: "0",
},
showGenerate: false,
- // 显示的button
- checkedBtnForm: [1, 2, 3],
rules: {},
// 表数据
tableData: [],
@@ -171,39 +140,26 @@ export default {
},
// 代码预览
handlePreview(row) {
- var seachdata = {
- tableId: this.currentSelected.tableId,
- checkedBtn: this.checkedBtnForm,
- dbType: this.dbType,
- };
- previewTable(row.tableId, seachdata).then((res) => {
- if (res.code === 200) {
- this.showGenerate = false;
- this.preview.open = true;
- this.preview.data = res.data;
+ this.$refs["codeform"].validate((valid) => {
+ if (!valid) {
+ this.msgError("请先完成表格");
+ return;
}
+ previewTable(row.tableId).then((res) => {
+ if (res.code === 200) {
+ this.showGenerate = false;
+ this.preview.open = true;
+ this.preview.data = res.data;
+ }
+ });
});
},
- // 打开对话框、预览、生成
- handleShowDialog(row, type) {
- this.showGenerate = true;
- if (type == "generate") {
- this.preview.title = "代码生成";
- }
- if (type == "preview") {
- this.preview.title = "预览";
- }
- this.currentSelected = row;
- },
/**
* 点击生成服务端代码
*/
- handleGenerate: async function () {
+ handleGenTable(row) {
console.log(JSON.stringify(this.currentSelected));
- if (this.preview.title == "预览") {
- this.handlePreview(this.currentSelected);
- return;
- }
+ this.currentSelected = row;
if (!this.currentSelected) {
this.msgError("请先选择要生成代码的数据表");
return false;
@@ -221,21 +177,19 @@ export default {
var seachdata = {
tableId: this.currentSelected.tableId,
tableName: this.currentSelected.name,
- checkedBtn: this.checkedBtnForm,
- dbType: this.dbType,
// queryColumn: this.checkedQueryColumn,
};
console.log(JSON.stringify(seachdata));
codeGenerator(seachdata)
.then((res) => {
- const { code, data } = res;
- if (code == 200) {
- this.showGenerate = false;
+ const { data } = res;
+ this.showGenerate = false;
+ if (row.genType === "1") {
+ this.msgSuccess("成功生成到自定义路径:" + row.genPath);
+ } else {
this.msgSuccess("恭喜你,代码生成完成!");
this.download(data.path);
- } else {
- this.msgError(res.msg);
}
pageLoading.close();
})
@@ -251,7 +205,7 @@ export default {
this.showGenerate = false;
this.currentSelected = {};
},
- // 导入代码生成
+ /** 打开导入表弹窗 */
openImportTable() {
this.$refs.import.show();
},
diff --git a/document/admin-mysql.sql b/document/admin-mysql.sql
index f3e5be1..2319666 100644
--- a/document/admin-mysql.sql
+++ b/document/admin-mysql.sql
@@ -54,8 +54,8 @@ CREATE TABLE `sys_Tasks_log` (
-- ----------------------------
-- Records of sys_Tasks_log
-- ----------------------------
-INSERT INTO `sys_Tasks_log` VALUES (196, '1410905433996136448', '测试任务', 'SYSTEM', 'Succeed', '0', NULL, '2021-08-02 15:10:00', 'ZRTasks.Job_SyncTest', 18);
-INSERT INTO `sys_Tasks_log` VALUES (197, '1410905433996136448', '测试任务', 'SYSTEM', 'Succeed', '0', NULL, '2021-08-02 15:20:00', 'ZRTasks.Job_SyncTest', 14);
+INSERT INTO `sys_Tasks_log` VALUES (196, '1410905433996136448', '测试任务', 'SYSTEM', 'Succeed', '0', NULL, SYSDATE(), 'ZRTasks.Job_SyncTest', 18);
+INSERT INTO `sys_Tasks_log` VALUES (197, '1410905433996136448', '测试任务', 'SYSTEM', 'Succeed', '0', NULL, SYSDATE(), 'ZRTasks.Job_SyncTest', 14);
-- ----------------------------
@@ -197,17 +197,17 @@ CREATE TABLE `sys_dict_type` (
-- ----------------------------
-- Records of sys_dict_type
-- ----------------------------
-INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '用户性别列表');
-INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '菜单状态列表');
-INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '系统开关列表');
-INSERT INTO `sys_dict_type` VALUES (4, '任务状态', 'sys_job_status', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '任务状态列表');
-INSERT INTO `sys_dict_type` VALUES (5, '任务分组', 'sys_job_group', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '任务分组列表');
-INSERT INTO `sys_dict_type` VALUES (6, '系统是否', 'sys_yes_no', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '系统是否列表');
-INSERT INTO `sys_dict_type` VALUES (7, '通知类型', 'sys_notice_type', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '通知类型列表');
-INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '通知状态列表');
-INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'Y', 'admin', '2021-02-24 10:55:26', '', NULL, '操作类型列表');
-INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'Y', 'admin', '2021-02-24 10:55:27', '', NULL, '登录状态列表');
-INSERT INTO `sys_dict_type` VALUES (11, '文章状态', 'sys_article_status', '0', 'Y', 'admin', '2021-08-19 10:34:33', '', NULL, NULL);
+INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'Y', 'admin', SYSDATE(), '', NULL, '用户性别列表');
+INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', 'Y', 'admin', SYSDATE(), '', NULL, '菜单状态列表');
+INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', 'Y', 'admin', SYSDATE(), '', NULL, '系统开关列表');
+INSERT INTO `sys_dict_type` VALUES (4, '任务状态', 'sys_job_status', '0', 'Y', 'admin', SYSDATE(), '', NULL, '任务状态列表');
+INSERT INTO `sys_dict_type` VALUES (5, '任务分组', 'sys_job_group', '0', 'Y', 'admin', SYSDATE(), '', NULL, '任务分组列表');
+INSERT INTO `sys_dict_type` VALUES (6, '系统是否', 'sys_yes_no', '0', 'Y', 'admin', SYSDATE(), '', NULL, '系统是否列表');
+INSERT INTO `sys_dict_type` VALUES (7, '通知类型', 'sys_notice_type', '0', 'Y', 'admin', SYSDATE(), '', NULL, '通知类型列表');
+INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', 'Y', 'admin', SYSDATE(), '', NULL, '通知状态列表');
+INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'Y', 'admin', SYSDATE(), '', NULL, '操作类型列表');
+INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'Y', 'admin', SYSDATE(), '', NULL, '登录状态列表');
+INSERT INTO `sys_dict_type` VALUES (11, '文章状态', 'sys_article_status', '0', 'Y', 'admin', SYSDATE(), '', NULL, NULL);
SET FOREIGN_KEY_CHECKS = 1;
@@ -440,19 +440,19 @@ CREATE TABLE `sys_post` (
-- ----------------------------
-- Records of sys_post
-- ----------------------------
-INSERT INTO `sys_post` VALUES (1, 'CEO', '董事长', 1, '0', 'admin', '2021-04-20 20:43:23', '', NULL, '');
-INSERT INTO `sys_post` VALUES (2, 'SE', '项目经理', 2, '0', 'admin', '2021-04-20 20:43:23', '', NULL, '');
-INSERT INTO `sys_post` VALUES (3, 'HR', '人力资源', 3, '0', 'admin', '2021-04-20 20:43:23', '', NULL, '');
-INSERT INTO `sys_post` VALUES (4, 'USER', '普通员工', 4, '0', 'admin', '2021-04-20 20:43:23', 'admin', '2021-07-07 14:56:39', '普通用户');
-INSERT INTO `sys_post` VALUES (6, 'PM', '人事经理', 0, '0', NULL, '2021-07-07 15:01:20', 'admin', '2021-07-12 15:31:45', NULL);
-INSERT INTO `sys_post` VALUES (7, 'GM', '总经理', 0, '0', NULL, '2021-07-09 18:29:25', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (8, 'COO', '首席运营官', 0, '0', NULL, '2021-07-09 18:30:06', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (9, 'CFO', '首席财务官', 0, '0', NULL, '2021-07-09 18:30:28', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (10, 'CTO', '首席技术官', 0, '0', NULL, '2021-07-09 18:30:53', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (11, 'HRD', '人力资源总监', 0, '0', NULL, '2021-07-09 18:31:19', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (12, 'VP', '副总裁', 0, '0', NULL, '2021-07-09 18:31:31', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (13, 'OD', '运营总监', 0, '0', NULL, '2021-07-09 18:31:55', '', NULL, NULL);
-INSERT INTO `sys_post` VALUES (14, 'MD', '市场总监', 0, '0', NULL, '2021-07-09 18:32:16', '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (1, 'CEO', '董事长', 1, '0', '', SYSDATE(), '', NULL, '');
+INSERT INTO `sys_post` VALUES (2, 'SE', '项目经理', 2, '0', '', SYSDATE(), '', NULL, '');
+INSERT INTO `sys_post` VALUES (3, 'HR', '人力资源', 3, '0', '', SYSDATE(), '', NULL, '');
+INSERT INTO `sys_post` VALUES (4, 'USER', '普通员工', 4, '0', '', SYSDATE(), '', NULL, '');
+INSERT INTO `sys_post` VALUES (6, 'PM', '人事经理', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (7, 'GM', '总经理', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (8, 'COO', '首席运营官', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (9, 'CFO', '首席财务官', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (10, 'CTO', '首席技术官', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (11, 'HRD', '人力资源总监', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (12, 'VP', '副总裁', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (13, 'OD', '运营总监', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
+INSERT INTO `sys_post` VALUES (14, 'MD', '市场总监', 0, '0', NULL, SYSDATE(), '', NULL, NULL);
-- ----------------------------
-- Table structure for sys_role
@@ -479,8 +479,8 @@ CREATE TABLE `sys_role` (
-- ----------------------------
-- Records of sys_role
-- ----------------------------
-INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', 1, 0, '0', '0', 'admin', '2020-11-26 11:53:16', '', NULL, '超级管理员');
-INSERT INTO `sys_role` VALUES (2, '普通角色', 'common', 2, '2', 1, 0, '0', '0', 'admin', '2020-11-26 11:53:16', 'admin', '2021-08-02 15:05:29', '普通角色');
+INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', 1, 0, '0', '0', 'admin', SYSDATE(), 'system', NULL, '超级管理员');
+INSERT INTO `sys_role` VALUES (2, '普通角色', 'common', 2, '2', 1, 0, '0', '0', 'admin', SYSDATE(), 'system', NULL, '普通角色');
-- ----------------------------
-- Table structure for sys_role_dept