基础框架

This commit is contained in:
zpc 2025-11-12 00:23:59 +08:00
parent 2c9540aeaf
commit aae0123212
36 changed files with 0 additions and 3049 deletions

View File

@ -1,44 +0,0 @@
using MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
namespace MiaoYu.Repository.ChatAI.Admin
{
/// <summary>
/// 后台管理系统数据库上下文
/// </summary>
[DbContextConfig($"Repository.*.Entities.*")]
public class ChatAdminDbContext : DbContext, IBaseDbContext
{
/// <summary>
/// 工作单元
/// </summary>
public IUnitOfWork UnitOfWork { get; }
public ChatAdminDbContext(DbContextOptions<ChatAdminDbContext> dbContextOptions) : base(dbContextOptions)
{
UnitOfWork = new UnitOfWorkImpl<ChatAdminDbContext>(this);
}
/// <summary>
/// 模型创建
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
#region
//OnModelCreatingPartial(modelBuilder);
//ModelBuilderExtensions.Seed(modelBuilder);
#endregion
var dbContextConfigAttribute = GetType().GetCustomAttribute<DbContextConfigAttribute>()!;
var t = dbContextConfigAttribute.GetModelTypes(GetType());
dbContextConfigAttribute!.OnModelCreating(modelBuilder, t);
}
}
}

View File

@ -1,139 +0,0 @@
using MiaoYu.Repository.ChatAI.Admin.Models;
namespace MiaoYu.Repository.ChatAI.Admin
{
/// <summary>
/// 程序启动器
/// </summary>
[ImportStartupModule<CoreEntityFrameworkStartup>]
public class ChatAdminRepositoryStartup : StartupModule<ChatAdminRepositoryStartup>
{
/// <summary>
/// 程序启动器
/// </summary>
/// <param name="webApplicationBuilder"></param>
public override void ConfigureServices(WebApplicationBuilder webApplicationBuilder)
{
var configuration = webApplicationBuilder.Configuration;
var services = webApplicationBuilder.Services;
var webHostEnvironment = webApplicationBuilder.Environment;
var repositoriesOptions = configuration
.GetSection(nameof(ChatAdminRepositoryOptions))
.Get<ChatAdminRepositoryOptions>() ?? throw new Exception("配置对象 空 异常!");
var connectionString = repositoriesOptions?.ConnectionString;
connectionString = string.IsNullOrWhiteSpace(connectionString) ?
configuration["ConnectionStrings:" + repositoriesOptions!.DefaultDatabaseType.ToString()] :
connectionString;
services.AddDbContextFactory<ChatAdminDbContext>(optionsBuilder =>
{
switch (repositoriesOptions.DefaultDatabaseType)
{
case DefaultDatabaseType.SqlServer:
optionsBuilder
.UseSqlServer(connectionString, w => w.MinBatchSize(1).MaxBatchSize(1000))
;
break;
case DefaultDatabaseType.MySql:
optionsBuilder
.UseMySql(connectionString, MySqlServerVersion.LatestSupportedServerVersion, w => w.MinBatchSize(1).MaxBatchSize(1000))
;
break;
case DefaultDatabaseType.PostgreSql:
//EnableLegacyTimestampBehavior 启动旧行为,避免时区问题,存储时间报错
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
optionsBuilder
.UseNpgsql(connectionString, w => w.MinBatchSize(1).MaxBatchSize(1000))
;
break;
case DefaultDatabaseType.Oracle:
optionsBuilder
.UseOracle(connectionString, w => w.MinBatchSize(1).MaxBatchSize(1000))
;
break;
default:
break;
}
if (webHostEnvironment.IsDevelopment())
{
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
// sql 日志写入控制台
optionsBuilder.UseLoggerFactory(loggerFactory);
}
// 懒加载代理
//options.UseLazyLoadingProxies();
//添加 EFCore 监控 和 动态表名
optionsBuilder.AddEntityFrameworkMonitor(repositoriesOptions.IsMonitorEFCore);
optionsBuilder.AddInterceptors(new AuditInterceptor());
});
services.AddEntityFrameworkRepositories<ChatAdminDbContext>(repositoriesOptions, (auditOptions) =>
{
// 你的自定义审计字段 ...
//auditOptions.Add(new AuditOptions()
//{
// CreationTimeFieldName = nameof(ICreateEntityV2.CreateTime),
// CreatorUserIdFieldName = "",
// LastModificationTimeFieldName = nameof(IUpdateEntityV2.UpdateTime),
// LastModifierUserIdFieldName = "",
// DeletionTimeFieldName = "UpdateTime",
// DeleterUserIdFieldName = "UpdateBy",
// IsDeletedFieldName = "DelFlag",
//});
}, (freesqlOptions) =>
{
freesqlOptions.FreeSqlAuditAopList?.Add(new FreeSqlAuditAop());
freesqlOptions.FreeSqlAction = (freeSql) =>
{
freeSql.Aop.CurdAfter += (object? sender, FreeSql.Aop.CurdAfterEventArgs curdAfter) =>
{
var stringBuilder = new StringBuilder();
stringBuilder.Append($"\r\n====[FreeSql 开始 耗时: {curdAfter.ElapsedMilliseconds} ms]=========");
stringBuilder.Append($"\r\n{curdAfter.Sql}");
stringBuilder.Append($"\r\n====[FreeSql 结束 线程Id:{Environment.CurrentManagedThreadId}]=========");
LogUtil.Log.Warning(stringBuilder.ToString());
};
};
});
}
/// <summary>
/// Configure
/// </summary>
/// <param name="webApplication"></param>
public override void Configure(WebApplication webApplication)
{
// 使用 DbContext
#region
//if (webApplication.Environment.IsDevelopment())
//{
// // 自动迁移 (如果迁移文件有变动)
// using var scope = webApplication.Services.CreateScope();
// using var adminDbContext = scope.ServiceProvider.GetService<ChatAdminDbContext>();
// if (adminDbContext!.Database.GetPendingMigrations().Count() > 0)
// {
// try
// {
// adminDbContext.Database.Migrate();
// }
// catch (Exception ex)
// {
// LogUtil.Log.Error(ex.Message, ex);
// }
// }
//}
#endregion
}
}
}

