V 1.1.2 新增了生图包 以及各种转发和接口

This commit is contained in:
2025-06-14 22:12:37 +08:00
parent c07369c297
commit 3514cf53f8
42 changed files with 3971 additions and 74 deletions
+41
View File
@@ -0,0 +1,41 @@
using LMS.Repository.MJPackage;
using System.ComponentModel.DataAnnotations;
namespace LMS.Repository.DB
{
public class MJApiTasks
{
[Key]
public string TaskId { get; set; }
public string Token { get; set; }
public long TokenId { get; set; }
public DateTime StartTime { get; set; }
public DateTime? EndTime { get; set; }
public string Status { get; set; }
public string ThirdPartyTaskId { get; set; } // 第三方任务ID
public string? Properties { get; set; }
}
public class MJApiTaskCollection : MJApiTasks
{
public long TokenId { get; set; }
public string Token { get; set; }
}
public class MJTaskStatus
{
public const string NOT_START = "NOT_START";
public const string SUBMITTED = "SUBMITTED";
public const string IN_PROGRESS = "IN_PROGRESS";
public const string FAILURE = "FAILURE";
public const string SUCCESS = "SUCCESS";
public const string MODAL = "MODAL";
public const string CANCEL = "CANCEL";
}
}
+22
View File
@@ -0,0 +1,22 @@
using LMS.Common.Extensions;
using System.ComponentModel.DataAnnotations;
namespace LMS.Repository.DB
{
public class MJApiTokenUsage
{
[Key]
public long TokenId { get; set; }
[Key]
public DateTime Date { get; set; }
public int DailyUsage { get; set; } = 0;
public int TotalUsage { get; set; } = 0;
public DateTime LastActivityAt { get; set; } = BeijingTimeExtension.GetBeijingTime();
public string? HistoryUse { get; set; } = null;
}
}
+29
View File
@@ -0,0 +1,29 @@
using LMS.Common.Extensions;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace LMS.Repository.DB
{
public class MJApiTokens
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[Required]
[StringLength(64)]
public required string Token { get; set; }
[Required]
public required string UseToken { get; set; } // 实际使用的Token
public int DailyLimit { get; set; } = 0;
public int TotalLimit { get; set; } = 0;
public int ConcurrencyLimit { get; set; } = 1;
public DateTime CreatedAt { get; set; } = BeijingTimeExtension.GetBeijingTime();
public DateTime? ExpiresAt { get; set; }
}
}
@@ -0,0 +1,43 @@
using System.ComponentModel.DataAnnotations;
namespace LMS.Repository.MJPackage
{
public class AddOrModifyTokenModel
{
/// <summary>
/// token
/// </summary>
[Required]
[StringLength(64)]
public required string Token { get; set; }
/// <summary>
/// 实际使用的Token
/// </summary>
public required string UseToken { get; set; }
/// <summary>
/// 日限制
/// </summary>
[Required]
public required int DailyLimit { get; set; }
/// <summary>
/// 总限制
/// </summary>
[Required]
public required int TotalLimit { get; set; }
/// <summary>
/// 并发限制
/// </summary>
[Required]
public required int ConcurrencyLimit { get; set; }
/// <summary>
/// 使用天数
/// </summary>
[Required]
public required int UseDayCount { get; set; }
}
}
@@ -0,0 +1,74 @@
namespace LMS.Repository.MJPackage
{
public class MJSubmitImageModel
{
/// <summary>
/// bot 类型,mj(默认)或niji
/// MID_JOURNEY | 枚举值: NIJI_JOURNEY
/// </summary>
public string? BotType { get; set; }
/// <summary>
/// 提示词。
/// </summary>
public string Prompt { get; set; }
/// <summary>
/// 垫图base64数组。
/// </summary>
public List<string>? Base64Array { get; set; }
/// <summary>
/// 账号过滤
/// </summary>
public AccountFilter? AccountFilter { get; set; }
/// <summary>
/// 自定义参数。
/// </summary>
public string? State { get; set; }
/// <summary>
/// 回调地址, 为空时使用全局notifyHook。
/// </summary>
public string? NotifyHook { get; set; }
}
public class AccountFilter
{
/// <summary>
/// 过滤指定实例的账号
/// </summary>
public string? InstanceId { get; set; }
/// <summary>
/// 账号模式 RELAX | FAST | TURBO
/// </summary>
public List<GenerationSpeedMode>? Modes { get; set; } = new List<GenerationSpeedMode>();
/// <summary>
/// 账号是否 remixMidjourney Remix
/// </summary>
public bool? Remix { get; set; }
/// <summary>
/// 账号是否 remixNijiourney Remix
/// </summary>
public bool? NijiRemix { get; set; }
/// <summary>
/// 账号过滤时,remix 自动提交视为账号的 remix 为 false
/// </summary>
public bool? RemixAutoConsidered { get; set; }
}
/// <summary>
/// 生成速度模式枚举.
/// </summary>
public enum GenerationSpeedMode
{
RELAX,
FAST,
TURBO
}
}
@@ -0,0 +1,39 @@
using LMS.Repository.DB;
using System.Text.Json.Serialization;
namespace LMS.Repository.MJPackage
{
public class MJTaskCallbackModel
{
public string Id { get; set; }
public string? Action { get; set; }
public MJTaskStatus? Status { get; set; }
public string? Prompt { get; set; }
public string? PromptEn { get; set; }
public string? Description { get; set; }
public long? SubmitTime { get; set; }
public long? StartTime { get; set; }
public long? FinishTime { get; set; }
public string? Progress { get; set; }
public string? ImageUrl { get; set; }
public string? FailReason { get; set; }
public ResponseProperties? Properties { get; set; }
}
public class ResponseProperties
{
public string? FinalPrompt { get; set; }
}
}
+18
View File
@@ -0,0 +1,18 @@
namespace LMS.Repository.MJPackage
{
// Models/SyncResult.cs
public class SyncResult
{
public int TotalTokenCount { get; set; }
public int ActiveTokenCount { get; set; }
public int RecordsUpdated { get; set; }
}
public class TaskStatistics
{
public int TotalTasks { get; set; } = 0;
public int CompletedTasks { get; set; } = 0;
public int FailedTasks { get; set; } = 0;
public int InProgressTasks { get; set; } = 0;
}
}
@@ -0,0 +1,29 @@
using LMS.Common.Extensions;
using LMS.Repository.DB;
namespace LMS.Repository.MJPackage
{
// Models/TokenCacheItem.cs
public class TokenCacheItem
{
public long Id { get; set; }
public string Token { get; set; }
public string UseToken { get; set; } // 实际请求使用的Token
public int DailyLimit { get; set; }
public int TotalLimit { get; set; }
public int ConcurrencyLimit { get; set; } // 新增:并发限制
public DateTime CreatedAt { get; set; }
public DateTime? ExpiresAt { get; set; }
public int DailyUsage { get; set; }
public int TotalUsage { get; set; }
public DateTime LastActivityTime { get; set; } = BeijingTimeExtension.GetBeijingTime();
public string? HistoryUse { get; set; } // 历史使用记录
public int CurrentlyExecuting { get; set; } = 0;
}
public class TokenAndTaskCollection : TokenCacheItem
{
public List<MJApiTasks> TaskCollections { get; set; } = [];
}
}
@@ -0,0 +1,11 @@
namespace LMS.Repository.MJPackage
{
public class TokenCacheStats
{
public int TotalTokens { get; set; }
public int ActiveTokens { get; set; }
public int InactiveTokens { get; set; }
public int TotalDailyUsage { get; set; }
public int TotalUsage { get; set; }
}
}
@@ -0,0 +1,20 @@
namespace LMS.Repository.MJPackage
{
// 查询结果映射类
public class TokenQueryResult
{
public long Id { get; set; }
public string Token { get; set; }
public string UseToken { get; set; } // 实际请求使用的Token
public int DailyLimit { get; set; }
public int TotalLimit { get; set; }
public int ConcurrencyLimit { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime? ExpiresAt { get; set; }
public int DailyUsage { get; set; }
public int TotalUsage { get; set; }
public DateTime LastActivityTime { get; set; }
public string? HistoryUse { get; set; } // 历史使用记录
}
}
@@ -0,0 +1,12 @@
namespace LMS.Repository.MJPackage
{
public class TokenUsageData
{
public long TokenId { get; set; }
public DateTime Date { get; set; }
public int DailyUsage { get; set; }
public int TotalUsage { get; set; }
public DateTime LastActivityTime { get; set; }
public string? HistoryUse { get; set; }
}
}