fix: 强化代码生成器

This commit is contained in:
wintel
2025-05-18 21:14:28 +08:00
parent aeaaa29122
commit fe152777d0
6 changed files with 78 additions and 54 deletions

View File

@@ -280,6 +280,43 @@ namespace OpenAuth.App
CheckExistsModule(sysTableInfo.ModuleCode); CheckExistsModule(sysTableInfo.ModuleCode);
string updateColumns = string.Empty;
string insertColumns = string.Empty;
foreach (var column in sysColumns)
{
if(column.ColumnName.ToLower() == "id")
{
continue;
}
if(column.ColumnName.ToLower() == "createtime" || column.ColumnName.ToLower() == "updatetime")
{
updateColumns += $" {column.ColumnName} = DateTime.Now,";
insertColumns += $" obj.{column.ColumnName} = DateTime.Now;";
updateColumns += "\r\n";
insertColumns += "\r\n";
continue;
}
if(column.ColumnName.ToLower() == "createuserid" || column.ColumnName.ToLower() == "updateuserid")
{
updateColumns += $" {column.ColumnName} = user.Id,";
insertColumns += $" obj.{column.ColumnName} = user.Id;";
updateColumns += "\r\n";
insertColumns += "\r\n";
continue;
}
if(column.ColumnName.ToLower() == "createusername" || column.ColumnName.ToLower() == "updateusername")
{
updateColumns += $" {column.ColumnName} = user.Name,";
insertColumns += $" obj.{column.ColumnName} = user.Name;";
updateColumns += "\r\n";
insertColumns += "\r\n";
continue;
}
//insert有map函数所以不需要处理只处理update即可
updateColumns += $" {column.ColumnName} = request.{column.ColumnName},";
updateColumns += "\r\n";
}
string domainContent = string.Empty; string domainContent = string.Empty;
//查找是否存在子表的情况 //查找是否存在子表的情况
var subTable = Repository.FirstOrDefault(u => u.ParentTableId == sysTableInfo.Id); var subTable = Repository.FirstOrDefault(u => u.ParentTableId == sysTableInfo.Id);
@@ -300,6 +337,8 @@ namespace OpenAuth.App
.Replace("{ModuleCode}", sysTableInfo.ModuleCode) .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
.Replace("{ModuleName}", sysTableInfo.ModuleName) .Replace("{ModuleName}", sysTableInfo.ModuleName)
.Replace("{ClassName}", sysTableInfo.ClassName) .Replace("{ClassName}", sysTableInfo.ClassName)
.Replace("{UpdateColumns}", updateColumns)
.Replace("{InsertColumns}", insertColumns)
.Replace("{StartName}", StratName); .Replace("{StartName}", StratName);
//如果有外键(是一个子表) //如果有外键(是一个子表)
@@ -334,6 +373,8 @@ namespace OpenAuth.App
.Replace("{SubForeignKey}", subTable.ForeignKey) .Replace("{SubForeignKey}", subTable.ForeignKey)
.Replace("{SubClassName}", subTable.ClassName) .Replace("{SubClassName}", subTable.ClassName)
.Replace("{SubModuleCode}", subTable.ModuleCode) .Replace("{SubModuleCode}", subTable.ModuleCode)
.Replace("{UpdateColumns}", updateColumns)
.Replace("{InsertColumns}", insertColumns)
.Replace("{StartName}", StratName); .Replace("{StartName}", StratName);
} }

View File

