结构调整

This commit is contained in:
jianzhichu
2026-01-19 09:57:40 +08:00
parent d9cb721f64
commit f5449f3ace
77 changed files with 4060 additions and 1516 deletions
+29
View File
@@ -0,0 +1,29 @@
namespace dy.net.model.dto
{
public class UpdatePwdRequest
{
public string UserId { get; set; }
public string OldPassword { get; set; }
public string Password { get; set; }
public string ConfirmPassword { get; set; }
public string UserName { get; set; }
}
public class LoginRequest
{
public string UserName { get; set; }
public string Password { get; set; }
}
public class DataBaseConfigInfoRequest
{
public SqlSugar.DbType DbType { get; set; }
public string ConnString { get; set; }
}
}
+14
View File
@@ -0,0 +1,14 @@
using dy.net.model.entity;
namespace dy.net.model.dto
{
public class AppConfigImportDto
{
public List<DouyinFollowed> follows { get; set; }
public AppConfig conf { get; set; }
public List<DouyinCookie> cookies { get; set; }
}
}
+9
View File
@@ -0,0 +1,9 @@
namespace dy.net.model.dto
{
public class DeleteInvalidVideoDto
{
public string AwId { get; set; }
public string Title { get; set; }
public string Path { get; set; }
}
}
+9
View File
@@ -0,0 +1,9 @@
namespace dy.net.model.dto
{
public class DouyinCookieStopDto
{
public string Id { get; set; }
public int Status { get; set; }
}
}
+11
View File
@@ -0,0 +1,11 @@
namespace dy.net.model.dto
{
public class DouyinDynamicVideoDto
{
public string Path { get; set; }
public int Height { get; set; }
public int Width { get; set; }
}
}
+15
View File
@@ -0,0 +1,15 @@
namespace dy.net.model.dto
{
public class DouyinFollowGroupDto
{
/// <summary>
/// MyUserId
/// </summary>
public string Key { get; set; }
public int Total { get; set; }
public string Name { get; set; }
}
}
+168
View File
@@ -0,0 +1,168 @@
using Microsoft.AspNetCore.Mvc;
using System.Text.Json.Serialization;
namespace dy.net.model.dto
{
public class DouyinApiResponse<T>
{
/// <summary>
/// 响应状态码(自定义业务码,非HTTP状态码)
/// </summary>
[JsonPropertyName("code")]
public int Code { get; set; }
/// <summary>
/// 响应数据
/// </summary>
[JsonPropertyName("data")]
public T Data { get; set; }
/// <summary>
/// 响应消息(成功/失败描述)
/// </summary>
[JsonPropertyName("msg")]
public string Msg { get; set; }
[JsonPropertyName("message")]
public string Message { get; set; }
[JsonPropertyName("error")]
public string Error { get; set; }
/// <summary>
/// 响应时间戳(UTC时间)
/// </summary>
[JsonPropertyName("timestamp")]
public DateTime Timestamp { get; set; } = DateTime.UtcNow;
}
/// <summary>
/// 响应状态码常量
/// </summary>
public static class ResponseCode
{
public const int Success = 0; // 操作成功
public const int ServerError = -1; // 服务器错误
}
/// <summary>
/// 直接返回 IActionResult 的API响应工具类
/// 无需控制器手动拼接 Ok()/BadRequest(),一步返回标准化响应
/// </summary>
public static class ApiResult
{
#region
/// <summary>
/// 成功响应(带数据)
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="data">响应数据</param>
/// <param name="message">成功消息(默认:操作成功)</param>
/// <returns>IActionResultHTTP 200</returns>
public static IActionResult Success<T>(T data, string message = "操作成功")
{
var response = new DouyinApiResponse<T>
{
Code = ResponseCode.Success,
Data = data,
Message = message,
Error = message,
Msg = message,
};
return new OkObjectResult(response); // HTTP 200
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="code"></param>
/// <param name="t"></param>
/// <param name="message"></param>
/// <returns></returns>
public static IActionResult SuccOrFail<T>(int code,T t,string message = "")
{
if (code == ResponseCode.Success)
{
return Success(t, message);
}
else
{
return Fail(message);
}
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="result"></param>
/// <param name="t"></param>
/// <param name="message"></param>
/// <returns></returns>
public static IActionResult SuccOrFail<T>(bool result, T t, string message = "")
{
if (result)
{
return Success(t, message);
}
else
{
return Fail(message);
}
}
/// <summary>
/// 成功响应(无数据)
/// </summary>
/// <param name="message">成功消息(默认:操作成功)</param>
/// <returns>IActionResultHTTP 200</returns>
public static IActionResult Success(string message = "操作成功")
{
return Success<object>(null, message);
}
#endregion
#region
/// <summary>
/// 失败响应
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="message">错误消息</param>
/// <param name="data">附加数据</param>
/// <returns>IActionResult</returns>
public static IActionResult Fail<T>(string message="请求失败", int businessCode = ResponseCode.ServerError, T data = default)
{
var response = new DouyinApiResponse<T>
{
Code = businessCode,
Data = data,
Message = message,
Error = message,
Msg = message,
};
return new OkObjectResult(response);
}
/// <summary>
/// 失败响应(无附加数据)
/// </summary>
/// <param name="message">错误消息</param>
/// <param name="businessCode">自定义业务码</param>
/// <returns>IActionResult</returns>
public static IActionResult Fail(string message, int businessCode = ResponseCode.ServerError)
{
return Fail<object>(message, businessCode);
}
/// <summary>
/// 失败响应(无附加数据)
/// </summary>
/// <param name="message">错误消息</param>
/// <returns>IActionResult</returns>
public static IActionResult Fail(string message="请求失败")
{
return Fail<object>(message, ResponseCode.ServerError);
}
#endregion
}
}
+19
View File
@@ -0,0 +1,19 @@
using Newtonsoft.Json;
namespace dy.net.model.dto
{
public class DouyinUpSecUserIdDto
{
/// <summary>
/// up主名称
/// </summary>
public string uper { get; set; }
public string uid { get; set; }
/// <summary>
/// 是否同步up主全部视频 0-否 1-是
/// </summary>
public bool syncAll { get; set; }
}
}
+39
View File
@@ -0,0 +1,39 @@
namespace dy.net.model.dto
{
// Actor.cs
public class Actor
{
public string Name { get; set; }
public string Role { get; set; } // 角色名称
public string Thumb { get; set; } // 演员头像 URL 或路径
}
public class DouyinVideoNfo
{
/// 视频名称
/// </summary>
public string Title { get; set; }
/// <summary>
/// 封面图片路径或URL
/// </summary>
public string Thumbnail { get; set; }
/// <summary>
/// 海报图片路径或URL
/// </summary>
public string Poster { get; set; }
/// <summary>
/// 作者/创作者
/// </summary>
public string Author { get; set; }
// 新增的属性
public DateTime? ReleaseDate { get; set; } // 可空,避免无发布时间时的默认值
public IEnumerable<string> Genres { get; set; } // 分类标签集合(如 ["动作", "科幻"]
public List<Actor> Actors { get; set; }
}
}
+55
View File
@@ -0,0 +1,55 @@
using System.ComponentModel.DataAnnotations;
namespace dy.net.model.dto
{
public class DouyinVideoPageRequestDto : PageRequestDto
{
/// <summary>
/// 标题查询。
/// </summary>
public string? Title { get; set; }
public string? Author { get; set; }
//public string? Name { get; set; }
public string? ViedoType { get; set; }
public List<string>? Dates { get; set; }
public List<string>? Dates2 { get; set; }
public string? Tag { get; set; }
}
public class PageRequestDto
{
public int PageIndex { get; set; }
public int PageSize { get; set; } = 10;
}
public class FollowRequestDto: PageRequestDto
{
public string FollowUserName { get; set; }
public string MySelfId { get; set; }
}
public class FollowUpdateDto
{
public string Id { get; set; }
public bool OpenSync { get; set; }
public bool FullSync { get; set; }
public string SavePath { get; set; }
public string UperId { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace dy.net.model.dto
{
public class DouyinVideoRequestDto
{
public int cursor { get; set; }
public int count { get; set; }
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace dy.net.model.dto
{
public class DouyinVideoTopDto
{
public string Title { get; set; }
public string Time { get; set; }
public string Id { get; set; }
}
}
+24
View File
@@ -0,0 +1,24 @@
using Newtonsoft.Json;
namespace dy.net.model.dto
{
public class FollowErrorDto
{
/// <summary>
///
/// </summary>
[JsonProperty("followings")]
public object Followings { get; set; }
/// <summary>
/// 8 - 用户未登录
/// </summary>
[JsonProperty("status_code")]
public int StatusCode { get; set; }
/// <summary>
/// 用户未登录
/// </summary>
[JsonProperty("status_msg")]
public string StatusMsg { get; set; }
}
}
+43
View File
@@ -0,0 +1,43 @@
using SqlSugar;
namespace dy.net.model.dto
{
public class InitSystemInfo
{
public DbType DbType { get; set; }
public string ConnString { get; set; }
public string UserName { get; set; }
public string UswePwd { get; set; }
/// <summary>
/// 主域名
/// </summary>
public string domainName { get; set; }
/// <summary>
/// 二级域名前缀数组
/// </summary>
public string domainRecord { get; set; }
/// <summary>
/// 解析类型
/// </summary>
public string recordType { get; set; }
public string ipv6Prefix { get; set; }
/// <summary>
/// 域名服务商
/// </summary>
public string cloudName { get; set; }
public string AK { get; set; }
public string SK { get; set; }
/// <summary>
/// 可能是int类型(分钟) 不能大于1440,也可能是cron表达式
/// </summary>
public string Cron { get; set; }
}
}
+53
View File
@@ -0,0 +1,53 @@
namespace dy.net.model.dto
{
/// <summary>
/// 任务配置实体
/// </summary>
//public class JobConfig
//{
// public JobConfig(Type jobType, string jobKey, string triggerKey, string description)
// {
// JobType = jobType ?? throw new ArgumentNullException(nameof(jobType));
// JobKey = jobKey ?? throw new ArgumentNullException(nameof(jobKey));
// TriggerKey = triggerKey ?? throw new ArgumentNullException(nameof(triggerKey));
// Description = description ?? throw new ArgumentNullException(nameof(description));
// }
// /// <summary>
// /// 任务类型
// /// </summary>
// public Type JobType { get; }
// /// <summary>
// /// 任务Key
// /// </summary>
// public string JobKey { get; }
// /// <summary>
// /// 触发器Key
// /// </summary>
// public string TriggerKey { get; }
// /// <summary>
// /// 任务描述
// /// </summary>
// public string Description { get; }
//}
public class JobConfig
{
public Type JobType { get; }
public string JobKey { get; }
public string TriggerKey { get; }
public string Description { get; }
public JobConfig(Type jobType, string jobKey, string triggerKey, string description)
{
JobType = jobType ?? throw new ArgumentNullException(nameof(jobType), "任务类型不能为空");
JobKey = jobKey ?? throw new ArgumentNullException(nameof(jobKey), "任务Key不能为空");
TriggerKey = triggerKey ?? throw new ArgumentNullException(nameof(triggerKey), "触发器Key不能为空");
Description = description ?? throw new ArgumentNullException(nameof(description), "任务描述不能为空");
}
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.ComponentModel.DataAnnotations;
namespace dy.net.model.dto
{
public class LogFileInfoDto
{
/// <summary>
/// 日志类型(debug/error
/// </summary>
public string Type { get; set; }
/// <summary>
/// 日志日期(格式:20251203
/// </summary>
public string Date { get; set; }
/// <summary>
/// 完整文件名
/// </summary>
public string FileName { get; set; }
}
public class LogContentRequest
{
/// <summary>
/// 日志类型
/// </summary>
[Required]
public string Type { get; set; }
/// <summary>
/// 日志日期
/// </summary>
[Required]
public string Date { get; set; }
}
}
+31
View File
@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace dy.net.model.dto
{
public class MediaMergeRequest
{
/// <summary>网络图片地址数组(必填)</summary>
public List<string> ImageUrls { get; set; }
/// <summary>网络MP3地址数组(必填)</summary>
public List<string> AudioUrls { get; set; }
/// <summary>每张图片显示时长(秒,默认3秒)</summary>
public int ImageDurationPerSecond { get; set; } = 3;
/// <summary>视频分辨率(格式:1920x1080,默认1920x1080</summary>
public int VideoWidth { get; set; } = 1080;
public int VideoHeight { get; set; } = 1920;
/// <summary>输出视频格式(默认mp4</summary>
public string OutputFormat { get; set; } = "mp4";
/// <summary>视频帧率(默认25</summary>
public int VideoFps { get; set; } = 25;
}
}
+11
View File
@@ -0,0 +1,11 @@
namespace dy.net.model.dto
{
public class PriorityLevelDto
{
public int Id { get; set; }
public string Name { get; set; }
public int Sort { get; set; }
}
}
+7
View File
@@ -0,0 +1,7 @@
namespace dy.net.model.dto
{
public class ReDownViedoDto
{
public List<string> Ids { get; set; }
}
}
+108
View File
@@ -0,0 +1,108 @@
namespace dy.net.model.dto
{
//如果好用,请收藏地址,帮忙分享。
public class ImageTagInfoItem
{
/// <summary>
///
/// </summary>
public string Architecture { get; set; }
/// <summary>
///
/// </summary>
public string Author { get; set; }
/// <summary>
///
/// </summary>
public string CreationTime { get; set; }
/// <summary>
///
/// </summary>
public string DockerVersion { get; set; }
/// <summary>
///
/// </summary>
public string DurationDays { get; set; }
/// <summary>
///
/// </summary>
public int Id { get; set; }
/// <summary>
///
/// </summary>
public string ImageId { get; set; }
/// <summary>
///
/// </summary>
public string Kind { get; set; }
/// <summary>
///
/// </summary>
public string OS { get; set; }
/// <summary>
///
/// </summary>
public string PushTime { get; set; }
/// <summary>
///
/// </summary>
public string Size { get; set; }
/// <summary>
///
/// </summary>
public int SizeByte { get; set; }
/// <summary>
///
/// </summary>
public string TagId { get; set; }
/// <summary>
///
/// </summary>
public string TagName { get; set; }
/// <summary>
///
/// </summary>
public string UpdateTime { get; set; }
}
public class ImageData
{
/// <summary>
///
/// </summary>
public string RepoName { get; set; }
/// <summary>
///
/// </summary>
public string Server { get; set; }
/// <summary>
///
/// </summary>
public int TagCount { get; set; }
/// <summary>
///
/// </summary>
public List<ImageTagInfoItem> TagInfo { get; set; }
}
public class ImageResponse
{
/// <summary>
///
/// </summary>
public ImageData Data { get; set; }
/// <summary>
///
/// </summary>
public string RequestId { get; set; }
}
public class TenImageApiResponse
{
/// <summary>
///
/// </summary>
public ImageResponse Response { get; set; }
}
}
+48
View File
@@ -0,0 +1,48 @@
namespace dy.net.model.dto
{
public class VideoStaticsItemDto
{
public string Name { get; set; }
public long Count { get; set; }
public string Color { get; set; }
public string Icon { get; set; }
public string UperId { get; set; }
}
public class VideoStaticsDto
{
public long VideoCount { get; set; }
public long AuthorCount { get; set; }
public long CategoryCount { get; set; }
public string VideoSizeTotal { get; set; }
public string VideoCollectSize { get; set; }
public string VideoFollowSize { get; set; }
public string VideoFavoriteSize { get; set; }
public long CollectCount { get; set; }
public long FavoriteCount { get; set; }
public long FollowCount { get; set; }
public long GraphicVideoCount { get; set; }
public string GraphicVideoSize { get; set; }
public string TotalDiskSize { get; set; }
public List<VideoStaticsItemDto> Authors { get; set; } = new List<VideoStaticsItemDto>();
public List<VideoStaticsItemDto> Categories { get; set; } = new List<VideoStaticsItemDto>();
}
}
+26
View File
@@ -0,0 +1,26 @@
namespace dy.net.model.dto
{
public class VideoTitleDataTemplate
{
/// <summary> 对应 {id} </summary>
public string Id { get; set; }
/// <summary> 对应 {VideoTitle} </summary>
public string VideoTitle { get; set; } = string.Empty;
/// <summary> 对应 {SyncTime}(同步时间) </summary>
//public DateTime? SyncTime { get; set; }
/// <summary> 对应 {ReleaseTime}(发布时间) </summary>
public DateTime? ReleaseTime { get; set; }
/// <summary> 对应 {FileHash}(文件哈希值) </summary>
public string FileHash { get; set; } = string.Empty;
/// <summary> 对应 {Resolution}(分辨率,如 1920x1080 </summary>
public string Resolution { get; set; } = string.Empty;
public string Author { get; set; } = string.Empty;
/// <summary> 对应 {FileSize}(文件大小,单位:字节) </summary>
//public long FileSize { get; set; } = 0;
}
}
+29
View File
@@ -0,0 +1,29 @@
using System.ComponentModel;
namespace dy.net.model.dto
{
public enum VideoTypeEnum
{
/// <summary>
///喜欢的
/// </summary>
[Description("喜欢的")]
dy_favorite = 1,
/// <summary>
///收藏的
/// </summary>
[Description("收藏的")]
dy_collects = 2,
/// <summary>
/// 关注的
/// </summary>
[Description("关注的")]
dy_follows = 3,
/// <summary>
/// 图文视频,无用了,但是不能删...
/// </summary>
[Description("图片视频")]
ImageVideo = 4
}
}