This commit is contained in:
owenchen committed 2026-09-21 16:54:56 +08:00
1 parent 9e79a6a67c
commit 7c8af2fb08
14 files changed
+328 -45

No files matched your search

@@ -194,6 +194,8 @@ builder.Entity<SysTableSchemaViewEntity>(eb => { eb.HasNoKey(); });
//***END***
}
}
@@ -0,0 +1,184 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CloudBuilder.Security.Entity
{
[TypeScript]
[Table("security_schedule_task_queue")]
public class SecurityScheduleTaskQueueEntity : ViewEntityBase
{
public SecurityScheduleTaskQueueEntity()
{
}
[Column("created_by")]
public string CreatedBy { get; set; }
[Column("created_datetime")]
public DateTime CreatedDatetime { get; set; }
[Column("document_id")]
public string DocumentId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column("queue_id")]
public int QueueId { get; set; }
[Column("task_id")]
public string TaskId { get; set; }
[Column("task_param")]
public string? TaskParam { get; set; }
[Column("updated_by")]
public string UpdatedBy { get; set; }
[Column("updated_datetime")]
public DateTime UpdatedDatetime { get; set; }
public const string CREATED_BY = "CreatedBy";
public const string CREATED_DATETIME = "CreatedDatetime";
public const string DOCUMENT_ID = "DocumentId";
public const string QUEUE_ID = "QueueId";
public const string TASK_ID = "TaskId";
public const string TASK_PARAM = "TaskParam";
public const string UPDATED_BY = "UpdatedBy";
public const string UPDATED_DATETIME = "UpdatedDatetime";
public const string DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE = "security_schedule_task_queue";
public const string DB_NAME_FIELDS="created_by,created_datetime,document_id,queue_id,task_id,task_param,updated_by,updated_datetime";
public const string DB_CREATED_BY = "created_by";
public const string DB_CREATED_DATETIME = "created_datetime";
public const string DB_DOCUMENT_ID = "document_id";
public const string DB_QUEUE_ID = "queue_id";
public const string DB_TASK_ID = "task_id";
public const string DB_TASK_PARAM = "task_param";
public const string DB_UPDATED_BY = "updated_by";
public const string DB_UPDATED_DATETIME = "updated_datetime";
private string ProviderName { get; set; }
public static SecurityScheduleTaskQueueEntity GetInstance(string providerName)
{
return new SecurityScheduleTaskQueueEntity() { ProviderName = providerName };
}
public virtual void CopyFrom(SecurityScheduleTaskQueueEntity source)
{
CopyFrom(source, true);
}
public virtual void CopyFrom(SecurityScheduleTaskQueueEntity source, bool includeSystemFields)
{
if (source == null)
{
throw new NullReferenceException("Source entity is null.");
}
this.CreatedBy = source.CreatedBy;
this.CreatedDatetime = source.CreatedDatetime;
this.DocumentId = source.DocumentId;
this.QueueId = source.QueueId;
this.TaskId = source.TaskId;
this.TaskParam = source.TaskParam;
this.UpdatedBy = source.UpdatedBy;
this.UpdatedDatetime = source.UpdatedDatetime;
if (includeSystemFields)
{
this.CreatedBy = source.CreatedBy;
this.CreatedDatetime = source.CreatedDatetime;
this.UpdatedBy = source.UpdatedBy;
this.UpdatedDatetime = source.UpdatedDatetime;
}
}
public override string GetSelectFrom()
{
if (ProviderName.Contains("MySql"))
{
return GetSelectFromByMySql();
}
else if (ProviderName.Contains("SqlServer"))
{
return GetSelectFromByBySqlServer();
}
else
{
throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}");
}
}
public string GetSelectFromByMySql()
{
return $" select {DB_NAME_FIELDS} from { DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE} with(nolock) ";
}
public string GetSelectFromByBySqlServer()
{
return $" select {DB_NAME_FIELDS} from { DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE} ";
}
public override string GetSelectCountFrom(string sqlWhere)
{
if (ProviderName.Contains("MySql"))
{
return GetSelectCountFromByMySql(sqlWhere);
}
else if (ProviderName.Contains("SqlServer"))
{
return GetSelectCountFromBySqlServer(sqlWhere);
}
else
{
throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}");
}
}
public string GetSelectCountFromByMySql(string sqlWhere)
{
return $" select count(*) from { DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE} where 1=1 {sqlWhere}";
}
public string GetSelectCountFromBySqlServer(string sqlWhere)
{
return $" select count(*) from { DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE} with(nolock) where 1=1 {sqlWhere}";
}
public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere)
{
if (ProviderName.Contains("MySql"))
{
return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere);
}
else if (ProviderName.Contains("SqlServer"))
{
return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere);
}
else
{
throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}");
}
}
public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere)
{
if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc";
if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_QUEUE_ID ;
int offset = limit * (start - 1);
return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} ";
}
public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere)
{
if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc";
if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_QUEUE_ID ;
string top = limit > 0 ? $"top {limit}" : "";
return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_SECURITY_SCHEDULE_TASK_QUEUE} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}";
}
public SecurityScheduleTaskQueueEntity Clone()
{
SecurityScheduleTaskQueueEntity result = new SecurityScheduleTaskQueueEntity();
result.CopyFrom(this);
return result;
}
}
}
@@ -23,6 +23,7 @@ namespace CloudBuilder.Security.Policy
public const string LYRIC = "L";
public const string JPG = ".jpg";
public const string M3U8 = ".m3u8";
public static FileTypePolicy instance = null;
@@ -78,7 +79,16 @@ namespace CloudBuilder.Security.Policy
return GetType(value) == LYRIC;
}
public static string PackPicUrl(IApplicationService service, string createdBy, string orderKey)
{
return PackUrl(service, createdBy, orderKey, YesNoPolicy.YES, true);
}
public static string PackUrl(IApplicationService service, string createdBy, string orderKey, string transcodeIndc)
{
return PackUrl(service, createdBy, orderKey, transcodeIndc, false);
}
public static string PackUrl(IApplicationService service, string createdBy, string orderKey, string transcodeIndc, bool isPic)
{
string url = string.Empty;
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath] ?? "";
@@ -114,10 +124,20 @@ namespace CloudBuilder.Security.Policy
{
if (transcodeIndc == YesNoPolicy.YES)
{
var upload = (ServiceSettingsPolicy.GetDmsFileBackupDirectory(service) ?? "").Replace(phy ?? "", "");
var filePathRel = Path.Combine(upload, createdBy, fileExtension.Replace(".", ""), "");
var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/";
url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + JPG + "?v=" + DateTime.Now.ToString("yyyyMMddhhmmss");
if (isPic)
{
var upload = (ServiceSettingsPolicy.GetDmsFileBackupDirectory(service) ?? "").Replace(phy ?? "", "");
var filePathRel = Path.Combine(upload, createdBy, fileExtension.Replace(".", ""), "");
var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/";
url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + JPG + "?v=" + DateTime.Now.ToString("yyyyMMddhhmmss");
}
else
{
var backup = (ServiceSettingsPolicy.GetDmsFileBackupDirectory(service) ?? "").Replace(phy ?? "", "");
var filePathRel = Path.Combine(backup, createdBy, M3U8.Replace(".", ""), "");
var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/";
url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + M3U8;
}
}
else
{
@@ -136,7 +156,7 @@ namespace CloudBuilder.Security.Policy
}
return url;
}
public static string PackSourceVideoUrl(IApplicationService service, string createdBy, string orderKey)
public static string PackSourceVideoUrl(IApplicationService service, string createdBy, string orderKey, string transcodeIndc)
{
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath] ?? "";
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory] ?? "";
@@ -145,8 +165,16 @@ namespace CloudBuilder.Security.Policy
// 使用Path.Combine拼接路径,再将系统分隔符转为URL标准正斜杠
var filePathRel = Path.Combine(upload, createdBy, fileExtension.Replace(".", ""), "");
var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/";
if (YesNoPolicy.IsYes(transcodeIndc))
{
filePathRel = Path.Combine(upload, createdBy, M3U8.Replace(".", ""), "");
}
var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/";
if (YesNoPolicy.IsYes(transcodeIndc))
{
return (service.Configuration[AppsettingsPolicy.ApplicationUrl] ?? "") + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + M3U8;
}
return (service.Configuration[AppsettingsPolicy.ApplicationUrl] ?? "") + webRootPath + filePath + orderKey;
}