From c9ef3ad85c4291e4c2dab7ad33e2cc8ad61eb9c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Tue, 30 Nov 2021 21:33:34 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E6=9B=BF=E6=8D=A2=E9=83=A8?=
=?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=BC=95=E6=93=8E=E4=B8=BAJnt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/CodeGeneratorController.cs | 13 +-
.../Properties/launchSettings.json | 2 +-
ZR.Admin.WebApi/Startup.cs | 7 -
ZR.Admin.WebApi/ZR.Admin.WebApi.csproj | 62 +---
.../CodeGenTemplate/IServiceTemplate.txt | 12 +-
.../wwwroot/CodeGenTemplate/MySqlTemplate.txt | 12 +-
.../CodeGenTemplate/ServiceTemplate.txt | 22 +-
.../wwwroot/CodeGenTemplate/SqlTemplate.txt | 14 +-
.../wwwroot/CodeGenTemplate/TplDto.txt | 34 ++
.../wwwroot/CodeGenTemplate/TplModel.txt | 27 ++
.../wwwroot/CodeGenTemplate/TplRepository.txt | 20 ++
.../wwwroot/CodeGenTemplate/VueJsTemplate.txt | 38 +--
ZR.CodeGenerator/CodeGenerateTemplate.cs | 41 ---
ZR.CodeGenerator/CodeGeneratorTool.cs | 298 +++++++-----------
ZR.CodeGenerator/GenConstants.cs | 4 -
ZR.CodeGenerator/Model/GenerateDto.cs | 16 +-
ZR.CodeGenerator/Model/ReplaceDto.cs | 27 +-
ZR.CodeGenerator/ZR.CodeGenerator.csproj | 7 -
ZR.Model/System/Generate/GenTableColumn.cs | 33 +-
ZR.Vue/src/views/tool/gen/index.vue | 39 +--
20 files changed, 310 insertions(+), 418 deletions(-)
create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt
diff --git a/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs
index c014eaa..40dda60 100644
--- a/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs
+++ b/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs
@@ -36,8 +36,8 @@ namespace ZR.Admin.WebApi.Controllers
private readonly ISysDictDataService SysDictDataService;
private IWebHostEnvironment WebHostEnvironment;
public CodeGeneratorController(
- IGenTableService genTableService,
- IGenTableColumnService genTableColumnService,
+ IGenTableService genTableService,
+ IGenTableColumnService genTableColumnService,
ISysDictDataService dictDataService,
IWebHostEnvironment webHostEnvironment)
{
@@ -148,11 +148,11 @@ namespace ZR.Admin.WebApi.Controllers
BaseNameSpace = "ZR.",//导入默认命名空间前缀
ModuleName = "business",//导入默认模块名
ClassName = CodeGeneratorTool.GetClassName(tableName),
- BusinessName = CodeGeneratorTool.GetClassName(tableName),
+ BusinessName = CodeGeneratorTool.GetBusinessName(tableName),
FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author),
- FunctionName = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description,
TableName = tableName,
TableComment = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description,
+ FunctionName = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description,
Create_by = userName,
};
genTable.TableId = GenTableService.ImportGenTable(genTable);
@@ -223,9 +223,8 @@ namespace ZR.Admin.WebApi.Controllers
dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
dto.IsPreview = 1;
- dto.GenCodeFiles = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
//生成代码
- CodeGeneratorTool.Generate(genTableInfo, dto);
+ CodeGeneratorTool.Generate(dto);
return SUCCESS(dto.GenCodes);
}
@@ -252,7 +251,7 @@ namespace ZR.Admin.WebApi.Controllers
dto.GenTable = genTableInfo;
//生成代码
- CodeGeneratorTool.Generate(genTableInfo, dto);
+ CodeGeneratorTool.Generate(dto);
//下载文件
FileHelper.ZipGenCode(dto);
diff --git a/ZR.Admin.WebApi/Properties/launchSettings.json b/ZR.Admin.WebApi/Properties/launchSettings.json
index 7f6746e..8fd0a5e 100644
--- a/ZR.Admin.WebApi/Properties/launchSettings.json
+++ b/ZR.Admin.WebApi/Properties/launchSettings.json
@@ -4,7 +4,7 @@
"commandName": "Project",
"launchBrowser": false,
"environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": ""
+ "ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "http://localhost:8888"
}
diff --git a/ZR.Admin.WebApi/Startup.cs b/ZR.Admin.WebApi/Startup.cs
index 1d568c1..c95ff8f 100644
--- a/ZR.Admin.WebApi/Startup.cs
+++ b/ZR.Admin.WebApi/Startup.cs
@@ -86,13 +86,6 @@ namespace ZR.Admin.WebApi
}
});
- //jntģȫֱ
- Engine.Configure((options) =>
- {
- options.Data.Set("author", Configuration["gen:author"]);
- options.Data.Set("time", DateTime.Now.ToString("yyyy-MM-dd"));
- //...
- });
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
index a5b7c72..72b53d5 100644
--- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
+++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
@@ -15,27 +15,28 @@
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -60,33 +61,6 @@
Always
-
- Always
-
-
- Always
-
-
- Always
-
-
- Always
-
-
- Always
-
-
- Always
-
-
- Always
-
-
- Always
-
-
- Always
-
@@ -95,16 +69,6 @@
-
-
-
- Always
-
-
- Always
-
-
-
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt
index b64fd98..c06303e 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt
@@ -1,15 +1,15 @@
using System;
-using {ModelsNamespace}.Models;
+using ${options.ModelsNamespace}.Models;
-namespace {IServicsNamespace}.Business
+namespace ${options.IServicsNamespace}.Business
{
///
- /// {FunctionName}service接口
+ /// ${genTable.FunctionName}service接口
///
- /// @author {Author}
- /// @date {DateTime}
+ /// @author ${replaceDto.Author}
+ /// @date ${replaceDto.AddTime}
///
- public interface I{ModelTypeName}Service: IBaseService<{ModelTypeName}>
+ public interface I${replaceDto.ModelTypeName}Service: IBaseService<${replaceDto.ModelTypeName}>
{
}
}
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt
index 917216d..bca3905 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt
@@ -1,25 +1,25 @@
-- 菜单
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, remark)
-VALUES ('{FunctionName}', {ParentId}, 1, '{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', 'icon1', '', sysdate(), '{FunctionName}菜单');
+VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.permission}:list', 'icon1', '', sysdate(), '${genTable.functionName}菜单');
-- 按钮父菜单id
SELECT @menuId := LAST_INSERT_ID();
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time)
-VALUES ('{FunctionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:query', '', sysdate());
+VALUES ('${genTable.functionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:query', '', sysdate());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time)
-VALUES ('{FunctionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:add', '', sysdate());
+VALUES ('${genTable.functionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:add', '', sysdate());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time)
-VALUES ('{FunctionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:delete', '', sysdate());
+VALUES ('${genTable.functionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:delete', '', sysdate());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time)
-VALUES ('{FunctionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:update', '', sysdate());
+VALUES ('${genTable.functionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:update', '', sysdate());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time)
-VALUES ('{FunctionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:export', '', sysdate());
+VALUES ('${genTable.functionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:export', '', sysdate());
SELECT * FROM sys_menu WHERE parentId = @menuId;
SELECT * FROM sys_menu WHERE menuId = @menuId;
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt
index e23b5f4..0b32e69 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt
@@ -1,23 +1,23 @@
using Infrastructure;
using Infrastructure.Attribute;
-using {ModelsNamespace}.Models;
-using {IRepositoriesNamespace};
+using ${options.ModelsNamespace}.Models;
+using ${options.IRepositoriesNamespace};
-namespace {ServicesNamespace}.Business
+namespace ${options.ServicesNamespace}.Business
{
///
- /// {FunctionName}Service业务层处理
+ /// ${genTable.FunctionName}Service业务层处理
///
- /// @author {Author}
- /// @date {DateTime}
+ /// @author ${replaceDto.Author}
+ /// @date ${replaceDto.AddTime}
///
- [AppService(ServiceType = typeof(I{ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)]
- public class {ModelTypeName}Service : BaseService<{ModelTypeName}>, I{ModelTypeName}Service
+ [AppService(ServiceType = typeof(I${replaceDto.ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)]
+ public class ${replaceDto.ModelTypeName}Service : BaseService<${replaceDto.ModelTypeName}>, I${replaceDto.ModelTypeName}Service
{
- private readonly {ModelTypeName}Repository _{ModelTypeName}repository;
- public {ModelTypeName}Service({ModelTypeName}Repository repository) : base(repository)
+ private readonly ${replaceDto.ModelTypeName}Repository _${replaceDto.ModelTypeName}repository;
+ public ${replaceDto.ModelTypeName}Service(${replaceDto.ModelTypeName}Repository repository) : base(repository)
{
- _{ModelTypeName}repository = repository;
+ _${replaceDto.ModelTypeName}repository = repository;
}
#region 业务逻辑代码
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt
index b4fd2f2..39a8a5f 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt
@@ -1,25 +1,25 @@
--- {FunctionName}菜单
+-- ${genTable.functionName}菜单
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time, remark)
-VALUES ('{FunctionName}', {ParentId}, 1, '{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', 'icon1', GETDATE(), '{FunctionName}');
+VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.permission}:list', 'icon1', GETDATE(), '${genTable.functionName}');
-- 按钮父菜单id
declare @menuId int = @@identity
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time)
-VALUES ('{FunctionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:query', '', '', GETDATE());
+VALUES ('${genTable.functionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:query', '', '', GETDATE());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time)
-VALUES ('{FunctionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:add', '', '', GETDATE());
+VALUES ('${genTable.functionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:add', '', '', GETDATE());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time)
-VALUES ('{FunctionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:delete', '', '', GETDATE());
+VALUES ('${genTable.functionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:delete', '', '', GETDATE());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time)
-VALUES ('{FunctionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:update', '', '', GETDATE());
+VALUES ('${genTable.functionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:update', '', '', GETDATE());
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time)
-VALUES ('{FunctionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:export', '', '', GETDATE());
+VALUES ('${genTable.functionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:export', '', '', GETDATE());
SELECT * FROM sys_menu WHERE parentId = @menuId;
SELECT * FROM sys_menu WHERE menuId = @menuId;
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
new file mode 100644
index 0000000..52b05d7
--- /dev/null
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using ${options.ModelsNamespace}.Dto;
+using ${options.ModelsNamespace}.Models;
+
+namespace ${options.DtosNamespace}.Dto
+{
+ ///
+ /// ${genTable.FunctionName}输入对象
+ ///
+ public class ${replaceDto.ModelTypeName}Dto
+ {
+$foreach(item in genTable.Columns)
+$if((item.IsInsert || item.IsEdit || item.IsPk || item.IsIncrement))
+ public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
+$end
+${end}
+ }
+
+ ///
+ /// ${genTable.FunctionName}查询对象
+ ///
+ public class ${replaceDto.ModelTypeName}QueryDto : PagerInfo
+ {
+$foreach(item in genTable.Columns)
+$if(item.IsQuery)
+ public $item.CsharpType $item.CsharpField { get; set; }
+$end
+${end}
+
+ public DateTime? BeginTime { get; set; }
+ public DateTime? EndTime { get; set; }
+ }
+}
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
new file mode 100644
index 0000000..e43773c
--- /dev/null
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using SqlSugar;
+
+namespace ${options.ModelsNamespace}.Models
+{
+ ///
+ /// ${genTable.FunctionName},数据实体对象
+ ///
+ /// @author ${replaceDto.Author}
+ /// @date ${replaceDto.AddTime}
+ ///
+ [SugarTable("${replaceDto.TableName}")]
+ public class ${replaceDto.ModelTypeName}
+ {
+$foreach(item in genTable.Columns)
+ ///
+ /// 描述 : ${item.ColumnComment}
+ /// 空值 :$if(item.IsRequired == "True") false $else true $end
+ ///
+$if(item.IsPk || item.IsIncrement)
+ [SqlSugar.SugarColumn(IsPrimaryKey = ${item.IsPk.ToString().ToLower()}, IsIdentity = ${item.IsIncrement.ToString().ToLower()})]
+$end
+ public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
+${end}
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt
new file mode 100644
index 0000000..cd43d77
--- /dev/null
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt
@@ -0,0 +1,20 @@
+using System;
+using Infrastructure.Attribute;
+using ${options.RepositoriesNamespace}.System;
+using ${options.ModelsNamespace}.Models;
+
+namespace ${options.RepositoriesNamespace}
+{
+ ///
+ /// ${genTable.FunctionName}仓储
+ ///
+ /// @author ${replaceDto.Author}
+ /// @date ${replaceDto.AddTime}
+ ///
+ [AppService(ServiceLifetime = LifeTime.Transient)]
+ public class ${replaceDto.ModelTypeName}Repository : BaseRepository<${replaceDto.ModelTypeName}>
+ {
+ #region 业务逻辑代码
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt
index 2da4f05..fbbe669 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt
@@ -1,66 +1,66 @@
import request from '@/utils/request'
/**
-* {FunctionName}分页查询
+* ${genTable.functionName}分页查询
* @param {查询条件} data
*/
-export function list{ModelTypeName}(query) {
+export function list${replaceDto.ModelTypeName}(query) {
return request({
- url: '{ModuleName}/{ModelTypeName}/list',
+ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/list',
method: 'get',
params: query,
})
}
/**
-* 新增{FunctionName}
+* 新增${genTable.functionName}
* @param data
*/
-export function add{ModelTypeName}(data) {
+export function add${replaceDto.ModelTypeName}(data) {
return request({
- url: '{ModuleName}/{ModelTypeName}',
+ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}',
method: 'post',
data: data,
})
}
/**
-* 修改{FunctionName}
+* 修改${genTable.functionName}
* @param data
*/
-export function update{ModelTypeName}(data) {
+export function update${replaceDto.ModelTypeName}(data) {
return request({
- url: '{ModuleName}/{ModelTypeName}',
+ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}',
method: 'PUT',
data: data,
})
}
/**
-* 获取{FunctionName}详情
-* @param {Id} {FunctionName}Id
+* 获取${genTable.functionName}详情
+* @param {Id}
*/
-export function get{ModelTypeName}(id) {
+export function get${replaceDto.ModelTypeName}(id) {
return request({
- url: '{ModuleName}/{ModelTypeName}/' + id,
+ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + id,
method: 'get'
})
}
/**
-* 删除
+* 删除${genTable.functionName}
* @param {主键} pid
*/
-export function del{ModelTypeName}(pid) {
+export function del${replaceDto.ModelTypeName}(pid) {
return request({
- url: '{ModuleName}/{ModelTypeName}/' + pid,
+ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + pid,
method: 'delete'
})
}
-// 导出
-export function export{ModelTypeName}(query) {
+// 导出${genTable.functionName}
+export function export${replaceDto.ModelTypeName}(query) {
return request({
- url: '{ModuleName}/{ModelTypeName}/export',
+ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/export',
method: 'get',
params: query
})
diff --git a/ZR.CodeGenerator/CodeGenerateTemplate.cs b/ZR.CodeGenerator/CodeGenerateTemplate.cs
index 1f97147..b05facc 100644
--- a/ZR.CodeGenerator/CodeGenerateTemplate.cs
+++ b/ZR.CodeGenerator/CodeGenerateTemplate.cs
@@ -11,44 +11,6 @@ namespace ZR.CodeGenerator
///
public class CodeGenerateTemplate
{
- ///
- /// 表Model属性
- ///
- ///
- ///
- public static string GetModelTemplate(GenTableColumn tbColumn)
- {
- StringBuilder sbModel = new StringBuilder();
- sbModel.AppendLine(" /// ");
- sbModel.AppendLine($" /// 描述 :{tbColumn.ColumnComment}");
- sbModel.AppendLine($" /// 空值 :{!tbColumn.IsRequired}");
- sbModel.AppendLine(" /// ");
- if (tbColumn.IsPk || tbColumn.IsIncrement)
- {
- sbModel.AppendLine($" [SqlSugar.SugarColumn(IsPrimaryKey = {tbColumn.IsPk.ToString().ToLower()}, IsIdentity = {tbColumn.IsIncrement.ToString().ToLower()})]");
- }
- sbModel.AppendLine($" public {tbColumn.CsharpType}{(CodeGeneratorTool.GetModelRequired(tbColumn))} {tbColumn.CsharpField} {{ get; set; }}");
- return sbModel.ToString();
- }
- ///
- /// 增改Dto
- ///
- ///
- ///
- public static string GetDtoProperty(GenTableColumn tbColumn)
- {
- string InputDtoContent = "";
- if (GenConstants.inputDtoNoField.Any(f => f.ToLower().Contains(tbColumn.CsharpField.ToLower())))
- {
- return InputDtoContent;
- }
- else if (tbColumn.IsInsert || tbColumn.IsEdit || tbColumn.IsPk || tbColumn.IsIncrement)
- {
- InputDtoContent += $" public {tbColumn.CsharpType}{CodeGeneratorTool.GetModelRequired(tbColumn)} {tbColumn.CsharpField} {{ get; set; }}\r\n";
- }
-
- return InputDtoContent;
- }
///
/// 查询Dto属性
///
@@ -57,10 +19,8 @@ namespace ZR.CodeGenerator
///
public static void GetQueryDtoProperty(GenTableColumn tbColumn, ReplaceDto replaceDto)
{
- string QueryDtoContent = "";
if (tbColumn.IsQuery)
{
- QueryDtoContent += $" public {tbColumn.CsharpType} {tbColumn.CsharpField} {{ get; set; }}\r\n";
//字符串类型表达式
if (tbColumn.CsharpType == GenConstants.TYPE_STRING)
{
@@ -78,7 +38,6 @@ namespace ZR.CodeGenerator
replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.EndTime != null, it => it.{tbColumn.CsharpField} <= parm.EndTime);\n";
}
}
- replaceDto.QueryProperty += QueryDtoContent;
}
#region vue 模板
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index 2275666..06bf51d 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -25,11 +25,10 @@ namespace ZR.CodeGenerator
///
/// 代码生成器入口方法
///
- ///
///
- public static void Generate(GenTable dbTableInfo, GenerateDto dto)
+ public static void Generate(GenerateDto dto)
{
- _option.BaseNamespace = dbTableInfo.BaseNameSpace;
+ _option.BaseNamespace = dto.GenTable.BaseNameSpace;
_option.DtosNamespace = _option.BaseNamespace + "Model";
_option.ModelsNamespace = _option.BaseNamespace + "Model";
_option.RepositoriesNamespace = _option.BaseNamespace + "Repository";
@@ -38,31 +37,30 @@ namespace ZR.CodeGenerator
_option.ServicesNamespace = _option.BaseNamespace + "Service";
_option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi";
- GenerateSingle(dbTableInfo?.Columns, dbTableInfo, dto);
+ dto.GenOptions = _option;
+ GenerateSingle(dto);
}
///
/// 单表生成代码
///
- /// 表字段集合
- /// 表信息
///
- public static void GenerateSingle(List listField, GenTable tableInfo, GenerateDto dto)
+ public static void GenerateSingle(GenerateDto dto)
{
string PKName = "id";
string PKType = "int";
ReplaceDto replaceDto = new();
- replaceDto.ModelTypeName = tableInfo.ClassName;//表名对应C# 实体类名
- replaceDto.TableName = tableInfo.TableName;//表名
- replaceDto.Permission = $"{tableInfo.ModuleName}:{tableInfo.ClassName.ToLower()}";//权限
+ replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名
+ replaceDto.TableName = dto.GenTable.TableName;//表名
+ replaceDto.Permission = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限
+ replaceDto.Author = dto.GenTable.FunctionAuthor;
replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName);
- replaceDto.Author = tableInfo.FunctionAuthor;
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
//循环表字段信息
- foreach (GenTableColumn dbFieldInfo in listField)
+ foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns)
{
string columnName = dbFieldInfo.ColumnName;
@@ -94,20 +92,14 @@ namespace ZR.CodeGenerator
sb2.AppendLine($" this.{FirstLowerCase(dbFieldInfo.CsharpField)}Options = response.data;");
sb2.AppendLine(" })");
}
- //引用组件 已弃用、改用前端全局注册
- //if (dbFieldInfo.HtmlType == GenConstants.HTML_EDITOR)
- //{
- // replaceDto.VueComponent += "Editor,";
- // replaceDto.VueComponentImport += "import Editor from '@/components/Editor';\n";
- //}
CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto);
- replaceDto.ModelProperty += CodeGenerateTemplate.GetModelTemplate(dbFieldInfo);
+ //replaceDto.ModelProperty += CodeGenerateTemplate.GetModelTemplate(dbFieldInfo);
replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo);
CodeGenerateTemplate.TplVueJsMethod(dbFieldInfo, replaceDto);
replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo);
replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo);
- replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo);
+ //replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo);
replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo);
}
replaceDto.VueDataContent = sb1.ToString();
@@ -117,44 +109,20 @@ namespace ZR.CodeGenerator
replaceDto.PKName = PKName;
replaceDto.PKType = PKType;
+ InitJntTemplate(dto, replaceDto);
+
+ GenerateModels(replaceDto, dto);
+ GenerateInputDto(replaceDto, dto);
+ GenerateRepository(replaceDto, dto);
+ GenerateIService(replaceDto, dto);
+ GenerateService(replaceDto, dto);
+ GenerateControllers(replaceDto, dto);
+ GenerateVueViews(replaceDto, dto);
+ GenerateVueJs(replaceDto, dto);
+ GenerateSql(replaceDto, dto);
+
+ if (dto.IsPreview == 1) return;
- if (dto.GenCodeFiles.Contains(1))
- {
- GenerateModels(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(2))
- {
- GenerateInputDto(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(3))
- {
- GenerateRepository(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(4))
- {
- GenerateIService(replaceDto, dto);
- GenerateService(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(5))
- {
- GenerateControllers(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(6))
- {
- GenerateVueViews(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(7))
- {
- GenerateVueJs(replaceDto, dto);
- }
- if (dto.GenCodeFiles.Contains(8))
- {
- GenerateSql(replaceDto, dto);
- }
- if (dto.IsPreview == 1)
- {
- return;
- }
foreach (var item in dto.GenCodes)
{
FileHelper.WriteAndSave(item.Path, item.Content);
@@ -173,20 +141,10 @@ namespace ZR.CodeGenerator
// ../ZR.Model/Models/User.cs
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", replaceDto.ModelTypeName + ".cs");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
+ var tpl = FileHelper.ReadJtTemplate("TplModel.txt");
+ var result = tpl.Render();
- var content = FileHelper.ReadTemplate("ModelTemplate.txt")
- .Replace("{ModelsNamespace}", _option.ModelsNamespace)
- .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
- .Replace("{FunctionName}", generateDto.GenTable.FunctionName)
- .Replace("{KeyTypeName}", replaceDto.PKName)
- .Replace("{PropertyName}", replaceDto.ModelProperty)
- .Replace("{TableName}", replaceDto.TableName)
- .Replace("{Author}", replaceDto.Author)
- .Replace("{DateTime}", replaceDto.AddTime);
-
- generateDto.GenCodes.Add(new GenCode(1, "实体类", fullPath, content));
+ generateDto.GenCodes.Add(new GenCode(1, "实体类", fullPath, result));
}
///
@@ -198,18 +156,7 @@ namespace ZR.CodeGenerator
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", $"{replaceDto.ModelTypeName}Dto.cs");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
-
- var tpl = FileHelper.ReadJtTemplate("InputDtoTemplate.txt");
- tpl.Set("DtosNamespace", _option.DtosNamespace);
- tpl.Set("ModelsNamespace", _option.ModelsNamespace);
- tpl.Set("FunctionName", generateDto.GenTable.FunctionName);
- tpl.Set("PropertyName", replaceDto.InputDtoProperty);
- tpl.Set("QueryProperty", replaceDto.QueryProperty);
- tpl.Set("ModelTypeName", replaceDto.ModelTypeName);
- tpl.Set("Author", replaceDto.Author);
- tpl.Set("DateTime", replaceDto.AddTime);
+ var tpl = FileHelper.ReadJtTemplate("TplDto.txt");
var result = tpl.Render();
generateDto.GenCodes.Add(new GenCode(2, "数据传输实体类", fullPath, result));
@@ -226,20 +173,11 @@ namespace ZR.CodeGenerator
private static void GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, "Repositories", $"{replaceDto.ModelTypeName}Repository.cs");
+
+ var tpl = FileHelper.ReadJtTemplate("TplRepository.txt");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
-
- var content = FileHelper.ReadTemplate("RepositoryTemplate.txt")
- .Replace("{ModelsNamespace}", _option.ModelsNamespace)
- .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace)
- .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
- .Replace("{FunctionName}", generateDto.GenTable.FunctionName)
- .Replace("{TableName}", replaceDto.TableName)
- .Replace("{Author}", replaceDto.Author)
- .Replace("{DateTime}", replaceDto.AddTime);
-
- generateDto.GenCodes.Add(new GenCode(3, "仓储层", fullPath, content));
+ var result = tpl.Render();
+ generateDto.GenCodes.Add(new GenCode(3, "仓储层", fullPath, result));
}
#endregion
@@ -254,19 +192,10 @@ namespace ZR.CodeGenerator
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, "Business", "IBusService", $"I{replaceDto.ModelTypeName}Service.cs");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
- var content = FileHelper.ReadTemplate("IServiceTemplate.txt")
- .Replace("{ModelsNamespace}", _option.ModelsNamespace)
- .Replace("{FunctionName}", generateDto.GenTable.FunctionName)
- .Replace("{DtosNamespace}", _option.DtosNamespace)
- .Replace("{IServicsNamespace}", _option.IServicsNamespace)
- .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace)
- .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
- .Replace("{Author}", replaceDto.Author)
- .Replace("{DateTime}", replaceDto.AddTime);
+ var tpl = FileHelper.ReadJtTemplate("IServiceTemplate.txt");
- generateDto.GenCodes.Add(new GenCode(4, "接口层", fullPath, content));
+ var result = tpl.Render();
+ generateDto.GenCodes.Add(new GenCode(4, "接口层", fullPath, result));
}
///
@@ -276,21 +205,10 @@ namespace ZR.CodeGenerator
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, "Business", $"{replaceDto.ModelTypeName}Service.cs");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
+ var tpl = FileHelper.ReadJtTemplate("ServiceTemplate.txt");
- var content = FileHelper.ReadTemplate("ServiceTemplate.txt")
- .Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace)
- .Replace("{DtosNamespace}", _option.DtosNamespace)
- .Replace("{IServicsNamespace}", _option.IServicsNamespace)
- .Replace("{FunctionName}", generateDto.GenTable.FunctionName)
- .Replace("{ModelsNamespace}", _option.ModelsNamespace)
- .Replace("{ServicesNamespace}", _option.ServicesNamespace)
- .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
- .Replace("{Author}", replaceDto.Author)
- .Replace("{DateTime}", replaceDto.AddTime);
-
- generateDto.GenCodes.Add(new GenCode(4, "服务层", fullPath, content));
+ var result = tpl.Render();
+ generateDto.GenCodes.Add(new GenCode(4, "服务层", fullPath, result));
}
#endregion
@@ -302,8 +220,6 @@ namespace ZR.CodeGenerator
private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
var content = FileHelper.ReadTemplate("ControllersTemplate.txt")
.Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace)
@@ -341,9 +257,6 @@ namespace ZR.CodeGenerator
{
var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, replaceDto.ViewsFileName, "index.vue");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
-
var content = FileHelper.ReadTemplate("VueTemplate.txt")
.Replace("{fileClassName}", replaceDto.ViewsFileName)
.Replace("{VueViewListContent}", replaceDto.VueViewListHtml)//查询 table列
@@ -361,27 +274,6 @@ namespace ZR.CodeGenerator
.Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, content));
-
- //var tpl = FileHelper.ReadJtTemplate("VueTemplate.txt");
-
- //tpl.Set("fileClassName", replaceDto.ViewsFileName);
- //tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列
- //tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单
- //tpl.Set("ModelTypeName", replaceDto.ModelTypeName);
- //tpl.Set("Permission", replaceDto.Permission);
- //tpl.Set("VueViewFormResetHtml", replaceDto.VueViewFormResetHtml);
- ////tpl.Set("vueJsMethod}", replaceDto.VueJsMethod);
- ////tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml);
- ////tpl.Set("VueDataContent", replaceDto.VueDataContent);
- ////tpl.Set("PrimaryKey", FirstLowerCase(replaceDto.PKName));
- ////tpl.Set("MountedMethod", replaceDto.MountedMethod);
- ////tpl.Set("VueComponent", replaceDto.VueComponent.TrimEnd(','));
- ////tpl.Set("VueComponentImport", replaceDto.VueComponentImport);
- ////tpl.Set("VueViewEditFormRuleContent", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
- //tpl.Set("uploadImage", generateDto.GenTable.Columns.Any(x => x.HtmlType == GenConstants.HTML_IMAGE_UPLOAD));
-
- //var result = tpl.Render();
- //generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result));
}
///
/// 7、生成vue页面api
@@ -393,15 +285,10 @@ namespace ZR.CodeGenerator
{
string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", replaceDto.ViewsFileName + ".js");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
+ var tpl = FileHelper.ReadJtTemplate("VueJsTemplate.txt");
- var content = FileHelper.ReadTemplate("VueJsTemplate.txt")
- .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
- .Replace("{FunctionName}", generateDto.GenTable.FunctionName)
- .Replace("{ModuleName}", generateDto.GenTable.ModuleName);
-
- generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, content));
+ var result = tpl.Render();
+ generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result));
}
#endregion
@@ -412,8 +299,6 @@ namespace ZR.CodeGenerator
{
string fullPath = Path.Combine(generateDto.GenCodePath, replaceDto.ViewsFileName + ".sql");
- if (File.Exists(fullPath) && !generateDto.Coverd)
- return;
var tempName = "";
switch (generateDto.DbType)
{
@@ -426,15 +311,10 @@ namespace ZR.CodeGenerator
default:
break;
}
- var content = FileHelper.ReadTemplate($"{tempName}.txt")
- .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
- .Replace("{Permission}", replaceDto.Permission)
- .Replace("{ModuleName}", generateDto.GenTable.ModuleName)
- .Replace("{ViewsFileName}", replaceDto.ViewsFileName)
- .Replace("{ParentId}", generateDto.GenTable.ParentMenuId ?? "0")
- .Replace("{FunctionName}", generateDto.GenTable.FunctionName);
+ var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt");
- generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, content));
+ var result = tpl.Render();
+ generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result));
}
#endregion
@@ -466,6 +346,19 @@ namespace ZR.CodeGenerator
return tableName.Substring(0, 1).ToUpper() + tableName[1..].Replace("_", "");
}
+ ///
+ /// 获取业务名
+ ///
+ /// tableName 表名
+ /// 业务名
+ public static string GetBusinessName(string tableName)
+ {
+ int lastIndex = tableName.LastIndexOf("_");
+ int nameLength = tableName.Length;
+ string businessName = tableName.Substring(lastIndex + 1, nameLength);
+ return businessName;
+ }
+
///
/// 首字母转小写,输出前端
///
@@ -486,16 +379,44 @@ namespace ZR.CodeGenerator
{
return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription;
}
+ /////
+ ///// 判断是否给属性添加?
+ /////
+ /////
+ /////
+ //public static string GetModelRequired(GenTableColumn dbFieldInfo)
+ //{
+ // return (!dbFieldInfo.IsRequired && (IsNumber(dbFieldInfo.ColumnType) || dbFieldInfo.CsharpType == "DateTime")) ? "?" : "";
+ //}
+
///
- /// 判断是否给属性添加?
+ /// 获取C# 类型
///
- ///
+ ///
///
- public static string GetModelRequired(GenTableColumn dbFieldInfo)
+ public static string GetCSharpDatatype(string sDatatype)
{
- return (!dbFieldInfo.IsRequired && (IsNumber(dbFieldInfo.ColumnType) || dbFieldInfo.CsharpType == "DateTime")) ? "?" : "";
+ sDatatype = sDatatype.ToLower();
+ string sTempDatatype = sDatatype switch
+ {
+ "int" or "number" or "integer" or "smallint" => "int",
+ "bigint" => "long",
+ "tinyint" => "byte",
+ "numeric" or "real" or "float" => "float",
+ "decimal" or "numer(8,2)" => "decimal",
+ "bit" => "bool",
+ "date" or "datetime" or "datetime2" or "smalldatetime" => "DateTime",
+ "money" or "smallmoney" => "double",
+ _ => "string",
+ };
+ return sTempDatatype;
}
+ public static bool IsNumber(string tableDataType)
+ {
+ string[] arr = new string[] { "int", "long" };
+ return arr.Any(f => f.Contains(GetCSharpDatatype(tableDataType)));
+ }
#endregion
///
@@ -567,32 +488,27 @@ namespace ZR.CodeGenerator
}
///
- /// 获取C# 类型
+ /// 初始化Jnt模板
///
- ///
- ///
- public static string GetCSharpDatatype(string sDatatype)
+ ///
+ ///
+ private static void InitJntTemplate(GenerateDto dto, ReplaceDto replaceDto)
{
- sDatatype = sDatatype.ToLower();
- string sTempDatatype = sDatatype switch
+ //Engine.Current.Clean();
+
+ //jnt模板引擎全局变量
+ Engine.Configure((options) =>
{
- "int" or "number" or "integer" or "smallint" => "int",
- "bigint" => "long",
- "tinyint" => "byte",
- "numeric" or "real" or "float" => "float",
- "decimal" or "numer(8,2)" => "decimal",
- "bit" => "bool",
- "date" or "datetime" or "datetime2" or "smalldatetime" => "DateTime",
- "money" or "smallmoney" => "double",
- _ => "string",
- };
- return sTempDatatype;
+ options.TagPrefix = "${";
+ options.TagSuffix = "}";
+ options.TagFlag = '$';
+ options.OutMode = OutMode.Auto;
+ options.Data.Set("replaceDto", replaceDto);
+ options.Data.Set("options", dto.GenOptions);
+ options.Data.Set("genTable", dto.GenTable);
+ //...其它数据
+ });
}
- public static bool IsNumber(string tableDataType)
- {
- string[] arr = new string[] { "int", "long" };
- return arr.Any(f => f.Contains(GetCSharpDatatype(tableDataType)));
- }
}
}
diff --git a/ZR.CodeGenerator/GenConstants.cs b/ZR.CodeGenerator/GenConstants.cs
index 9e192f2..a32f4dc 100644
--- a/ZR.CodeGenerator/GenConstants.cs
+++ b/ZR.CodeGenerator/GenConstants.cs
@@ -64,10 +64,6 @@ namespace ZR.CodeGenerator
/** 数据库时间类型 */
public static string[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" };
- /** 数据库数字类型 */
- public static string[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer",
- "bit", "bigint", "float", "double", "decimal" };
-
/** 页面不需要编辑字段 */
public static string[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "delFlag" };
diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs
index 9ce7d07..3554346 100644
--- a/ZR.CodeGenerator/Model/GenerateDto.cs
+++ b/ZR.CodeGenerator/Model/GenerateDto.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
using ZR.Model.System.Generate;
namespace ZR.CodeGenerator.Model
@@ -10,24 +6,16 @@ namespace ZR.CodeGenerator.Model
public class GenerateDto
{
public long TableId { get; set; }
- //public string[] QueryColumn { get; set; }
///
/// 是否预览代码
///
public int IsPreview { get; set; }
///
- /// 要生成的文件
- ///
- public int[] GenCodeFiles { get; set; }
- ///
- /// 如果目标文件存在,是否覆盖。默认为false
- ///
- public bool Coverd { get; set; } = true;
- ///
/// 生成代码的数据库类型 0、mysql 1、sqlserver
///
public int DbType { get; set; }
public GenTable GenTable { get; set; }
+ public CodeGenerateOption GenOptions { get; set; }
#region 存储路径
///
/// 代码模板预览存储路径存放
diff --git a/ZR.CodeGenerator/Model/ReplaceDto.cs b/ZR.CodeGenerator/Model/ReplaceDto.cs
index 0d2be48..13ca6aa 100644
--- a/ZR.CodeGenerator/Model/ReplaceDto.cs
+++ b/ZR.CodeGenerator/Model/ReplaceDto.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using ZR.Model.System.Generate;
namespace ZR.CodeGenerator.Model
{
@@ -38,14 +39,14 @@ namespace ZR.CodeGenerator.Model
public string InsertColumn { get; set; }
- ///
- /// 实体属性模板
- ///
- public string ModelProperty { get; set; }
- ///
- /// 输入Dto模板
- ///
- public string InputDtoProperty { get; set; }
+ /////
+ ///// 实体属性模板
+ /////
+ //public string ModelProperty { get; set; }
+ /////
+ ///// 输入Dto模板
+ /////
+ //public string InputDtoProperty { get; set; }
//vue、api
public string VueViewFormResetHtml { get; set; }
@@ -73,10 +74,10 @@ namespace ZR.CodeGenerator.Model
/// 查询条件
///
public string QueryCondition { get; set; } = "";
- ///
- /// 查询属性
- ///
- public string QueryProperty { get; set; }
+ /////
+ ///// 查询属性
+ /////
+ //public string QueryProperty { get; set; }
///
/// vue data内容
///
@@ -105,7 +106,7 @@ namespace ZR.CodeGenerator.Model
/// 上传URL data
///
public string VueUploadUrl { get; set; }
- public bool UploadImage{ get; set; }
+ //public bool UploadImage{ get; set; }
public string Author { get; set; }
public string AddTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd");
}
diff --git a/ZR.CodeGenerator/ZR.CodeGenerator.csproj b/ZR.CodeGenerator/ZR.CodeGenerator.csproj
index 849d777..fa433ba 100644
--- a/ZR.CodeGenerator/ZR.CodeGenerator.csproj
+++ b/ZR.CodeGenerator/ZR.CodeGenerator.csproj
@@ -14,11 +14,4 @@
-
-
-
- PreserveNewest
-
-
-
diff --git a/ZR.Model/System/Generate/GenTableColumn.cs b/ZR.Model/System/Generate/GenTableColumn.cs
index 38ba31b..2d256b5 100644
--- a/ZR.Model/System/Generate/GenTableColumn.cs
+++ b/ZR.Model/System/Generate/GenTableColumn.cs
@@ -1,41 +1,40 @@
-using Newtonsoft.Json;
+using SqlSugar;
using System;
-using System.Collections.Generic;
-using System.Text;
+using System.Linq;
namespace ZR.Model.System.Generate
{
///
/// 代码生成表字段
///
- [SqlSugar.SugarTable("gen_table_column")]
- [SqlSugar.Tenant("0")]
+ [SugarTable("gen_table_column")]
+ [Tenant("0")]
public class GenTableColumn : SysBase
{
- [SqlSugar.SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
+ [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
public int ColumnId { get; set; }
public string ColumnName { get; set; }
- [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)]
+ [SugarColumn(IsOnlyIgnoreUpdate = true)]
public int TableId { get; set; }
- [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)]
+ [SugarColumn(IsOnlyIgnoreUpdate = true)]
public string TableName { get; set; }
public string ColumnComment { get; set; }
- [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)]
+ [SugarColumn(IsOnlyIgnoreUpdate = true)]
public string ColumnType { get; set; }
public string CsharpType { get; set; }
public string CsharpField { get; set; }
///
/// 是否主键(1是)
///
- [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)]
+ [SugarColumn(IsOnlyIgnoreUpdate = true)]
public bool IsPk { get; set; }
///
/// 是否必填(1是)
///
public bool IsRequired { get; set; }
- [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)]
+ [SugarColumn(IsOnlyIgnoreUpdate = true)]
public bool IsIncrement { get; set; }
///
/// 是否插入
@@ -63,10 +62,22 @@ namespace ZR.Model.System.Generate
/// 字典类型
///
public string DictType { get; set; }
+
+ #region 额外字段
+ [SugarColumn(IsIgnore = true)]
+ public string RequiredStr
+ {
+ get
+ {
+ string[] arr = new string[] { "int", "long" };
+ return (!IsRequired &&(arr.Any(f => f.Contains(CsharpType))) || typeof(DateTime).Name == CsharpType) ? "?" : "";
+ }
+ }
///
/// 字典集合
///
//[SqlSugar.SugarColumn(IsIgnore = true)]
//public List DictDatas { get; set; }
+ #endregion
}
}
diff --git a/ZR.Vue/src/views/tool/gen/index.vue b/ZR.Vue/src/views/tool/gen/index.vue
index e310d97..85f48ce 100644
--- a/ZR.Vue/src/views/tool/gen/index.vue
+++ b/ZR.Vue/src/views/tool/gen/index.vue
@@ -16,10 +16,12 @@
导入
- 删除
+
+ 删除
-
+
@@ -27,15 +29,16 @@
-
+
-
+
预览
编辑
删除
+ 同步
生成代码
@@ -55,29 +58,11 @@
-
-
- 生成实体类Model
- 生成表单数据传输类Dto
- 生成仓储层Repository
- 生成服务类Service和接口
- 生成控制器Controller
- 生成Vue页面
- 生成Vue页面数据访问api
- 生成Sql文件
-
-
-
-
- 是
- 否
-
mySql
sqlServer
-