View File

@ -1,36 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 存储不同音乐风格的信息。
/// </summary>
[EntityDescription(FieldIgnored = true)]
[Table("M_MusicGenres")]
public class M_MusicGenres : DefaultEntityV4
{
/// <summary>
/// 音乐风格名称 => 备注: 音乐风格名称
/// </summary>
public string? GenreName { get; set; }
/// <summary>
/// 音乐风格描述 => 备注: 音乐风格描述
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 排序 => 备注: 排序
/// </summary>
public Int32 OrderId { get; set; }
/// <summary>
/// 是否启用 => 备注: 是否启用
/// </summary>
public Boolean IsEnabled { get; set; }
}

View File

@ -1,90 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 存储所有生成的歌曲的信息。
/// </summary>
[EntityDescription(FieldIgnored = true)]
[Table("M_Songs")]
public class M_Songs : DefaultEntityV4
{
/// <summary>
/// 歌曲名称 => 备注: 歌曲名称
/// </summary>
public string? Title { get; set; }
/// <summary>
/// 用户Id => 备注: 歌曲作者ID
/// </summary>
public Int32 AuthorId { get; set; }
/// <summary>
/// 音乐风格 => 备注: 音乐风格
/// </summary>
public string? Genre { get; set; }
/// <summary>
/// 歌词内容 => 备注: 歌词内容
/// </summary>
public string? Lyrics { get; set; }
/// <summary>
/// 歌曲是否公开展示 => 备注: 歌曲是否公开展示
/// </summary>
public Boolean IsPublic { get; set; }
/// <summary>
/// 歌曲创建时间 => 备注: 歌曲创建时间
/// </summary>
public DateTime CreationTimestamp { get; set; }
/// <summary>
/// 歌曲时长 => 备注: 歌曲时长
/// </summary>
public TimeSpan? Duration { get; set; }
/// <summary>
/// 播放次数 => 备注: 播放次数
/// </summary>
public Int32 PlayCount { get; set; }
/// <summary>
/// 点赞次数 => 备注: 点赞次数
/// </summary>
public Int32 LikeCount { get; set; }
/// <summary>
/// 下载次数 => 备注: 下载次数
/// </summary>
public Int32 DownloadCount { get; set; }
/// <summary>
/// 音乐下载地址 => 备注: 音乐下载地址
/// </summary>
public string? MusicAddress { get; set; }
/// <summary>
/// 封面图 => 备注: 封面图
/// </summary>
public string? CoverImage { get; set; }
/// <summary>
/// 音乐风格Id => 备注: 音乐风格Id
/// </summary>
public Int32? GenreId { get; set; }
}

View File

@ -1,65 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 发现页类别菜单
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Category_Child_Menu : DefaultEntityV4
{
/// <summary>
/// 菜单类型 => 备注: 菜单类型banner,热门推荐,热门小说)
/// </summary>
public string? Type { get; set; }
/// <summary>
/// 名称 => 备注: 名称
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 动作I => 备注: 动作Id
/// </summary>
public string? ActionId { get; set; }
/// <summary>
/// 动作类型 => 备注: 动作类型
/// </summary>
public string? ActionType { get; set; }
/// <summary>
/// 图片Id => 备注: 图片Id
/// </summary>
public Int32 ImageId { get; set; }
/// <summary>
/// 排序 => 备注: 排序
/// </summary>
public Int32 OrderById { get; set; }
/// <summary>
/// 图片补位 => 备注: 图片补位
/// </summary>
public string? ImageUrl { get; set; }
/// <summary>
/// 是否启用 => 备注: IsEnabled
/// </summary>
public Boolean IsEnabled { get; set; }
/// <summary>
/// 副标题 => 备注: SubTitle
/// </summary>
public string? SubTitle { get; set; }
}

