🔄refactor: 调整为SqlSugar

This commit is contained in:
yubaolee
2026-05-24 23:34:27 +08:00
parent 237fc49f2f
commit d2c8f783e1
10 changed files with 130 additions and 166 deletions

View File

@@ -11,7 +11,6 @@ using Infrastructure;
using Infrastructure.Extensions;
using Infrastructure.Helpers;
using Infrastructure.Utilities;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyModel;
using Microsoft.Extensions.Options;
using OpenAuth.App.Interface;
@@ -20,12 +19,12 @@ using OpenAuth.App.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Core;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Interface;
using SqlSugar;
namespace OpenAuth.App
{
public class BuilderTableApp : BaseStringApp<BuilderTable, OpenAuthDBContext>
public class BuilderTableApp : SqlSugarBaseApp<BuilderTable>
{
private BuilderTableColumnApp _builderTableColumnApp;
private CategoryApp _categoryApp;
@@ -34,9 +33,9 @@ namespace OpenAuth.App
private string _startName = "";
private IOptions<AppSetting> _appConfiguration;
public BuilderTableApp(IUnitWork<OpenAuthDBContext> unitWork, IRepository<BuilderTable, OpenAuthDBContext> repository,
public BuilderTableApp(ISqlSugarClient client,
RevelanceManagerApp app, IAuth auth, DbExtension dbExtension, BuilderTableColumnApp builderTableColumnApp,
IOptions<AppSetting> appConfiguration, CategoryApp categoryApp) : base(unitWork, repository, auth)
IOptions<AppSetting> appConfiguration, CategoryApp categoryApp) : base(client, auth)
{
_dbExtension = dbExtension;
_builderTableColumnApp = builderTableColumnApp;
@@ -87,7 +86,7 @@ namespace OpenAuth.App
}
var result = new PagedListDataResp<BuilderTable>();
var objs = UnitWork.Find<BuilderTable>(null);
var objs = SugarClient.Queryable<BuilderTable>();
if (!string.IsNullOrEmpty(request.key))
{
objs = objs.Where(u => u.Id.Contains(request.key));
@@ -126,7 +125,6 @@ namespace OpenAuth.App
Check(req);
var obj = AddTableAndColumns(req.MapTo<BuilderTable>());
UnitWork.Save();
return obj.Id;
}
@@ -143,8 +141,7 @@ namespace OpenAuth.App
var user = _auth.GetCurrentUser().User;
obj.CreateUserId = user.Id;
obj.CreateUserName = user.Name;
UnitWork.Add(obj);
UnitWork.Save(); //需要先保存表结构,后面才能正常判定
Repository.Insert(obj);
_dbExtension.ProcessExternalDb(obj.Id); //先处理外部数据库连接
var columns = _dbExtension.GetDbTableStructure(obj.TableName);
@@ -175,7 +172,7 @@ namespace OpenAuth.App
CreateUserName = user.Name,
CreateTime = DateTime.Now
};
UnitWork.Add(builderColumn);
SugarClient.Insertable(builderColumn).ExecuteCommand();
}
return obj;
@@ -185,7 +182,7 @@ namespace OpenAuth.App
{
Check(obj);
var user = _auth.GetCurrentUser().User;
UnitWork.Update<BuilderTable>(u => u.Id == obj.Id, u => new BuilderTable
Repository.Update(u => new BuilderTable
{
TableName = obj.TableName,
Remark = obj.Remark,
@@ -204,7 +201,7 @@ namespace OpenAuth.App
UpdateUserId = user.Id,
UpdateUserName = user.Name,
ExternalDataSourceId = obj.ExternalDataSourceId //外部数据源ID
});
}, u => u.Id == obj.Id);
}
/// <summary>
@@ -213,12 +210,10 @@ namespace OpenAuth.App
/// <param name="ids"></param>
public void DelTableAndcolumns(string[] ids)
{
UnitWork.ExecuteWithTransaction(() =>
{
UnitWork.Delete<BuilderTable>(u => ids.Contains(u.Id));
UnitWork.Delete<BuilderTableColumn>(u => ids.Contains(u.TableId));
UnitWork.Save();
});
SugarClient.Ado.BeginTran();
SugarClient.Deleteable<BuilderTable>().Where(u => ids.Contains(u.Id)).ExecuteCommand();
SugarClient.Deleteable<BuilderTableColumn>().Where(u => ids.Contains(u.TableId)).ExecuteCommand();
SugarClient.Ado.CommitTran();
}
@@ -228,7 +223,7 @@ namespace OpenAuth.App
/// <returns></returns>
public void CreateEntity(CreateEntityReq req)
{
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var sysTableInfo = SugarClient.Queryable<BuilderTable>().First(u => u.Id == req.Id);
var tableColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| tableColumns == null
@@ -247,7 +242,7 @@ namespace OpenAuth.App
/// <returns></returns>
public void CreateBusiness(CreateBusiReq req)
{
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var sysTableInfo = SugarClient.Queryable<BuilderTable>().First(u => u.Id == req.Id);
var mainColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| mainColumns == null
@@ -319,7 +314,7 @@ namespace OpenAuth.App
string domainContent = string.Empty;
//查找是否存在子表的情况
var subTable = Repository.FirstOrDefault(u => u.ParentTableId == sysTableInfo.Id);
var subTable = SugarClient.Queryable<BuilderTable>().First(u => u.ParentTableId == sysTableInfo.Id);
if (subTable == null) //如果子表不存在,则用单模版生成
{
@@ -386,21 +381,7 @@ namespace OpenAuth.App
{
throw new Exception($"未能找到表{sysTableInfo.TableName}的主键字段");
}
if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numeric") //是否为数字
{
if (primarykey.IsIncrement) //是否自增
{
domainContent = domainContent.Replace("{BaseAppName}", "BaseIntAutoGenApp");
}
else //普通的雪花算法生成id
{
domainContent = domainContent.Replace("{BaseAppName}", "BaseLongApp");
}
}
else
{
domainContent = domainContent.Replace("{BaseAppName}", "BaseStringApp");
}
domainContent = domainContent.Replace("{BaseAppName}", "SqlSugarBaseApp");
FileHelper.WriteFile($"{appRootPath}\\{sysTableInfo.ModuleCode}", $"{sysTableInfo.ModuleCode}.cs", domainContent);
}
@@ -465,7 +446,7 @@ namespace OpenAuth.App
}
//查找是否存在子表的情况
var subTable = Repository.FirstOrDefault(u => u.ParentTableId == sysTableInfo.Id);
var subTable = SugarClient.Queryable<BuilderTable>().First(u => u.ParentTableId == sysTableInfo.Id);
if (subTable != null) //如果子表存在,需要加子表的请求参数
{
@@ -705,7 +686,7 @@ namespace OpenAuth.App
{
var types = AssemblyLoadContext.Default
.LoadFromAssemblyName(new AssemblyName(compilation.Name))
.GetTypes().Where(x => x.GetTypeInfo().BaseType != null
.GetTypes().Where(x => System.Reflection.IntrospectionExtensions.GetTypeInfo(x).BaseType != null
&& x.BaseType == typeof(StringEntity));
foreach (var entity in types)
{
@@ -736,7 +717,7 @@ namespace OpenAuth.App
{
throw new Exception("请提供vue项目的根目录,如C:\\OpenAuth.Pro\\Client");
}
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var sysTableInfo = SugarClient.Queryable<BuilderTable>().First(u => u.Id == req.Id);
if (!string.IsNullOrEmpty(sysTableInfo.ParentTableId))
{
@@ -753,7 +734,7 @@ namespace OpenAuth.App
string domainContent = string.Empty;
//查找是否存在子表额情况
var subTable = Repository.FirstOrDefault(u => u.ParentTableId == req.Id);
var subTable = SugarClient.Queryable<BuilderTable>().First(u => u.ParentTableId == req.Id);
if (subTable == null) //如果子表不存在,则用单模版生成
{
@@ -868,7 +849,7 @@ namespace OpenAuth.App
{
throw new Exception("请提供vue项目的根目录,如C:\\OpenAuth.Pro\\Client");
}
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var sysTableInfo = SugarClient.Queryable<BuilderTable>().First(u => u.Id == req.Id);
var tableColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| tableColumns == null
@@ -890,7 +871,7 @@ namespace OpenAuth.App
public async Task<PagedDynamicDataResp> AllMain()
{
var result = new PagedDynamicDataResp();
var objs = UnitWork.Find<BuilderTable>(u => string.IsNullOrEmpty(u.ParentTableId)).Select(u => new
var objs = SugarClient.Queryable<BuilderTable>().Where(u => string.IsNullOrEmpty(u.ParentTableId)).Select(u => new
{
Id = u.Id,
Name = u.TableName