完成合集、短剧
This commit is contained in:
@@ -3,6 +3,7 @@ using dy.net.model.dto;
|
||||
using dy.net.model.entity;
|
||||
using dy.net.utils;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace dy.net.repository
|
||||
@@ -103,8 +104,11 @@ namespace dy.net.repository
|
||||
// 用Dictionary查找,效率更高
|
||||
if (dbCateDict.TryGetValue(cate.XId, out var existCate))
|
||||
{
|
||||
// 对比字段是否有变化(根据实际业务字段调整)
|
||||
bool isChanged = !string.Equals(existCate.Name, cate.Name, StringComparison.Ordinal);
|
||||
// 对比字段是否有变化
|
||||
bool isChanged = !string.Equals(existCate.Name, cate.Name, StringComparison.Ordinal) ||
|
||||
!string.Equals(existCate.CoverUrl, cate.CoverUrl, StringComparison.Ordinal) ||
|
||||
!string.Equals(existCate.SaveFolder, cate.SaveFolder, StringComparison.Ordinal) ||
|
||||
existCate.Total != cate.Total;
|
||||
|
||||
if (isChanged)
|
||||
{
|
||||
@@ -131,7 +135,6 @@ namespace dy.net.repository
|
||||
updateCount = await Db.Updateable(toUpdateCates)
|
||||
.IgnoreColumns(x => new { x.Sync, x.CreateTime, x.CookieId })
|
||||
.IgnoreNullColumns() // 忽略空值字段
|
||||
.Where(c => c.Id == c.Id) // 批量更新默认按主键匹配,此处显式指定(也可省略,SqlSugar自动识别主键)
|
||||
.ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
@@ -154,12 +157,26 @@ namespace dy.net.repository
|
||||
// 异常时回滚事务(补充:避免Db.Ado未初始化事务导致的空引用)
|
||||
await Db.Ado?.RollbackTranAsync();
|
||||
isSuccess = false;
|
||||
Serilog.Log.Error($"同步收藏夹:类型-{cateType}异常,{ex.StackTrace}");
|
||||
Serilog.Log.Error($"同步{cateType.GetDesc()}时发生异常,{ex.StackTrace}");
|
||||
}
|
||||
|
||||
//Serilog.Log.Debug($"本次收藏夹{cateType}同步结果,新增:{addCount},更新:{updateCount},删除:{deleteCount}");
|
||||
// 8. 返回最终结果
|
||||
return (addCount, updateCount, deleteCount, isSuccess);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 短剧、合集完结
|
||||
/// </summary>
|
||||
/// <param name="cate"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> UpdateCateEndStatus(DouyinCollectCate cate)
|
||||
{
|
||||
var videoCounts = await Db.Queryable<DouyinVideo>().Where(x => x.CateId == cate.Id && x.CateXId == cate.XId && x.ViedoType == cate.CateType).CountAsync();
|
||||
cate.IsEnd = videoCounts == cate.Total;
|
||||
|
||||
var update = await Db.Updateable(cate).UpdateColumns(x => new { x.IsEnd }).ExecuteCommandAsync();
|
||||
return update > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,14 @@ namespace dy.net.repository
|
||||
|
||||
|
||||
var totalCount = await where.CountAsync();
|
||||
var list = await where.OrderByDescending(x => x.SyncTime).Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
|
||||
List<DouyinVideo> list = new List<DouyinVideo>();
|
||||
if(string.IsNullOrWhiteSpace(dto.SortField))
|
||||
list = await where.OrderByDescending(x => x.SyncTime).Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
|
||||
else
|
||||
{
|
||||
|
||||
list = await where.OrderBy($"{dto.SortField} {dto.SortOrder}").Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
|
||||
}
|
||||
if (list.Any())
|
||||
{
|
||||
var users = await this.Db.Queryable<DouyinCookie>().ToListAsync();
|
||||
@@ -93,12 +100,12 @@ namespace dy.net.repository
|
||||
/// <param name="AuthorId"></param>
|
||||
/// <param name="ViedoNameSimplify"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<(string, string)> GetUperLastViedoFileName(string AuthorId, string ViedoNameSimplify)
|
||||
public (string, string) GetUperLastViedoFileName(string AuthorId, string ViedoNameSimplify)
|
||||
{
|
||||
|
||||
var video = await this.Db.Queryable<DouyinVideo>().Where(x => x.AuthorId == AuthorId && x.ViedoType == VideoTypeEnum.dy_follows)
|
||||
var video = this.Db.Queryable<DouyinVideo>().Where(x => x.AuthorId == AuthorId && x.ViedoType == VideoTypeEnum.dy_follows)
|
||||
.Where(x => x.VideoTitleSimplify == ViedoNameSimplify)
|
||||
.OrderByDescending(x => x.CreateTime).FirstAsync();
|
||||
.OrderByDescending(x => x.CreateTime).First();
|
||||
|
||||
if (video != null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user