View File

@ -1,95 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 人物表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character : DefaultEntityV4
{
/// <summary>
/// 人物名字 => 备注: 人物名字
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 人物简介 => 备注: 人物简介
/// </summary>
public string? Biography { get; set; }
/// <summary>
/// 开场白,剧情 => 备注: 开场白,剧情
/// </summary>
public string? Prologue { get; set; }
/// <summary>
/// 模型Id => 备注: 模型Id
/// </summary>
public Int32 ModelConfigId { get; set; }
/// <summary>
/// 公开/私密 0公开 1私密 => 备注: 公开/私密 0公开 1私密
/// </summary>
public Boolean Visibility { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 更新时间 => 备注: 更新时间
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 性别0男1女2其他 => 备注: 性别0男1女2其他
/// </summary>
public Int32 Gender { get; set; }
/// <summary>
/// 人物初始设定 => 备注: 人物初始设定
/// </summary>
public string? System { get; set; }
/// <summary>
/// 背景图片 => 备注: 背景图片
/// </summary>
public Int32? BgImg { get; set; }
/// <summary>
/// 角色头像是id => 备注: 角色头像是id
/// </summary>
public Int32? IconImg { get; set; }
/// <summary>
/// 对话名字 => 备注: 对话名字
/// </summary>
public string? UserName { get; set; }
/// <summary>
/// 对话性别 => 备注: 对话性别
/// </summary>
public string? UserSex { get; set; }
/// <summary>
/// system最大的token数 => 备注: system最大的token数
/// </summary>
public Int32? Token { get; set; }
}

View File

@ -1,35 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 角色标签表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character_Label : DefaultEntityV4
{
/// <summary>
/// 标签名称 => 备注: 标签名称
/// </summary>
public string? LabelName { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间 => 备注: 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 标签值 => 备注: 标签值
/// </summary>
public string? LabelValue { get; set; }
}

View File

@ -1,35 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 关联角色和标签
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character_Label_Relation : DefaultEntityV4
{
/// <summary>
/// 人物Id => 备注: 人物Id
/// </summary>
public Int32 CharacterId { get; set; }
/// <summary>
/// 人物标签id => 备注: 人物标签id
/// </summary>
public Int32 CharacterLabelId { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间 => 备注: 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}

View File

@ -1,35 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 角色性格表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character_Personality : DefaultEntityV4
{
/// <summary>
/// 性格名称 => 备注: 性格名称
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 性格值 => 备注: 性格值
/// </summary>
public string? Value { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
}

View File

@ -1,29 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 角色和性格关联表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character_Personality_Relation : DefaultEntityV4
{
/// <summary>
/// 性格Id => 备注: 性格Id
/// </summary>
public Int32 PersonalityId { get; set; }
/// <summary>
/// 角色Id => 备注: 角色Id
/// </summary>
public Int32 CharacterId { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}

View File

@ -1,41 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 发现页类型分类
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character_Type : DefaultEntityV4
{
/// <summary>
/// 类型名称 => 备注: 类型名称
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间 => 备注: 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 分类页不显示 => 备注: 分类页不显示
/// </summary>
public Boolean IsNotCategoryShow { get; set; }
/// <summary>
/// 序号 => 备注: 序号
/// </summary>
public Int32 OrderBy { get; set; }
}

View File

@ -1,41 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 角色和角色类型关联表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Character_Type_Intimacy : DefaultEntityV4
{
/// <summary>
/// 列表Id => 备注: 列表Id
/// </summary>
public Int32 TypeId { get; set; }
/// <summary>
/// 角色Id => 备注: 角色Id
/// </summary>
public Int32 CharacterId { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdateTIme { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 类别表排序 => 备注: 类别表排序
/// </summary>
public Int32 OrderBy { get; set; }
}

View File

@ -1,113 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 聊天记录表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Chat : DefaultEntityV4
{
/// <summary>
/// 聊天内容 => 备注: 聊天内容
/// </summary>
public Int32 UserId { get; set; }
/// <summary>
/// 消息内容 => 备注: 消息内容
/// </summary>
public string? Content { get; set; }
/// <summary>
/// 发送时间 => 备注: 发送时间
/// </summary>
public DateTime TimeStamp { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间 => 备注: 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 输入token => 备注: 输入token
/// </summary>
public Int32 Input_tokens { get; set; }
/// <summary>
/// 输出token => 备注: 输出token
/// </summary>
public Int32 Output_tokens { get; set; }
/// <summary>
/// 人物表Id => 备注: 人物表Id
/// </summary>
public Int32 CharacterId { get; set; }
/// <summary>
/// 角色 => 备注: user/assistant
/// </summary>
public string? Role { get; set; }
/// <summary>
/// 会话Id => 备注: SessionId
/// </summary>
public Guid SessionId { get; set; }
/// <summary>
/// 发送消息 => 备注: 发送消息,天
/// </summary>
public Int64 SendDateDay { get; set; }
/// <summary>
/// 发送消息时间戳 => 备注: 发送消息时间戳
/// </summary>
public Int64 SendMessageDay { get; set; }
/// <summary>
/// 消息状态 => 备注: 0正常1重新生成2 删除
/// </summary>
public Int32 Type { get; set; }
/// <summary>
/// 消息类型 => 备注: 聊天返回的消息的类型
/// </summary>
public string? ClaudeType { get; set; }
/// <summary>
/// ClaudeId => 备注: 聊天返回的Id
/// </summary>
public string? ClaudeId { get; set; }
/// <summary>
/// 人物模型 => 备注: 人物模型,聊天返回的模型
/// </summary>
public string? ClaudeModel { get; set; }
/// <summary>
/// 总Tokens => 备注: 消耗的token
/// </summary>
public Int32? Tokens { get; set; }
}

View File

@ -1,28 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 图片表
/// </summary>
public class T_Image_Config : DefaultEntityV4
{
/// <summary>
/// 图片Id => 备注: 图片Id
/// </summary>
public Int32 ImageId { get; set; }
/// <summary>
/// 图片名称 => 备注: 图片名称
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 图片地址 => 备注: 图片地址
/// </summary>
public string? Url { get; set; }
}

View File

@ -1,92 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 模型配置表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Model_Config : DefaultEntityV4
{
/// <summary>
/// 模型名称 => 备注: 模型名称
/// </summary>
public string? ModelName { get; set; }
/// <summary>
/// 模型model => 备注: 模型model
/// </summary>
public string? Model { get; set; }
/// <summary>
/// max_tokens => 备注: 模型运行最大的max_tokens
/// </summary>
public Int32 MaxTokens { get; set; }
/// <summary>
/// key x-api-key => 备注: 模型key x-api-key
/// </summary>
public string? ApiKey { get; set; }
/// <summary>
/// 模型请求地址 => 备注: 模型请求地址
/// </summary>
public string? Url { get; set; }
/// <summary>
/// 模型版本 => 备注: 模型版本 anthropic-version
/// </summary>
public string? AnthropicVersion { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 上下文模板 => 备注: system上下文模板
/// </summary>
public string? SystemTemplate { get; set; }
/// <summary>
/// 请求模板 => 备注: 请求模板
/// </summary>
public string? RequestTemplate { get; set; }
/// <summary>
/// headers对象 => 备注: headers对象
/// </summary>
public string? HeadersTemplate { get; set; }
/// <summary>
/// 返回数据模板 => 备注: 返回数据模板
/// </summary>
public string? ResponseTemplate { get; set; }
/// <summary>
/// 是否默认 => 备注: 是否默认
/// </summary>
public Boolean? IsDefabult { get; set; }
/// <summary>
/// 其它的模板
/// </summary>
public virtual string? OtherTemplate { get; set; }
}

View File

@ -1,77 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 订单完成表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Order : DefaultEntityV4
{
/// <summary>
/// 订单编号 => 备注: 订单编号
/// </summary>
public string? OrderId { get; set; }
/// <summary>
/// 用户Id => 备注: 用户Id
/// </summary>
public Int32 UserId { get; set; }
/// <summary>
/// 订单创建时间 => 备注: 订单创建时间
/// </summary>
public DateTime OrderDate { get; set; }
/// <summary>
/// 订单支付时间 => 备注: 订单支付时间
/// </summary>
public DateTime PaymentDate { get; set; }
/// <summary>
/// 订单支付方式 => 备注: 订单支付方式
/// </summary>
public string? PaymentMethod { get; set; }
/// <summary>
/// 购买的产品Id => 备注: 购买的产品Id
/// </summary>
public string? ProductId { get; set; }
/// <summary>
/// 价格 => 备注: 价格
/// </summary>
public Decimal TotalPrice { get; set; }
/// <summary>
/// 订单状态 => 备注: 订单状态
/// </summary>
public Int32 Status { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdatedAt { get; set; }
/// <summary>
/// 订单创建天 => 备注: 订单创建天
/// </summary>
public DateTime PaymentDay { get; set; }
}

View File

@ -1,54 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 订单详情表
/// </summary>
[EntityDescription(FieldIgnored = true)]
[Table("T_OrderItems")]
public class T_OrderItems : DefaultEntityV4
{
/// <summary>
/// 产品id => 备注: 产品id
/// </summary>
public string? ProductId { get; set; }
/// <summary>
/// 订单id => 备注: 订单id
/// </summary>
public string? OrderId { get; set; }
/// <summary>
/// 发放奖励信息 => 备注: 发放奖励信息
/// </summary>
public string? RewardInfo { get; set; }
/// <summary>
/// 产品id、主键 => 备注: 产品id、主键
/// </summary>
public Int32 Product { get; set; }
/// <summary>
/// 支付信息 => 备注: 支付信息
/// </summary>
public string? PaymentInfo { get; set; }
/// <summary>
/// 发放奖励提示 => 备注: 发放奖励提示
/// </summary>
public string? RewardTips { get; set; }
/// <summary>
/// 支付地址 => 备注: 支付地址
/// </summary>
public string? PayUrl { get; set; }
}

View File

@ -1,86 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 商城表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Products : DefaultEntityV4
{
/// <summary>
/// 道具Id => 备注: 道具Id
/// </summary>
public string? ProductId { get; set; }
/// <summary>
/// 道具名称 => 备注: 道具名称
/// </summary>
public string? ProductName { get; set; }
/// <summary>
/// 道具类型 => 备注: 道具类型0商城1商店
/// </summary>
public Int32 ProductType { get; set; }
/// <summary>
/// 道具描述 => 备注: 道具描述
/// </summary>
public string? ProductDesc { get; set; }
/// <summary>
/// 价格 => 备注: 价格
/// </summary>
public Decimal Price { get; set; }
/// <summary>
/// 道具图片 => 备注: 道具图片配置 图片id
/// </summary>
public Int32 ProductImgId { get; set; }
/// <summary>
/// 商品状态 => 备注: 商品是否下架 0否1是
/// </summary>
public Int32 IsProductDelisting { get; set; }
/// <summary>
/// 首充 => 备注: 是否有首充
/// </summary>
public Boolean IsFirstCharge { get; set; }
/// <summary>
/// 首充图片 => 备注: 首充图片
/// </summary>
public Int32? FirstChargeImgId { get; set; }
/// <summary>
/// 首充价格 => 备注: 首充价格
/// </summary>
public Decimal? FirstChargePrice { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间 => 备注: 更新时间
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 排序 => 备注: 排序
/// </summary>
public Int32? OrderById { get; set; }
}

View File

@ -1,41 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 产品表奖励
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Products_Reward : DefaultEntityV4
{
/// <summary>
/// 奖励类型 => 备注: 奖励类型
/// </summary>
public Int32 CurrencyType { get; set; }
/// <summary>
/// 送多少奖励 => 备注: 送多少奖励
/// </summary>
public Int32 Money { get; set; }
/// <summary>
/// 所属商品 => 备注: 所属商品
/// </summary>
public Int32 T_ProductId { get; set; }
/// <summary>
/// 首充送多少奖励 => 备注: 首充送多少奖励
/// </summary>
public Int32? FirstChargeMoney { get; set; }
/// <summary>
/// 所属商品 => 备注: 所属商品
/// </summary>
public string? ProductId { get; set; }
}

View File

@ -1,86 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 用户表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_User : DefaultEntityV4
{
/// <summary>
/// 用户昵称 => 备注: 用户昵称
/// </summary>
public string? NickName { get; set; }
/// <summary>
/// 用户姓名 => 备注: 用户姓名
/// </summary>
public string? UserName { get; set; }
/// <summary>
/// 手机号 => 备注: 绑定的手机号
/// </summary>
public string? PhoneNum { get; set; }
/// <summary>
/// 邮箱 => 备注: 绑定的邮箱
/// </summary>
public string? Email { get; set; }
/// <summary>
/// 是否活跃 => 备注: 是否活跃
/// </summary>
public Boolean IsActive { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 最后一次登录方式,1手机号 => 备注: 最后一次登录方式,1手机号
/// </summary>
public Int32 LastLoginTypeAt { get; set; }
/// <summary>
/// 登录时间 => 备注: 最后一次登录时间
/// </summary>
public DateTime LastLoginAt { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdatedAt { get; set; }
/// <summary>
/// 首次注册方式 => 备注: 首次注册方式
/// </summary>
public Int32 RegisterType { get; set; }
/// <summary>
/// Ip地址 => 备注: Ip地址
/// </summary>
public string? Ip { get; set; }
/// <summary>
/// 0正常1注销
/// </summary>
public virtual int State { get; set; }
/// <summary>
/// 是否是测试账号
/// </summary>
public virtual bool? IsTest { get; set; }
}

View File

@ -1,47 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 用户货币表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_User_Currency : DefaultEntityV4
{
/// <summary>
/// 货币类型 => 备注: 货币类型
/// </summary>
public Int32 CurrencyType { get; set; }
/// <summary>
/// 货币名称 => 备注: 货币名称
/// </summary>
public string? CurrencyName { get; set; }
/// <summary>
/// 货币余额 => 备注: 货币余额
/// </summary>
public Decimal CurrencyMoney { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdateAt { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateAt { get; set; }
/// <summary>
/// 用户Id => 备注: 用户Id
/// </summary>
public Int32 UserId { get; set; }
}

View File

@ -1,53 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 用户金额记录表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_User_Currency_Log : DefaultEntityV4
{
/// <summary>
/// 用户 => 备注: 用户
/// </summary>
public Int32 UserId { get; set; }
/// <summary>
/// 金额类型 => 备注: 金额类型
/// </summary>
public Int32 CurrencyType { get; set; }
/// <summary>
/// 金额 => 备注: 金额
/// </summary>
public Decimal Consume { get; set; }
/// <summary>
/// 消耗类型 => 备注: 消耗类型,0消耗1增加
/// </summary>
public Int32 ConsumeType { get; set; }
/// <summary>
/// 备注 => 备注: 备注
/// </summary>
public string? Remarks { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
}

View File

@ -1,78 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 意向订单表
/// </summary>
[EntityDescription(FieldIgnored = true)]
[Table("T_User_IntentOrder")]
public class T_User_IntentOrder : DefaultEntityV4
{
/// <summary>
/// 用户Id => 备注: 用户Id
/// </summary>
public Int32 UserId { get; set; }
/// <summary>
/// 产品id => 备注: 产品id
/// </summary>
public string? ProductId { get; set; }
/// <summary>
/// 支付方式 => 备注: 支付方式
/// </summary>
public string? Method { get; set; }
/// <summary>
/// 价格 => 备注: 价格
/// </summary>
public Decimal Price { get; set; }
/// <summary>
/// 数量 => 备注: 数量
/// </summary>
public Int32 Quantity { get; set; }
/// <summary>
/// 状态 => 备注: 状态
/// </summary>
public Int32 Status { get; set; }
/// <summary>
/// 备注 => 备注: 备注
/// </summary>
public string? Notes { get; set; }
/// <summary>
/// 订单创建时间 => 备注: 订单创建时间
/// </summary>
public DateTime IntentDate { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime UpdatedAt { get; set; }
/// <summary>
/// 订单Id => 备注: 订单Id
/// </summary>
public string? OrderId { get; set; }
}

View File

@ -1,55 +0,0 @@
using MiaoYu.Core.EntityFramework.Models;
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 手机号登录表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_User_Phone_Account : DefaultEntityV4
{
/// <summary>
/// 用户Id => 备注: 用户Id
/// </summary>
public Int32 UserId { get; set; }
/// <summary>
/// 手机号 => 备注: 手机号
/// </summary>
public string? PhoneNum { get; set; }
/// <summary>
/// 验证码 => 备注: 验证码
/// </summary>
public string? VerificationCode { get; set; }
/// <summary>
/// 最后一次登录时间 => 备注: 最后一次登录时间
/// </summary>
public DateTime LastLoginAt { get; set; }
/// <summary>
/// 修改时间 => 备注: 修改时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime UpdatedAt { get; set; }
/// <summary>
/// 用户昵称 => 备注: 用户昵称
/// </summary>
public string? NikeName { get; set; }
}

View File

@ -1,53 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps;
/// <summary>
/// 验证码表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public class T_Verification_Code : DefaultEntityV4
{
/// <summary>
/// 手机号或者邮箱 => 备注: 手机号或者邮箱
/// </summary>
public string? Key { get; set; }
/// <summary>
/// 验证码 => 备注: 验证码
/// </summary>
public string? Code { get; set; }
/// <summary>
/// 创建天 => 备注: 创建天
/// </summary>
public Int32 CreateDay { get; set; }
/// <summary>
/// 过期时间 => 备注: 过期时间
/// </summary>
public DateTime ExpireAt { get; set; }
/// <summary>
/// 创建时间 => 备注: 创建时间
/// </summary>
public DateTime CreateAt { get; set; }
/// <summary>
/// 备注 => 备注: 备注
/// </summary>
public string? Remarks { get; set; }
/// <summary>
/// 0手机1邮箱 => 备注: 0手机1邮箱
/// </summary>
public Int32 VerificationType { get; set; }
}

View File

@ -1,72 +0,0 @@
using FreeSql.DatabaseModel;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
using MiaoYu.Core.EntityFramework.Models;
namespace MiaoYu.Repository.ChatAI.Admin.Entities
{
/// <summary>
/// 图片表
/// </summary>
[EntityDescription(FieldIgnored = true)]
public partial class T_Image_Config : DefaultEntityV4
{
/// <summary>
/// 图片Id
/// </summary>
public int ImageId { get; set; }
/// <summary>
/// 图片名称
/// </summary>
public string Name { get; set; } = null!;
/// <summary>
/// 图片地址
/// </summary>
public string Url { get; set; } = null!;
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateAt { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime UpdateAt { get; set; }
/// <summary>
/// oss存放路径
/// </summary>
public string? OssPath { get; set; }
/// <summary>
/// 存储桶
/// </summary>
public string? Bucket { get; set; }
/// <summary>
/// 地域
/// </summary>
public string? Region { get; set; }
/// <summary>
/// 图片类型
/// </summary>
public int ImageType { get; set; }
}
}

View File

@ -1,67 +0,0 @@
using FreeSql.DatabaseModel;@{
var gen = Model as RazorModel;
Func<string, string> GetAttributeString = attr => {
if (string.IsNullOrEmpty(attr)) return "";
return string.Concat(", ", attr.Trim('[', ']'));
};
Func<string, string> GetDefaultValue = defval => {
if (string.IsNullOrEmpty(defval)) return "";
return " = " + defval + ";";
};
}@{
switch (gen.fsql.Ado.DataType) {
case FreeSql.DataType.PostgreSQL:
@:using System;
@:using System.Collections;
@:using System.Collections.Generic;
@:using System.Linq;
@:using System.Reflection;
@:using System.Threading.Tasks;
@:using Newtonsoft.Json;
@:using FreeSql.DataAnnotations;
@:using System.Net;
@:using Newtonsoft.Json.Linq;
@:using System.Net.NetworkInformation;
@:using NpgsqlTypes;
@:using Npgsql.LegacyPostgis;
break;
case FreeSql.DataType.SqlServer:
case FreeSql.DataType.MySql:
default:
@:using System;
@:using System.Collections;
@:using System.Collections.Generic;
@:using System.Linq;
@:using System.Reflection;
@:using System.Threading.Tasks;
@:using Newtonsoft.Json;
@:using FreeSql.DataAnnotations;
break;
}
}
namespace @gen.NameSpace {
@if (string.IsNullOrEmpty(gen.table.Comment) == false) {
@:/// <summary>
@:/// @gen.table.Comment.Replace("\r\n", "\n").Replace("\n", "\r\n /// ")
@:/// </summary>
}
[JsonObject(MemberSerialization.OptIn)@GetAttributeString(gen.GetTableAttribute())]
public partial class @gen.GetCsName(gen.FullTableName) {
@foreach (var col in gen.columns) {
if (string.IsNullOrEmpty(col.Comment) == false) {
@:/// <summary>
@:/// @col.Comment.Replace("\r\n", "\n").Replace("\n", "\r\n /// ")
@:/// </summary>
}
@:@("[JsonProperty" + GetAttributeString(gen.GetColumnAttribute(col, true)) + "]")
@:public @gen.GetCsType(col) @gen.GetCsName(col.Name) { get; set; }@GetDefaultValue(gen.GetColumnDefaultValue(col, false))
@:
}
}
@gen.GetMySqlEnumSetDefine()
}

View File

@ -1,2 +0,0 @@

FreeSql.Generator -Razor "__razor.cshtml.txt" -NameOptions 1,0,0,0 -NameSpace MiaoYu.Repository.ChatAI.Admin.Entities -DB "SqlServer,data source=192.168.195.2;initial catalog=MiaoYu;User Id=zpc;Password=zpc;TrustServerCertificate=true;pooling=true;max pool size=2" -FileName "{name}.cs"

View File

@ -1,3 +0,0 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Rougamo />
</Weavers>

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="Rougamo" minOccurs="0" maxOccurs="1" type="xs:anyType" />
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -1,31 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<DocumentationFile>$(MSBuildProjectName).xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Entities\Apps\T_Image_Config.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Rougamo.Fody" Version="2.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MiaoYu.Core.EntityFramework\MiaoYu.Core.EntityFramework.csproj" />
<ProjectReference Include="..\MiaoYu.Core.Logs\MiaoYu.Core.Logs.csproj" />
<ProjectReference Include="..\MiaoYu.Core.Quartz\MiaoYu.Core.Quartz.csproj" />
<ProjectReference Include="..\MiaoYu.Core\MiaoYu.Core.csproj" />
<ProjectReference Include="..\MiaoYu.Core.CodeGenerator\MiaoYu.Core.CodeGenerator.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Entities\Apps\" />
</ItemGroup>
</Project>

View File

@ -1,60 +0,0 @@
using MiaoYu.Repository.ChatAI.Admin.Entities;
#nullable disable
namespace MiaoYu.Repository.ChatAI.Admin.Migrations
{
[DbContext(typeof(ChatAdminDbContext))]
public class ChatAdminDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity<T_Image_Config>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__T_Image___3214EC072BCFE4E5");
entity.ToTable(tb => tb.HasComment("图片表"));
entity.Property(e => e.Bucket)
.HasMaxLength(100)
.HasComment("存储桶");
entity.Property(e => e.CreateAt)
.HasComment("创建时间")
.HasColumnType("datetime");
entity.Property(e => e.ImageId).HasComment("图片Id");
entity.Property(e => e.Name)
.HasMaxLength(50)
.HasComment("图片名称");
entity.Property(e => e.OssPath)
.HasMaxLength(200)
.HasComment("oss存放路径");
entity.Property(e => e.Region)
.HasMaxLength(100)
.HasComment("地域");
entity.Property(e => e.TenantId).HasComment("租户");
entity.Property(e => e.UpdateAt)
.HasComment("修改时间")
.HasColumnType("datetime");
entity.Property(e => e.Url)
.HasMaxLength(500)
.HasComment("图片地址");
//添加全局筛选器
//if (this.TenantInfo != null)
//{
// entity.HasQueryFilter(it => it.TenantId == this.TenantInfo.TenantId);
//}
});
#pragma warning restore 612, 618
}
}
}

View File

@ -1,8 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Models;
public class ChatAdminRepositoryOptions : RepositoryOptions
{
}

View File

@ -1,78 +0,0 @@
namespace MiaoYu.Repository.ChatAI.Admin.Providers;
/// <summary>
/// MiaoYuChat 数据源提供者
/// </summary>
[Component]
public class MiaoYuChatDataSourceProvider : IDataSourceProvider, IScopedDependency
{
private readonly IRepository<M_Songs> _repository;
public MiaoYuChatDataSourceProvider(IRepository<M_Songs> repository)
{
_repository = repository;
}
public DataSourceConfig Config => new DataSourceConfig
{
DatabaseKey = DataSourceConstants.MiaoYuChat,
DisplayName = "妙语聊天",
EntityNamespace = typeof(ChatAdminRepositoryStartup).Namespace!,
ServiceNamespace = "MiaoYu.Api.Admin.ApplicationServices.Apps",
ControllerNamespace = "MiaoYu.Api.Admin.Controllers.Apps",
ClientServiceNamespace = "",
ModelPathTemplate = "{RootPath}\\{Namespace}\\Entities\\Apps\\{EntityNamePlural}",
ServicePathTemplate = "{AppPath}\\ApplicationServices\\Apps\\ChatAI\\{EntityNamePlural}",
ControllerPathTemplate = "{AppPath}\\Controllers\\Apps\\ChatAI\\{EntityNamePlural}",
ClientIndexPathTemplate = "{RootPath}\\admin-client\\src\\views\\apps\\chatai\\{TableNameLower}s",
ClientInfoPathTemplate = "{RootPath}\\admin-client\\src\\views\\apps\\chatai\\{TableNameLower}s",
ClientServicePathTemplate = "{RootPath}\\admin-client\\src\\services\\apps\\chatai\\{TableNameLower}s",
MenuPathTemplate = "views/apps/chatai/{TableNameLower}s/Index.vue",
RouterPathTemplate = "/apps/chatai/{TableNameLower}s",
TemplatePath = "/wwwroot/code_generation/template/",
NamingStrategy = EntityNamingStrategy.ToPascalCase,
Order = 2,
EnableEntityPrefix = false,
EntityPrefix = "",
UsesPluralPath = true
};
public List<CoreDbTableInfo> GetTables()
{
var freeSqlTables = _repository.UnitOfWork.FreeSqlOrm.DbFirst.GetTablesByDatabase();
return ConvertToDbTableInfoList(freeSqlTables);
}
public object GetDbContext() => _repository.GetContext()!;
private List<CoreDbTableInfo> ConvertToDbTableInfoList(List<FreeSql.DatabaseModel.DbTableInfo> freeSqlTables)
{
var result = new List<CoreDbTableInfo>();
foreach (var table in freeSqlTables)
{
var dbTableInfo = new CoreDbTableInfo
{
DataBase = Config.DatabaseKey,
Schema = table.Schema,
Name = table.Name,
Type = table.Type.ToString(),
Comment = table.Comment,
Columns = table.Columns?.Select(c => new CoreDbColumnInfo
{
Name = c.Name,
Comment = c.Comment,
IsPrimary = c.IsPrimary,
IsIdentity = c.IsIdentity,
IsNullable = c.IsNullable,
Position = c.Position,
DbType = c.DbTypeTextFull,
CsType = c.CsType?.Name,
MaxLength = c.MaxLength
}).ToList()
};
result.Add(dbTableInfo);
}
return result;
}
}

View File

@ -1,33 +0,0 @@
global using MiaoYu.Core.EntityFramework;
global using MiaoYu.Core.EntityFramework.Interceptors;
global using MiaoYu.Core.Quartz.Models;
global using HZY.Framework.Core.AspNetCore;
global using HZY.Framework.Core.Quartz;
global using HZY.Framework.Repository.EntityFramework;
global using HZY.Framework.Repository.EntityFramework.Attributes;
global using HZY.Framework.Repository.EntityFramework.Models;
global using HZY.Framework.Repository.EntityFramework.Models.Enums;
global using HZY.Framework.Repository.EntityFramework.Models.Standard;
global using HZY.Framework.Repository.EntityFramework.Repositories;
global using HZY.Framework.Repository.EntityFramework.Repositories.Impl;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.EntityFrameworkCore;
global using Microsoft.EntityFrameworkCore.Infrastructure;
global using Microsoft.Extensions.Caching.Memory;
global using Microsoft.Extensions.Configuration;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
global using System.ComponentModel.DataAnnotations;
global using System.ComponentModel.DataAnnotations.Schema;
global using System.Reflection;
global using MiaoYu.Core.Logs;
global using System.Text;
global using MiaoYu.Core.EntityFramework.Models;
global using HZY.Framework.DependencyInjection;
global using HZY.Framework.DependencyInjection.Attributes;
global using MiaoYu.Core.CodeGenerator.Abstractions;
global using CoreDbTableInfo = MiaoYu.Core.CodeGenerator.Models.DbTableInfo;
global using CoreDbColumnInfo = MiaoYu.Core.CodeGenerator.Models.DbColumnInfo;
global using MiaoYu.Repository.ChatAI.Admin.Entities.Apps;