@@ -43,11 +43,9 @@ namespace OpenAuth.App
public void Add(AddOrUpdate{ClassName}Req request) public void Add(AddOrUpdate{ClassName}Req request)
{ {
var obj = request.MapTo<{ClassName}>(); var obj = request.MapTo<{ClassName}>();
//todo:补充或调整自己需要的字段
obj.CreateTime = DateTime.Now;
var user = _auth.GetCurrentUser().User; var user = _auth.GetCurrentUser().User;
obj.CreateUserId = user.Id; //todo:补充或调整自己需要的字段
obj.CreateUserName = user.Name; {InsertColumns}
if(obj.KeyIsNull()) //如果主键为空,则生成默认值 if(obj.KeyIsNull()) //如果主键为空,则生成默认值
{ {
obj.GenerateDefaultKeyVal(); obj.GenerateDefaultKeyVal();
@@ -92,9 +90,7 @@ namespace OpenAuth.App
} }
Repository.Update(u => new {ClassName} Repository.Update(u => new {ClassName}
{ {
UpdateTime = DateTime.Now, {UpdateColumns}
UpdateUserId = user.Id,
UpdateUserName = user.Name
//todo:补充或调整自己需要的字段 //todo:补充或调整自己需要的字段
}, u => u.Id == request.Id); }, u => u.Id == request.Id);
SugarClient.Ado.CommitTran(); SugarClient.Ado.CommitTran();

View File

@@ -48,11 +48,9 @@ namespace OpenAuth.App
public void Add(AddOrUpdate{ClassName}Req request) public void Add(AddOrUpdate{ClassName}Req request)
{ {
var obj = request.MapTo<{ClassName}>(); var obj = request.MapTo<{ClassName}>();
//todo:补充或调整自己需要的字段
obj.CreateTime = DateTime.Now;
var user = _auth.GetCurrentUser().User; var user = _auth.GetCurrentUser().User;
obj.CreateUserId = user.Id; //todo:补充或调整自己需要的字段
obj.CreateUserName = user.Name; {InsertColumns}
if(obj.KeyIsNull()) //如果主键为空,则生成默认值 if(obj.KeyIsNull()) //如果主键为空,则生成默认值
{ {
obj.GenerateDefaultKeyVal(); obj.GenerateDefaultKeyVal();
@@ -97,9 +95,7 @@ namespace OpenAuth.App
} }
Repository.Update(u => new {ClassName} Repository.Update(u => new {ClassName}
{ {
UpdateTime = DateTime.Now, {UpdateColumns}
UpdateUserId = user.Id,
UpdateUserName = user.Name
//todo:补充或调整自己需要的字段 //todo:补充或调整自己需要的字段
}, u => u.Id == request.Id); }, u => u.Id == request.Id);
SugarClient.Ado.CommitTran(); SugarClient.Ado.CommitTran();

View File

@@ -46,31 +46,26 @@ namespace OpenAuth.App
return result; return result;
} }
public void Add(AddOrUpdate{ClassName}Req req) public void Add(AddOrUpdate{ClassName}Req request)
{ {
var obj = req.MapTo<{ClassName}>(); var obj = request.MapTo<{ClassName}>();
var user = _auth.GetCurrentUser().User;
//todo:补充或调整自己需要的字段
{InsertColumns}
if(obj.KeyIsNull()) //如果主键为空,则生成默认值 if(obj.KeyIsNull()) //如果主键为空,则生成默认值
{ {
obj.GenerateDefaultKeyVal(); obj.GenerateDefaultKeyVal();
} }
//todo: 根据业务需要调整字段
obj.Createtime = DateTime.Now;
var user = _auth.GetCurrentUser().User;
obj.Createuserid = user.Id;
obj.Createusername = user.Name;
Repository.Insert(obj); Repository.Insert(obj);
} }
public void Update(AddOrUpdate{ClassName}Req obj) public void Update(AddOrUpdate{ClassName}Req request)
{ {
var user = _auth.GetCurrentUser().User; var user = _auth.GetCurrentUser().User;
Repository.Update(u => new {ClassName} Repository.Update(u => new {ClassName}
{ {
//todo: 根据业务需要调整字段 {UpdateColumns}
Updatetime = DateTime.Now, },u => u.Id == request.Id);
Updateuserid = user.Id,
Updateusername = user.Name
},u => u.Id == obj.Id);
} }

View File

@@ -52,32 +52,27 @@ namespace OpenAuth.App
return result; return result;
} }
public void Add(AddOrUpdate{ClassName}Req req) public void Add(AddOrUpdate{ClassName}Req request)
{ {
var obj = req.MapTo<{ClassName}>(); var obj = request.MapTo<{ClassName}>();
var user = _auth.GetCurrentUser().User;
//todo:补充或调整自己需要的字段
{InsertColumns}
if(obj.KeyIsNull()) //如果主键为空,则生成默认值 if(obj.KeyIsNull()) //如果主键为空,则生成默认值
{ {
obj.GenerateDefaultKeyVal(); obj.GenerateDefaultKeyVal();
} }
//todo: 根据业务需要调整字段
obj.Createtime = DateTime.Now;
var user = _auth.GetCurrentUser().User;
obj.Createuserid = user.Id;
obj.Createusername = user.Name;
Repository.Insert(obj); Repository.Insert(obj);
} }
public void Update(AddOrUpdate{ClassName}Req obj) public void Update(AddOrUpdate{ClassName}Req request)
{ {
var user = _auth.GetCurrentUser().User; var user = _auth.GetCurrentUser().User;
Repository.Update(u => new {ClassName} Repository.Update(u => new {ClassName}
{ {
//todo: 根据业务需要调整字段 //todo: 根据业务需要调整字段
Name = obj.Name, {UpdateColumns}
Updatetime = DateTime.Now, },u => u.Id == request.Id);
Updateuserid = user.Id,
Updateusername = user.Name
},u => u.Id == obj.Id);
} }

View File

@@ -10,7 +10,8 @@ permalink: /pro/devnewmulti/
## 准备工作 ## 准备工作
* 数据库OpenAuthPro中添加父表ParentTable,子表ChildTable,本文以该数据表为例。参考表结构如下: 本文以mysql数据库为例在openauthpro数据库中添加父表parenttable子表childtable,参考表结构如下:
```SQL ```SQL
CREATE TABLE `parenttable` ( CREATE TABLE `parenttable` (
`id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '父表ID', `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '父表ID',
@@ -18,12 +19,12 @@ CREATE TABLE `parenttable` (
`status` int(11) NOT NULL COMMENT '状态', `status` int(11) NOT NULL COMMENT '状态',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称', `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称',
`CreateTime` datetime NOT NULL COMMENT '创建时间', `createtime` datetime NOT NULL COMMENT '创建时间',
`CreateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID', `createuserid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID',
`CreateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人', `createusername` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人',
`UpdateTime` datetime NULL DEFAULT NULL COMMENT '最后更新时间', `updatetime` datetime NULL DEFAULT NULL COMMENT '最后更新时间',
`UpdateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人ID', `updateuserid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人ID',
`UpdateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人', `updateusername` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人',
`orgid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门', `orgid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '父表' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '父表' ROW_FORMAT = DYNAMIC;
@@ -41,13 +42,13 @@ CREATE TABLE `childtable` (
`proddate` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生产日期', `proddate` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生产日期',
`expiredate` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '失效日期', `expiredate` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '失效日期',
`CreateTime` datetime NOT NULL COMMENT '创建时间', `createtime` datetime NOT NULL COMMENT '创建时间',
`CreateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID', `createuserid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID',
`CreateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人', `createusername` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人',
`UpdateTime` datetime NULL DEFAULT NULL COMMENT '最后更新时间', `updatetime` datetime NULL DEFAULT NULL COMMENT '最后更新时间',
`UpdateUserId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人ID', `updateuserid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人ID',
`UpdateUserName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人', `updateusername` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后更新人',
PRIMARY KEY (`id`, `parentid`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '子表' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '子表' ROW_FORMAT = DYNAMIC;
``` ```