bug修复

This commit is contained in:
jianzhichu
2025-11-30 21:33:18 +08:00
parent e42a004765
commit 50149a280b
57 changed files with 766 additions and 317 deletions
+2 -1
View File
@@ -59,7 +59,8 @@ namespace dy.net.service
ImageViedoSaveAlone = true,
FollowedTitleTemplate ="",
FullFollowedTitleTemplate="",
FollowedTitleSeparator=""
FollowedTitleSeparator="",
AutoDistinct=true,//默认开启
};
sqlSugarClient.Insertable(config).ExecuteCommand();
return config;
+7 -5
View File
@@ -1,7 +1,9 @@
using dy.net.model;
using ClockSnowFlake;
using dy.net.model;
using dy.net.repository;
using SqlSugar;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace dy.net.service
{
@@ -28,18 +30,17 @@ namespace dy.net.service
public bool InitCookie()
{
var initId= "2026";
var exist = _cookieRepository.GetFirst(x => x.Id == initId);
var exist = _cookieRepository.GetDefault();
if (exist != null)
{
return false;
return true;
}
var cookie = new DouyinCookie
{
UserName = "douyin",
Cookies = "-",
SecUserId = "-",
Id = initId,
Id = IdGener.GetLong().ToString(),
Status = 0,
SavePath = "/app/collect",
FavSavePath = "/app/favorite",
@@ -48,6 +49,7 @@ namespace dy.net.service
CollHasSyncd = 0,
FavHasSyncd = 0,
UperSyncd = 0,
MyUserId=""
};
return _cookieRepository.Insert(cookie);
}
+34 -8
View File
@@ -213,25 +213,51 @@ namespace dy.net.service
Serilog.Log.Error(e, "数据库事务执行失败:Ids={0}", string.Join(",", videoIds));
});
// 5. 文件删除(非事务操作,失败不回滚数据库,可根据业务调整)
// 采用异步文件操作,避免同步IO阻塞线程(需.NET 5+支持
foreach (var path in filePathsToDelete)
// 5. 文件删除(非事务操作,失败不回滚数据库,可根据业务调整)
// 关键:先通过文件路径获取父文件夹,再删除整个文件夹(含子内容
foreach (var filePath in filePathsToDelete)
{
try
{
if (File.Exists(path))
// 1. 验证文件路径有效性
if (string.IsNullOrWhiteSpace(filePath))
{
File.Delete(path); // 异步删除,提升并发性能
Serilog.Log.Debug("视频文件删除成功:Path={0}", path);
Serilog.Log.Error("文件路径为空,跳过文件夹删除");
continue;
}
// 2. 获取文件对应的父文件夹路径(无论文件是否存在,只要路径合法就能拿到父目录)
string parentDirPath = Path.GetDirectoryName(filePath);
if (string.IsNullOrWhiteSpace(parentDirPath))
{
Serilog.Log.Error("无法获取父文件夹路径,文件路径无效:Filepath={0}", filePath);
continue;
}
// 3. 验证父文件夹是否存在
if (Directory.Exists(parentDirPath))
{
Directory.Delete(parentDirPath, recursive: true);
Serilog.Log.Debug("文件夹删除成功(含子内容):ParentDir={0},关联文件路径={1}", parentDirPath, filePath);
}
else
{
Serilog.Log.Error("视频文件不存在,跳过删除:Path={0}", path);
Serilog.Log.Error("文件不存在,跳过删除:ParentDir={0},关联文件路径={1}", parentDirPath, filePath);
}
}
catch (IOException ex)
{
Serilog.Log.Error(ex, "视频文件删除失败Path={0}", path);
Serilog.Log.Error(ex, "文件删除失败IO异常):Filepath={0},父文件夹路径={1}", filePath, Path.GetDirectoryName(filePath));
}
catch (UnauthorizedAccessException ex)
{
// 单独捕获权限异常,更精准的日志提示
Serilog.Log.Error(ex, "文件夹删除失败(权限不足):Filepath={0},父文件夹路径={1}", filePath, Path.GetDirectoryName(filePath));
}
catch (Exception ex)
{
// 捕获所有其他异常,避免循环中断
Serilog.Log.Error(ex, "文件夹删除失败(未知异常):Filepath={0},父文件夹路径={1}", filePath, Path.GetDirectoryName(filePath));
}
}