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);
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;
//查找是否存在子表的情况
var subTable = Repository.FirstOrDefault(u => u.ParentTableId == sysTableInfo.Id);
@@ -300,6 +337,8 @@ namespace OpenAuth.App
.Replace("{ModuleCode}", sysTableInfo.ModuleCode)
.Replace("{ModuleName}", sysTableInfo.ModuleName)
.Replace("{ClassName}", sysTableInfo.ClassName)
.Replace("{UpdateColumns}", updateColumns)
.Replace("{InsertColumns}", insertColumns)
.Replace("{StartName}", StratName);
//如果有外键(是一个子表)
@@ -334,6 +373,8 @@ namespace OpenAuth.App
.Replace("{SubForeignKey}", subTable.ForeignKey)
.Replace("{SubClassName}", subTable.ClassName)
.Replace("{SubModuleCode}", subTable.ModuleCode)
.Replace("{UpdateColumns}", updateColumns)
.Replace("{InsertColumns}", insertColumns)
.Replace("{StartName}", StratName);
}

View File

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

View File

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

View File

@@ -46,31 +46,26 @@ namespace OpenAuth.App
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()) //如果主键为空,则生成默认值
{
obj.GenerateDefaultKeyVal();
}
//todo: 根据业务需要调整字段
obj.Createtime = DateTime.Now;
var user = _auth.GetCurrentUser().User;
obj.Createuserid = user.Id;
obj.Createusername = user.Name;
Repository.Insert(obj);
}
public void Update(AddOrUpdate{ClassName}Req obj)
public void Update(AddOrUpdate{ClassName}Req request)
{
var user = _auth.GetCurrentUser().User;
Repository.Update(u => new {ClassName}
{
//todo: 根据业务需要调整字段
Updatetime = DateTime.Now,
Updateuserid = user.Id,
Updateusername = user.Name
},u => u.Id == obj.Id);
{UpdateColumns}
},u => u.Id == request.Id);
}

View File

@@ -52,32 +52,27 @@ namespace OpenAuth.App
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()) //如果主键为空,则生成默认值
{
obj.GenerateDefaultKeyVal();
}
//todo: 根据业务需要调整字段
obj.Createtime = DateTime.Now;
var user = _auth.GetCurrentUser().User;
obj.Createuserid = user.Id;
obj.Createusername = user.Name;
Repository.Insert(obj);
}
public void Update(AddOrUpdate{ClassName}Req obj)
public void Update(AddOrUpdate{ClassName}Req request)
{
var user = _auth.GetCurrentUser().User;
Repository.Update(u => new {ClassName}
{
//todo: 根据业务需要调整字段
Name = obj.Name,
Updatetime = DateTime.Now,
Updateuserid = user.Id,
Updateusername = user.Name
},u => u.Id == obj.Id);
{UpdateColumns}
},u => u.Id == request.Id);
}

View File

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