From 3da504fc2b65df9399b27fe32eec8e60eb8abad0 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Jun 2025 01:00:55 +0800 Subject: [PATCH 01/11] Seperate charge and manga privilege tasks --- .../IChargeTaskAppService.cs | 9 ++ .../IMangaPrivilegeTaskAppService.cs | 9 ++ .../IMangaTaskAppService.cs | 9 ++ .../ChargeTaskAppService.cs | 87 +++++++++++++++++ .../DailyTaskAppService.cs | 45 --------- .../MangaPrivilegeTaskAppService.cs | 88 +++++++++++++++++ .../MangaTaskAppService.cs | 96 +++++++++++++++++++ 7 files changed, 298 insertions(+), 45 deletions(-) create mode 100644 src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application.Contracts/IMangaPrivilegeTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application.Contracts/IMangaTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application/MangaPrivilegeTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application/MangaTaskAppService.cs diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs new file mode 100644 index 000000000..be91db58e --- /dev/null +++ b/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs @@ -0,0 +1,9 @@ +using System.ComponentModel; + +namespace Ray.BiliBiliTool.Application.Contracts; + +/// +/// 漫画任务 +/// +[Description("Charge")] +public interface IChargeTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IMangaPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IMangaPrivilegeTaskAppService.cs new file mode 100644 index 000000000..d6d5b7895 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application.Contracts/IMangaPrivilegeTaskAppService.cs @@ -0,0 +1,9 @@ +using System.ComponentModel; + +namespace Ray.BiliBiliTool.Application.Contracts; + +/// +/// 领取大会员漫画权益任务 +/// +[Description("MangaPrivilege")] +public interface IMangaPrivilegeTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IMangaTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IMangaTaskAppService.cs new file mode 100644 index 000000000..16a953714 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application.Contracts/IMangaTaskAppService.cs @@ -0,0 +1,9 @@ +using System.ComponentModel; + +namespace Ray.BiliBiliTool.Application.Contracts; + +/// +/// 漫画任务 +/// +[Description("Manga")] +public interface IMangaTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs b/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs new file mode 100644 index 000000000..cde0570fd --- /dev/null +++ b/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs @@ -0,0 +1,87 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Ray.BiliBiliTool.Agent; +using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos; +using Ray.BiliBiliTool.Application.Attributes; +using Ray.BiliBiliTool.Application.Contracts; +using Ray.BiliBiliTool.DomainService.Interfaces; +using Ray.BiliBiliTool.Infrastructure.Cookie; +using Ray.BiliBiliTool.Infrastructure.Enums; + +namespace Ray.BiliBiliTool.Application; + +public class ChargeTaskAppService( + ILogger logger, + IAccountDomainService accountDomainService, + IChargeDomainService chargeDomainService, + ILoginDomainService loginDomainService, + IConfiguration configuration, + CookieStrFactory cookieStrFactory +) : BaseMultiAccountsAppService(logger, cookieStrFactory), IChargeTaskAppService +{ + [TaskInterceptor("B币券充电", TaskLevel.One)] + protected override async Task DoTaskAccountAsync( + BiliCookie ck, + CancellationToken cancellationToken = default + ) + { + await SetCookiesAsync(ck, cancellationToken); + UserInfo userInfo = await Login(ck); + await Charge(userInfo, ck); + } + + [TaskInterceptor("Set Cookie")] + private async Task SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken) + { + //判断cookie是否完整 + if (biliCookie.Buvid.IsNotNullOrEmpty()) + { + logger.LogInformation("Cookie完整,不需要Set Cookie"); + return; + } + + //Set + logger.LogInformation("开始Set Cookie"); + var ck = await loginDomainService.SetCookieAsync(biliCookie, cancellationToken); + + //持久化 + logger.LogInformation("持久化Cookie"); + await SaveCookieAsync(ck, cancellationToken); + } + + /// + /// 登录 + /// + /// + [TaskInterceptor("登录")] + private async Task Login(BiliCookie ck) + { + UserInfo userInfo = await accountDomainService.LoginByCookie(ck); + return userInfo; + } + + /// + /// 每月为自己充电 + /// + [TaskInterceptor("B币券充电", rethrowWhenException: false)] + private async Task Charge(UserInfo userInfo, BiliCookie ck) + { + await chargeDomainService.Charge(userInfo, ck); + } + + private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken) + { + var platformType = configuration.GetSection("PlatformType").Get(); + logger.LogInformation("当前运行平台:{platform}", platformType); + + //更新cookie到青龙env + if (platformType == PlatformType.QingLong) + { + await loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken); + return; + } + + //更新cookie到json + await loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken); + } +} diff --git a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs index 7a0b85dd0..985e49db6 100644 --- a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs +++ b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs @@ -18,10 +18,8 @@ public class DailyTaskAppService( IVideoDomainService videoDomainService, IArticleDomainService articleDomainService, IDonateCoinDomainService donateCoinDomainService, - IMangaDomainService mangaDomainService, ILiveDomainService liveDomainService, IVipPrivilegeDomainService vipPrivilegeDomainService, - IChargeDomainService chargeDomainService, IOptionsMonitor dailyTaskOptions, ICoinDomainService coinDomainService, ILoginDomainService loginDomainService, @@ -48,16 +46,9 @@ protected override async Task DoTaskAccountAsync( await AddCoins(userInfo, ck); - //签到: - await MangaSign(ck); - await MangaRead(ck); await ExchangeSilver2Coin(ck); - //领福利: await ReceiveVipPrivilege(userInfo, ck); - await ReceiveMangaVipReward(userInfo, ck); - - await Charge(userInfo, ck); } [TaskInterceptor("Set Cookie")] @@ -184,42 +175,6 @@ private async Task ReceiveVipPrivilege(UserInfo userInfo, BiliCookie ck) } } - /// - /// 每月为自己充电 - /// - [TaskInterceptor("B币券充电", rethrowWhenException: false)] - private async Task Charge(UserInfo userInfo, BiliCookie ck) - { - await chargeDomainService.Charge(userInfo, ck); - } - - /// - /// 漫画签到 - /// - [TaskInterceptor("漫画签到", rethrowWhenException: false)] - private async Task MangaSign(BiliCookie ck) - { - await mangaDomainService.MangaSign(ck); - } - - /// - /// 漫画阅读 - /// - [TaskInterceptor("漫画阅读", rethrowWhenException: false)] - private async Task MangaRead(BiliCookie ck) - { - await mangaDomainService.MangaRead(ck); - } - - /// - /// 每月获取大会员漫画权益 - /// - [TaskInterceptor("领取大会员漫画权益", rethrowWhenException: false)] - private async Task ReceiveMangaVipReward(UserInfo userInfo, BiliCookie ck) - { - await mangaDomainService.ReceiveMangaVipReward(1, userInfo, ck); - } - private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken) { var platformType = configuration.GetSection("PlatformType").Get(); diff --git a/src/Ray.BiliBiliTool.Application/MangaPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application/MangaPrivilegeTaskAppService.cs new file mode 100644 index 000000000..21f753d96 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application/MangaPrivilegeTaskAppService.cs @@ -0,0 +1,88 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Ray.BiliBiliTool.Agent; +using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos; +using Ray.BiliBiliTool.Application.Attributes; +using Ray.BiliBiliTool.Application.Contracts; +using Ray.BiliBiliTool.DomainService.Interfaces; +using Ray.BiliBiliTool.Infrastructure.Cookie; +using Ray.BiliBiliTool.Infrastructure.Enums; + +namespace Ray.BiliBiliTool.Application; + +public class MangaPrivilegeTaskAppService( + ILogger logger, + IAccountDomainService accountDomainService, + IMangaDomainService mangaDomainService, + ILoginDomainService loginDomainService, + IConfiguration configuration, + CookieStrFactory cookieStrFactory +) : BaseMultiAccountsAppService(logger, cookieStrFactory), IMangaPrivilegeTaskAppService +{ + [TaskInterceptor("每月领取大会员漫画权益任务", TaskLevel.One)] + protected override async Task DoTaskAccountAsync( + BiliCookie ck, + CancellationToken cancellationToken = default + ) + { + await SetCookiesAsync(ck, cancellationToken); + UserInfo userInfo = await Login(ck); + await ReceiveMangaVipReward(userInfo, ck); + } + + [TaskInterceptor("Set Cookie")] + private async Task SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken) + { + //判断cookie是否完整 + if (biliCookie.Buvid.IsNotNullOrEmpty()) + { + logger.LogInformation("Cookie完整,不需要Set Cookie"); + return; + } + + //Set + logger.LogInformation("开始Set Cookie"); + var ck = await loginDomainService.SetCookieAsync(biliCookie, cancellationToken); + + //持久化 + logger.LogInformation("持久化Cookie"); + await SaveCookieAsync(ck, cancellationToken); + } + + /// + /// 登录 + /// + /// + [TaskInterceptor("登录")] + private async Task Login(BiliCookie ck) + { + UserInfo userInfo = await accountDomainService.LoginByCookie(ck); + + return userInfo; + } + + /// + /// 每月获取大会员漫画权益 + /// + [TaskInterceptor("领取大会员漫画权益", rethrowWhenException: false)] + private async Task ReceiveMangaVipReward(UserInfo userInfo, BiliCookie ck) + { + await mangaDomainService.ReceiveMangaVipReward(1, userInfo, ck); + } + + private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken) + { + var platformType = configuration.GetSection("PlatformType").Get(); + logger.LogInformation("当前运行平台:{platform}", platformType); + + //更新cookie到青龙env + if (platformType == PlatformType.QingLong) + { + await loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken); + return; + } + + //更新cookie到json + await loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken); + } +} diff --git a/src/Ray.BiliBiliTool.Application/MangaTaskAppService.cs b/src/Ray.BiliBiliTool.Application/MangaTaskAppService.cs new file mode 100644 index 000000000..e13903f33 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application/MangaTaskAppService.cs @@ -0,0 +1,96 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Ray.BiliBiliTool.Agent; +using Ray.BiliBiliTool.Application.Attributes; +using Ray.BiliBiliTool.Application.Contracts; +using Ray.BiliBiliTool.DomainService.Interfaces; +using Ray.BiliBiliTool.Infrastructure.Cookie; +using Ray.BiliBiliTool.Infrastructure.Enums; + +namespace Ray.BiliBiliTool.Application; + +public class MangaTaskAppService( + ILogger logger, + IAccountDomainService accountDomainService, + IMangaDomainService mangaDomainService, + ILoginDomainService loginDomainService, + IConfiguration configuration, + CookieStrFactory cookieStrFactory +) : BaseMultiAccountsAppService(logger, cookieStrFactory), IMangaTaskAppService +{ + [TaskInterceptor("漫画任务", TaskLevel.One)] + protected override async Task DoTaskAccountAsync( + BiliCookie ck, + CancellationToken cancellationToken = default + ) + { + await SetCookiesAsync(ck, cancellationToken); + await Login(ck); + + await MangaSign(ck); + await MangaRead(ck); + } + + [TaskInterceptor("Set Cookie")] + private async Task SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken) + { + //判断cookie是否完整 + if (biliCookie.Buvid.IsNotNullOrEmpty()) + { + logger.LogInformation("Cookie完整,不需要Set Cookie"); + return; + } + + //Set + logger.LogInformation("开始Set Cookie"); + var ck = await loginDomainService.SetCookieAsync(biliCookie, cancellationToken); + + //持久化 + logger.LogInformation("持久化Cookie"); + await SaveCookieAsync(ck, cancellationToken); + } + + /// + /// 登录 + /// + /// + [TaskInterceptor("登录")] + private async Task Login(BiliCookie ck) + { + await accountDomainService.LoginByCookie(ck); + } + + /// + /// 漫画签到 + /// + [TaskInterceptor("漫画签到", rethrowWhenException: false)] + private async Task MangaSign(BiliCookie ck) + { + await mangaDomainService.MangaSign(ck); + } + + /// + /// 漫画阅读 + /// + [TaskInterceptor("漫画阅读", rethrowWhenException: false)] + private async Task MangaRead(BiliCookie ck) + { + await mangaDomainService.MangaRead(ck); + } + + private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken) + { + var platformType = configuration.GetSection("PlatformType").Get(); + logger.LogInformation("当前运行平台:{platform}", platformType); + + //更新cookie到青龙env + if (platformType == PlatformType.QingLong) + { + await loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken); + return; + } + + //更新cookie到json + await loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken); + } +} From b490cf2dfa8293653c52a1e7bb736934a1f19e57 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Jun 2025 01:02:20 +0800 Subject: [PATCH 02/11] Update changelog --- CHANGELOG.md | 2 ++ common.props | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3672eecc8..da67a5f88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 3.3.1 +- Feature: 拆分原本的 Daily Task ## 3.3.0 - Feature[#935]: Web 新增登录功能 - Feature[#935]: Web 新增修改密码功能 diff --git a/common.props b/common.props index eeab9a1de..531cd7c65 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ Ray - 3.3.0 + 3.3.1 $(NoWarn);CS1591;CS0436 From 6a73dae218f6f8f32e7901337710c9931d740300 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 21 Jun 2025 02:34:52 +0800 Subject: [PATCH 03/11] Refactor silver coin exchange functionality into a new service --- .../ISilver2CoinTaskAppService.cs | 9 ++ .../DailyTaskAppService.cs | 19 ---- .../Silver2CoinTaskAppService.cs | 93 +++++++++++++++++++ 3 files changed, 102 insertions(+), 19 deletions(-) create mode 100644 src/Ray.BiliBiliTool.Application.Contracts/ISilver2CoinTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application/Silver2CoinTaskAppService.cs diff --git a/src/Ray.BiliBiliTool.Application.Contracts/ISilver2CoinTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/ISilver2CoinTaskAppService.cs new file mode 100644 index 000000000..268b8a422 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application.Contracts/ISilver2CoinTaskAppService.cs @@ -0,0 +1,9 @@ +using System.ComponentModel; + +namespace Ray.BiliBiliTool.Application.Contracts; + +/// +/// 银瓜子兑换硬币 +/// +[Description("Silver2Coin")] +public interface ISilver2CoinTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs index 985e49db6..4a8111a42 100644 --- a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs +++ b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs @@ -18,10 +18,8 @@ public class DailyTaskAppService( IVideoDomainService videoDomainService, IArticleDomainService articleDomainService, IDonateCoinDomainService donateCoinDomainService, - ILiveDomainService liveDomainService, IVipPrivilegeDomainService vipPrivilegeDomainService, IOptionsMonitor dailyTaskOptions, - ICoinDomainService coinDomainService, ILoginDomainService loginDomainService, IConfiguration configuration, CookieStrFactory cookieStrFactory @@ -46,8 +44,6 @@ protected override async Task DoTaskAccountAsync( await AddCoins(userInfo, ck); - await ExchangeSilver2Coin(ck); - await ReceiveVipPrivilege(userInfo, ck); } @@ -138,21 +134,6 @@ private async Task AddCoins(UserInfo userInfo, BiliCookie ck) } } - /// - /// 直播中心的银瓜子兑换硬币 - /// - [TaskInterceptor("银瓜子兑换硬币", rethrowWhenException: false)] - private async Task ExchangeSilver2Coin(BiliCookie ck) - { - var success = await liveDomainService.ExchangeSilver2Coin(ck); - if (!success) - return; - - //如果兑换成功,则打印硬币余额 - var coinBalance = coinDomainService.GetCoinBalance(ck); - logger.LogInformation("【硬币余额】 {coin}", coinBalance); - } - /// /// 每月领取大会员福利 /// diff --git a/src/Ray.BiliBiliTool.Application/Silver2CoinTaskAppService.cs b/src/Ray.BiliBiliTool.Application/Silver2CoinTaskAppService.cs new file mode 100644 index 000000000..2cc6a2564 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application/Silver2CoinTaskAppService.cs @@ -0,0 +1,93 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Ray.BiliBiliTool.Agent; +using Ray.BiliBiliTool.Application.Attributes; +using Ray.BiliBiliTool.Application.Contracts; +using Ray.BiliBiliTool.DomainService.Interfaces; +using Ray.BiliBiliTool.Infrastructure.Cookie; +using Ray.BiliBiliTool.Infrastructure.Enums; + +namespace Ray.BiliBiliTool.Application; + +public class Silver2CoinTaskAppService( + ILogger logger, + IAccountDomainService accountDomainService, + ILoginDomainService loginDomainService, + IConfiguration configuration, + ILiveDomainService liveDomainService, + ICoinDomainService coinDomainService, + CookieStrFactory cookieStrFactory +) : BaseMultiAccountsAppService(logger, cookieStrFactory), ISilver2CoinTaskAppService +{ + [TaskInterceptor("银瓜子兑换硬币任务", TaskLevel.One)] + protected override async Task DoTaskAccountAsync( + BiliCookie ck, + CancellationToken cancellationToken = default + ) + { + await SetCookiesAsync(ck, cancellationToken); + await Login(ck); + + await ExchangeSilver2Coin(ck); + } + + [TaskInterceptor("Set Cookie")] + private async Task SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken) + { + //判断cookie是否完整 + if (biliCookie.Buvid.IsNotNullOrEmpty()) + { + logger.LogInformation("Cookie完整,不需要Set Cookie"); + return; + } + + //Set + logger.LogInformation("开始Set Cookie"); + var ck = await loginDomainService.SetCookieAsync(biliCookie, cancellationToken); + + //持久化 + logger.LogInformation("持久化Cookie"); + await SaveCookieAsync(ck, cancellationToken); + } + + /// + /// 登录 + /// + /// + [TaskInterceptor("登录")] + private async Task Login(BiliCookie ck) + { + await accountDomainService.LoginByCookie(ck); + } + + /// + /// 直播中心的银瓜子兑换硬币 + /// + [TaskInterceptor("银瓜子兑换硬币", rethrowWhenException: false)] + private async Task ExchangeSilver2Coin(BiliCookie ck) + { + var success = await liveDomainService.ExchangeSilver2Coin(ck); + if (!success) + return; + + //如果兑换成功,则打印硬币余额 + var coinBalance = coinDomainService.GetCoinBalance(ck); + logger.LogInformation("【硬币余额】 {coin}", coinBalance); + } + + private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken) + { + var platformType = configuration.GetSection("PlatformType").Get(); + logger.LogInformation("当前运行平台:{platform}", platformType); + + //更新cookie到青龙env + if (platformType == PlatformType.QingLong) + { + await loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken); + return; + } + + //更新cookie到json + await loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken); + } +} From badd5b05bf36640231165903a18f5bfda04b2809 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 21 Jun 2025 02:43:56 +0800 Subject: [PATCH 04/11] Separate ReceiveVipPrivilegeTaskAppService to handle VIP privilege tasks --- .../IReceiveVipPrivilegeTaskAppService.cs | 6 ++ .../ReceiveVipPrivilegeTaskAppService.cs | 101 ++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs new file mode 100644 index 000000000..442b2b37e --- /dev/null +++ b/src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs @@ -0,0 +1,6 @@ +using System.ComponentModel; + +namespace Ray.BiliBiliTool.Application.Contracts; + +[Description("ReceiveVipPrivilege")] +public interface IReceiveVipPrivilegeTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs new file mode 100644 index 000000000..0eb87fe62 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs @@ -0,0 +1,101 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Ray.BiliBiliTool.Agent; +using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos; +using Ray.BiliBiliTool.Application.Attributes; +using Ray.BiliBiliTool.Application.Contracts; +using Ray.BiliBiliTool.DomainService.Interfaces; +using Ray.BiliBiliTool.Infrastructure.Cookie; +using Ray.BiliBiliTool.Infrastructure.Enums; + +namespace Ray.BiliBiliTool.Application; + +public class ReceiveVipPrivilegeTaskAppService( + ILogger logger, + IAccountDomainService accountDomainService, + IVipPrivilegeDomainService vipPrivilegeDomainService, + ILoginDomainService loginDomainService, + IConfiguration configuration, + CookieStrFactory cookieStrFactory +) : BaseMultiAccountsAppService(logger, cookieStrFactory), IReceiveVipPrivilegeTaskAppService +{ + [TaskInterceptor("领取大会员福利任务", TaskLevel.One)] + protected override async Task DoTaskAccountAsync( + BiliCookie ck, + CancellationToken cancellationToken = default + ) + { + await SetCookiesAsync(ck, cancellationToken); + UserInfo userInfo = await Login(ck); + + await ReceiveVipPrivilege(userInfo, ck); + } + + [TaskInterceptor("Set Cookie")] + private async Task SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken) + { + //判断cookie是否完整 + if (biliCookie.Buvid.IsNotNullOrEmpty()) + { + logger.LogInformation("Cookie完整,不需要Set Cookie"); + return; + } + + //Set + logger.LogInformation("开始Set Cookie"); + var ck = await loginDomainService.SetCookieAsync(biliCookie, cancellationToken); + + //持久化 + logger.LogInformation("持久化Cookie"); + await SaveCookieAsync(ck, cancellationToken); + } + + /// + /// 登录 + /// + /// + [TaskInterceptor("登录")] + private async Task Login(BiliCookie ck) + { + UserInfo userInfo = await accountDomainService.LoginByCookie(ck); + return userInfo; + } + + /// + /// 每月领取大会员福利 + /// + [TaskInterceptor("领取", rethrowWhenException: false)] + private async Task ReceiveVipPrivilege(UserInfo userInfo, BiliCookie ck) + { + var suc = await vipPrivilegeDomainService.ReceiveVipPrivilege(userInfo, ck); + + //如果领取成功,需要刷新账户信息(比如B币余额) + if (suc) + { + try + { + await accountDomainService.LoginByCookie(ck); + } + catch (Exception ex) + { + logger.LogError("领取福利成功,但之后刷新用户信息时异常,信息:{msg}", ex.Message); + } + } + } + + private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken) + { + var platformType = configuration.GetSection("PlatformType").Get(); + logger.LogInformation("当前运行平台:{platform}", platformType); + + //更新cookie到青龙env + if (platformType == PlatformType.QingLong) + { + await loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken); + return; + } + + //更新cookie到json + await loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken); + } +} From a632461bd346b4b174daeb550228e263b952b686 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 21 Jun 2025 03:00:35 +0800 Subject: [PATCH 05/11] Add new job configurations for Manga, MangaPrivilege, ReceiveVipPrivilege, Silver2Coin, and Charge tasks --- ...eCollectionQuartzConfiguratorExtensions.cs | 44 +++++++++++++++++++ src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs | 17 +++++++ src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs | 17 +++++++ .../Jobs/MangaPrivilegeJob.cs | 17 +++++++ .../Jobs/ReceiveVipPrivilegeJob.cs | 19 ++++++++ .../Jobs/Silver2CoinJob.cs | 17 +++++++ src/Ray.BiliBiliTool.Web/appsettings.json | 20 +++++++++ 7 files changed, 151 insertions(+) create mode 100644 src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs create mode 100644 src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs create mode 100644 src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs create mode 100644 src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs create mode 100644 src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs diff --git a/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs b/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs index 0f0340a62..05f443c94 100644 --- a/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs +++ b/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs @@ -28,6 +28,50 @@ IConfiguration configuration .WithCronSchedule(configuration["DailyTaskConfig:Cron"] ?? DefaultCron) ); + // Manga job + quartz.AddJob(opts => opts.WithIdentity(MangaJob.Key)); + quartz.AddTrigger(opts => + opts.ForJob(MangaJob.Key) + .WithIdentity($"{MangaJob.Key}.Cron.Trigger", Constants.BiliJobGroup) + .WithCronSchedule(configuration["MangaTaskConfig:Cron"] ?? DefaultCron) + ); + + // MangaPrivilege job + quartz.AddJob(opts => opts.WithIdentity(MangaPrivilegeJob.Key)); + quartz.AddTrigger(opts => + opts.ForJob(MangaPrivilegeJob.Key) + .WithIdentity($"{MangaPrivilegeJob.Key}.Cron.Trigger", Constants.BiliJobGroup) + .WithCronSchedule(configuration["MangaPrivilegeTaskConfig:Cron"] ?? DefaultCron) + ); + + // ReceiveVipPrivilege job + quartz.AddJob(opts => + opts.WithIdentity(ReceiveVipPrivilegeJob.Key) + ); + quartz.AddTrigger(opts => + opts.ForJob(ReceiveVipPrivilegeJob.Key) + .WithIdentity($"{ReceiveVipPrivilegeJob.Key}.Cron.Trigger", Constants.BiliJobGroup) + .WithCronSchedule( + configuration["ReceiveVipPrivilegeTaskConfig:Cron"] ?? DefaultCron + ) + ); + + // Silver2Coin job + quartz.AddJob(opts => opts.WithIdentity(Silver2CoinJob.Key)); + quartz.AddTrigger(opts => + opts.ForJob(Silver2CoinJob.Key) + .WithIdentity($"{Silver2CoinJob.Key}.Cron.Trigger", Constants.BiliJobGroup) + .WithCronSchedule(configuration["Silver2CoinTaskConfig:Cron"] ?? DefaultCron) + ); + + // Charge job + quartz.AddJob(opts => opts.WithIdentity(ChargeJob.Key)); + quartz.AddTrigger(opts => + opts.ForJob(ChargeJob.Key) + .WithIdentity($"{ChargeJob.Key}.Cron.Trigger", Constants.BiliJobGroup) + .WithCronSchedule(configuration["ChargeTaskConfig:Cron"] ?? DefaultCron) + ); + // Vip big point job quartz.AddJob(opts => opts.WithIdentity(VipBigPointJob.Key)); quartz.AddTrigger(opts => diff --git a/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs new file mode 100644 index 000000000..e02b62b04 --- /dev/null +++ b/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs @@ -0,0 +1,17 @@ +using Quartz; +using Ray.BiliBiliTool.Application.Contracts; + +namespace Ray.BiliBiliTool.Web.Jobs; + +public class ChargeJob(ILogger logger, IDailyTaskAppService appService) + : BaseJob(logger) +{ + private readonly ILogger _logger = logger; + public static readonly JobKey Key = new(nameof(ChargeJob), Constants.BiliJobGroup); + + protected override async Task DoExecuteAsync(IJobExecutionContext context) + { + _logger.LogInformation($"{nameof(ChargeJob)} started."); + await appService.DoTaskAsync(); + } +} diff --git a/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs new file mode 100644 index 000000000..80e5bbb46 --- /dev/null +++ b/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs @@ -0,0 +1,17 @@ +using Quartz; +using Ray.BiliBiliTool.Application.Contracts; + +namespace Ray.BiliBiliTool.Web.Jobs; + +public class MangaJob(ILogger logger, IDailyTaskAppService appService) + : BaseJob(logger) +{ + private readonly ILogger _logger = logger; + public static readonly JobKey Key = new(nameof(MangaJob), Constants.BiliJobGroup); + + protected override async Task DoExecuteAsync(IJobExecutionContext context) + { + _logger.LogInformation($"{nameof(MangaJob)} started."); + await appService.DoTaskAsync(); + } +} diff --git a/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs new file mode 100644 index 000000000..03f47b0e1 --- /dev/null +++ b/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs @@ -0,0 +1,17 @@ +using Quartz; +using Ray.BiliBiliTool.Application.Contracts; + +namespace Ray.BiliBiliTool.Web.Jobs; + +public class MangaPrivilegeJob(ILogger logger, IDailyTaskAppService appService) + : BaseJob(logger) +{ + private readonly ILogger _logger = logger; + public static readonly JobKey Key = new(nameof(MangaPrivilegeJob), Constants.BiliJobGroup); + + protected override async Task DoExecuteAsync(IJobExecutionContext context) + { + _logger.LogInformation($"{nameof(MangaPrivilegeJob)} started."); + await appService.DoTaskAsync(); + } +} diff --git a/src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs new file mode 100644 index 000000000..ed00893fd --- /dev/null +++ b/src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs @@ -0,0 +1,19 @@ +using Quartz; +using Ray.BiliBiliTool.Application.Contracts; + +namespace Ray.BiliBiliTool.Web.Jobs; + +public class ReceiveVipPrivilegeJob( + ILogger logger, + IDailyTaskAppService appService +) : BaseJob(logger) +{ + private readonly ILogger _logger = logger; + public static readonly JobKey Key = new(nameof(ReceiveVipPrivilegeJob), Constants.BiliJobGroup); + + protected override async Task DoExecuteAsync(IJobExecutionContext context) + { + _logger.LogInformation($"{nameof(ReceiveVipPrivilegeJob)} started."); + await appService.DoTaskAsync(); + } +} diff --git a/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs new file mode 100644 index 000000000..cdc78f5f4 --- /dev/null +++ b/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs @@ -0,0 +1,17 @@ +using Quartz; +using Ray.BiliBiliTool.Application.Contracts; + +namespace Ray.BiliBiliTool.Web.Jobs; + +public class Silver2CoinJob(ILogger logger, IDailyTaskAppService appService) + : BaseJob(logger) +{ + private readonly ILogger _logger = logger; + public static readonly JobKey Key = new(nameof(Silver2CoinJob), Constants.BiliJobGroup); + + protected override async Task DoExecuteAsync(IJobExecutionContext context) + { + _logger.LogInformation($"{nameof(Silver2CoinJob)} started."); + await appService.DoTaskAsync(); + } +} diff --git a/src/Ray.BiliBiliTool.Web/appsettings.json b/src/Ray.BiliBiliTool.Web/appsettings.json index e8e0c52b8..80f3051c2 100644 --- a/src/Ray.BiliBiliTool.Web/appsettings.json +++ b/src/Ray.BiliBiliTool.Web/appsettings.json @@ -43,6 +43,26 @@ "CustomEpId": 381662 //自定义漫画阅读 ep_id,若不清楚含义请勿修改 }, + "MangaTaskConfig": { + "Cron": "0 0 15 * * ?" + }, + + "MangaPrivilegeTaskConfig": { + "Cron": "0 0 15 * * ?" + }, + + "ReceiveVipPrivilegeTaskConfig": { + "Cron": "0 0 15 * * ?" + }, + + "Silver2CoinTaskConfig": { + "Cron": "0 0 15 * * ?" + }, + + "ChargeTaskConfig": { + "Cron": "0 0 15 * * ?" + }, + "VipBigPointConfig": { "Cron": "0 7 1 * * ?", "ViewBangumis": "33378" // 自定义番剧的ssid,若不清楚含义请勿修改(默认为名侦探柯南) From b6b72277ffc9b1c11fe83770d46f896c902b1902 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 21 Jun 2025 03:26:43 +0800 Subject: [PATCH 06/11] Update task interceptor name and add new task services --- qinglong/DefaultTasks/bili_task_charge.sh | 8 ++++++++ qinglong/DefaultTasks/bili_task_manga.sh | 8 ++++++++ qinglong/DefaultTasks/bili_task_manga_privilege.sh | 8 ++++++++ qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh | 8 ++++++++ qinglong/DefaultTasks/bili_task_silver2coin.sh | 8 ++++++++ qinglong/DefaultTasks/dev/bili_dev_task_charge.sh | 8 ++++++++ qinglong/DefaultTasks/dev/bili_dev_task_manga.sh | 8 ++++++++ .../DefaultTasks/dev/bili_dev_task_manga_privilege.sh | 8 ++++++++ .../dev/bili_dev_task_receive_vip_privilege.sh | 8 ++++++++ qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh | 8 ++++++++ .../TaskTypeFactory.cs | 5 +++++ src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs | 2 +- 12 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 qinglong/DefaultTasks/bili_task_charge.sh create mode 100644 qinglong/DefaultTasks/bili_task_manga.sh create mode 100644 qinglong/DefaultTasks/bili_task_manga_privilege.sh create mode 100644 qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh create mode 100644 qinglong/DefaultTasks/bili_task_silver2coin.sh create mode 100644 qinglong/DefaultTasks/dev/bili_dev_task_charge.sh create mode 100644 qinglong/DefaultTasks/dev/bili_dev_task_manga.sh create mode 100644 qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh create mode 100644 qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh create mode 100644 qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh diff --git a/qinglong/DefaultTasks/bili_task_charge.sh b/qinglong/DefaultTasks/bili_task_charge.sh new file mode 100644 index 000000000..396b586a3 --- /dev/null +++ b/qinglong/DefaultTasks/bili_task_charge.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili免费B币券充电任务") + +. bili_task_base.sh + +target_task_code="Charge" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/bili_task_manga.sh b/qinglong/DefaultTasks/bili_task_manga.sh new file mode 100644 index 000000000..363c888a8 --- /dev/null +++ b/qinglong/DefaultTasks/bili_task_manga.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili漫画任务") + +. bili_task_base.sh + +target_task_code="Manga" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/bili_task_manga_privilege.sh b/qinglong/DefaultTasks/bili_task_manga_privilege.sh new file mode 100644 index 000000000..8678439b1 --- /dev/null +++ b/qinglong/DefaultTasks/bili_task_manga_privilege.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili领取大会员漫画权益任务") + +. bili_task_base.sh + +target_task_code="MangaPrivilege" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh b/qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh new file mode 100644 index 000000000..c2d09604e --- /dev/null +++ b/qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili领取大会员福利任务") + +. bili_task_base.sh + +target_task_code="ReceiveVipPrivilege" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/bili_task_silver2coin.sh b/qinglong/DefaultTasks/bili_task_silver2coin.sh new file mode 100644 index 000000000..73c0eb380 --- /dev/null +++ b/qinglong/DefaultTasks/bili_task_silver2coin.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili银瓜子兑换硬币任务") + +. bili_task_base.sh + +target_task_code="Silver2Coin" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh b/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh new file mode 100644 index 000000000..f6dccc009 --- /dev/null +++ b/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili免费B币券充电任务[dev先行版]") + +. bili_dev_task_base.sh + +target_task_code="Charge" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh b/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh new file mode 100644 index 000000000..2b89c9f95 --- /dev/null +++ b/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili漫画任务[dev先行版]") + +. bili_dev_task_base.sh + +target_task_code="Manga" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh b/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh new file mode 100644 index 000000000..fd8bde1cc --- /dev/null +++ b/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili领取大会员漫画权益任务[dev先行版]") + +. bili_dev_task_base.sh + +target_task_code="MangaPrivilege" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh b/qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh new file mode 100644 index 000000000..78fa82f91 --- /dev/null +++ b/qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili领取大会员福利任务[dev先行版]") + +. bili_dev_task_base.sh + +target_task_code="ReceiveVipPrivilege" +run_task "${target_task_code}" \ No newline at end of file diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh b/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh new file mode 100644 index 000000000..1ff5b3eac --- /dev/null +++ b/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# cron:0 9 * * * +# new Env("bili银瓜子兑换硬币任务[dev先行版]") + +. bili_dev_task_base.sh + +target_task_code="Silver2Coin" +run_task "${target_task_code}" \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs b/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs index bb287c888..eef7feb85 100644 --- a/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs +++ b/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs @@ -11,6 +11,11 @@ public static class TaskTypeFactory typeof(ILoginTaskAppService), typeof(ITestAppService), typeof(IDailyTaskAppService), + typeof(IMangaTaskAppService), + typeof(IMangaPrivilegeTaskAppService), + typeof(IReceiveVipPrivilegeTaskAppService), + typeof(ISilver2CoinTaskAppService), + typeof(IChargeTaskAppService), typeof(ILiveFansMedalAppService), typeof(ILiveLotteryTaskAppService), typeof(IVipBigPointAppService), diff --git a/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs b/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs index cde0570fd..ac2fa28d7 100644 --- a/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs +++ b/src/Ray.BiliBiliTool.Application/ChargeTaskAppService.cs @@ -19,7 +19,7 @@ public class ChargeTaskAppService( CookieStrFactory cookieStrFactory ) : BaseMultiAccountsAppService(logger, cookieStrFactory), IChargeTaskAppService { - [TaskInterceptor("B币券充电", TaskLevel.One)] + [TaskInterceptor("免费B币券充电任务", TaskLevel.One)] protected override async Task DoTaskAccountAsync( BiliCookie ck, CancellationToken cancellationToken = default From 5141a64ea6f73d5f7d3f43d5ff6f0eccae0d5152 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 21 Jun 2025 13:13:13 +0800 Subject: [PATCH 07/11] Rename and refactor related services and job configurations --- ...rivilege.sh => bili_task_vip_privilege.sh} | 4 ++-- ...lege.sh => bili_dev_task_vip_privilege.sh} | 4 ++-- .../IReceiveVipPrivilegeTaskAppService.cs | 6 ------ .../IVipPrivilegeTaskAppService.cs | 6 ++++++ .../TaskTypeFactory.cs | 2 +- ...rvice.cs => VipPrivilegeTaskAppService.cs} | 6 +++--- ...eCollectionQuartzConfiguratorExtensions.cs | 8 +++----- src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs | 2 +- src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs | 2 +- .../Jobs/MangaPrivilegeJob.cs | 6 ++++-- .../Jobs/ReceiveVipPrivilegeJob.cs | 19 ------------------- .../Jobs/Silver2CoinJob.cs | 2 +- .../Jobs/VipPrivilegeJob.cs | 19 +++++++++++++++++++ 13 files changed, 43 insertions(+), 43 deletions(-) rename qinglong/DefaultTasks/{bili_task_receive_vip_privilege.sh => bili_task_vip_privilege.sh} (60%) rename qinglong/DefaultTasks/dev/{bili_dev_task_receive_vip_privilege.sh => bili_dev_task_vip_privilege.sh} (63%) delete mode 100644 src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs create mode 100644 src/Ray.BiliBiliTool.Application.Contracts/IVipPrivilegeTaskAppService.cs rename src/Ray.BiliBiliTool.Application/{ReceiveVipPrivilegeTaskAppService.cs => VipPrivilegeTaskAppService.cs} (94%) delete mode 100644 src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs create mode 100644 src/Ray.BiliBiliTool.Web/Jobs/VipPrivilegeJob.cs diff --git a/qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh b/qinglong/DefaultTasks/bili_task_vip_privilege.sh similarity index 60% rename from qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh rename to qinglong/DefaultTasks/bili_task_vip_privilege.sh index c2d09604e..fe8a2e639 100644 --- a/qinglong/DefaultTasks/bili_task_receive_vip_privilege.sh +++ b/qinglong/DefaultTasks/bili_task_vip_privilege.sh @@ -4,5 +4,5 @@ . bili_task_base.sh -target_task_code="ReceiveVipPrivilege" -run_task "${target_task_code}" \ No newline at end of file +target_task_code="VipPrivilege" +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh b/qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh similarity index 63% rename from qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh rename to qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh index 78fa82f91..fe7111d86 100644 --- a/qinglong/DefaultTasks/dev/bili_dev_task_receive_vip_privilege.sh +++ b/qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh @@ -4,5 +4,5 @@ . bili_dev_task_base.sh -target_task_code="ReceiveVipPrivilege" -run_task "${target_task_code}" \ No newline at end of file +target_task_code="VipPrivilege" +run_task "${target_task_code}" diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs deleted file mode 100644 index 442b2b37e..000000000 --- a/src/Ray.BiliBiliTool.Application.Contracts/IReceiveVipPrivilegeTaskAppService.cs +++ /dev/null @@ -1,6 +0,0 @@ -using System.ComponentModel; - -namespace Ray.BiliBiliTool.Application.Contracts; - -[Description("ReceiveVipPrivilege")] -public interface IReceiveVipPrivilegeTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IVipPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IVipPrivilegeTaskAppService.cs new file mode 100644 index 000000000..ac3521212 --- /dev/null +++ b/src/Ray.BiliBiliTool.Application.Contracts/IVipPrivilegeTaskAppService.cs @@ -0,0 +1,6 @@ +using System.ComponentModel; + +namespace Ray.BiliBiliTool.Application.Contracts; + +[Description("VipPrivilege")] +public interface IVipPrivilegeTaskAppService : IAppService; diff --git a/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs b/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs index eef7feb85..23591dd19 100644 --- a/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs +++ b/src/Ray.BiliBiliTool.Application.Contracts/TaskTypeFactory.cs @@ -13,7 +13,7 @@ public static class TaskTypeFactory typeof(IDailyTaskAppService), typeof(IMangaTaskAppService), typeof(IMangaPrivilegeTaskAppService), - typeof(IReceiveVipPrivilegeTaskAppService), + typeof(IVipPrivilegeTaskAppService), typeof(ISilver2CoinTaskAppService), typeof(IChargeTaskAppService), typeof(ILiveFansMedalAppService), diff --git a/src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs b/src/Ray.BiliBiliTool.Application/VipPrivilegeTaskAppService.cs similarity index 94% rename from src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs rename to src/Ray.BiliBiliTool.Application/VipPrivilegeTaskAppService.cs index 0eb87fe62..8dd5f836c 100644 --- a/src/Ray.BiliBiliTool.Application/ReceiveVipPrivilegeTaskAppService.cs +++ b/src/Ray.BiliBiliTool.Application/VipPrivilegeTaskAppService.cs @@ -10,14 +10,14 @@ namespace Ray.BiliBiliTool.Application; -public class ReceiveVipPrivilegeTaskAppService( - ILogger logger, +public class VipPrivilegeTaskAppService( + ILogger logger, IAccountDomainService accountDomainService, IVipPrivilegeDomainService vipPrivilegeDomainService, ILoginDomainService loginDomainService, IConfiguration configuration, CookieStrFactory cookieStrFactory -) : BaseMultiAccountsAppService(logger, cookieStrFactory), IReceiveVipPrivilegeTaskAppService +) : BaseMultiAccountsAppService(logger, cookieStrFactory), IVipPrivilegeTaskAppService { [TaskInterceptor("领取大会员福利任务", TaskLevel.One)] protected override async Task DoTaskAccountAsync( diff --git a/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs b/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs index 05f443c94..b33afd825 100644 --- a/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs +++ b/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs @@ -45,12 +45,10 @@ IConfiguration configuration ); // ReceiveVipPrivilege job - quartz.AddJob(opts => - opts.WithIdentity(ReceiveVipPrivilegeJob.Key) - ); + quartz.AddJob(opts => opts.WithIdentity(VipPrivilegeJob.Key)); quartz.AddTrigger(opts => - opts.ForJob(ReceiveVipPrivilegeJob.Key) - .WithIdentity($"{ReceiveVipPrivilegeJob.Key}.Cron.Trigger", Constants.BiliJobGroup) + opts.ForJob(VipPrivilegeJob.Key) + .WithIdentity($"{VipPrivilegeJob.Key}.Cron.Trigger", Constants.BiliJobGroup) .WithCronSchedule( configuration["ReceiveVipPrivilegeTaskConfig:Cron"] ?? DefaultCron ) diff --git a/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs index e02b62b04..67e7cac94 100644 --- a/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs +++ b/src/Ray.BiliBiliTool.Web/Jobs/ChargeJob.cs @@ -3,7 +3,7 @@ namespace Ray.BiliBiliTool.Web.Jobs; -public class ChargeJob(ILogger logger, IDailyTaskAppService appService) +public class ChargeJob(ILogger logger, IChargeTaskAppService appService) : BaseJob(logger) { private readonly ILogger _logger = logger; diff --git a/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs index 80e5bbb46..81cf8859a 100644 --- a/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs +++ b/src/Ray.BiliBiliTool.Web/Jobs/MangaJob.cs @@ -3,7 +3,7 @@ namespace Ray.BiliBiliTool.Web.Jobs; -public class MangaJob(ILogger logger, IDailyTaskAppService appService) +public class MangaJob(ILogger logger, IMangaTaskAppService appService) : BaseJob(logger) { private readonly ILogger _logger = logger; diff --git a/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs index 03f47b0e1..297a10fdf 100644 --- a/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs +++ b/src/Ray.BiliBiliTool.Web/Jobs/MangaPrivilegeJob.cs @@ -3,8 +3,10 @@ namespace Ray.BiliBiliTool.Web.Jobs; -public class MangaPrivilegeJob(ILogger logger, IDailyTaskAppService appService) - : BaseJob(logger) +public class MangaPrivilegeJob( + ILogger logger, + IMangaPrivilegeTaskAppService appService +) : BaseJob(logger) { private readonly ILogger _logger = logger; public static readonly JobKey Key = new(nameof(MangaPrivilegeJob), Constants.BiliJobGroup); diff --git a/src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs deleted file mode 100644 index ed00893fd..000000000 --- a/src/Ray.BiliBiliTool.Web/Jobs/ReceiveVipPrivilegeJob.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Quartz; -using Ray.BiliBiliTool.Application.Contracts; - -namespace Ray.BiliBiliTool.Web.Jobs; - -public class ReceiveVipPrivilegeJob( - ILogger logger, - IDailyTaskAppService appService -) : BaseJob(logger) -{ - private readonly ILogger _logger = logger; - public static readonly JobKey Key = new(nameof(ReceiveVipPrivilegeJob), Constants.BiliJobGroup); - - protected override async Task DoExecuteAsync(IJobExecutionContext context) - { - _logger.LogInformation($"{nameof(ReceiveVipPrivilegeJob)} started."); - await appService.DoTaskAsync(); - } -} diff --git a/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs index cdc78f5f4..7fe57eec7 100644 --- a/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs +++ b/src/Ray.BiliBiliTool.Web/Jobs/Silver2CoinJob.cs @@ -3,7 +3,7 @@ namespace Ray.BiliBiliTool.Web.Jobs; -public class Silver2CoinJob(ILogger logger, IDailyTaskAppService appService) +public class Silver2CoinJob(ILogger logger, ISilver2CoinTaskAppService appService) : BaseJob(logger) { private readonly ILogger _logger = logger; diff --git a/src/Ray.BiliBiliTool.Web/Jobs/VipPrivilegeJob.cs b/src/Ray.BiliBiliTool.Web/Jobs/VipPrivilegeJob.cs new file mode 100644 index 000000000..6cc196879 --- /dev/null +++ b/src/Ray.BiliBiliTool.Web/Jobs/VipPrivilegeJob.cs @@ -0,0 +1,19 @@ +using Quartz; +using Ray.BiliBiliTool.Application.Contracts; + +namespace Ray.BiliBiliTool.Web.Jobs; + +public class VipPrivilegeJob( + ILogger logger, + IVipPrivilegeTaskAppService appService +) : BaseJob(logger) +{ + private readonly ILogger _logger = logger; + public static readonly JobKey Key = new(nameof(VipPrivilegeJob), Constants.BiliJobGroup); + + protected override async Task DoExecuteAsync(IJobExecutionContext context) + { + _logger.LogInformation($"{nameof(VipPrivilegeJob)} started."); + await appService.DoTaskAsync(); + } +} From e675adb31d1363ae874584d7349ffa0f97e2f7d1 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 21 Jun 2025 13:39:47 +0800 Subject: [PATCH 08/11] fix typo --- .../IChargeTaskAppService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs b/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs index be91db58e..456d6fa79 100644 --- a/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs +++ b/src/Ray.BiliBiliTool.Application.Contracts/IChargeTaskAppService.cs @@ -3,7 +3,7 @@ namespace Ray.BiliBiliTool.Application.Contracts; /// -/// 漫画任务 +/// 免费B币券充电任务 /// [Description("Charge")] public interface IChargeTaskAppService : IAppService; From 83effba9674e042c978856353cfce544a64e75eb Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 11 Jul 2025 02:44:10 +0800 Subject: [PATCH 09/11] Update cron schedules time --- qinglong/DefaultTasks/bili_task_charge.sh | 4 ++-- qinglong/DefaultTasks/bili_task_manga.sh | 4 ++-- qinglong/DefaultTasks/bili_task_manga_privilege.sh | 4 ++-- qinglong/DefaultTasks/bili_task_silver2coin.sh | 4 ++-- qinglong/DefaultTasks/bili_task_vip_privilege.sh | 2 +- qinglong/DefaultTasks/dev/bili_dev_task_charge.sh | 4 ++-- qinglong/DefaultTasks/dev/bili_dev_task_manga.sh | 4 ++-- qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh | 4 ++-- qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh | 4 ++-- qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh | 2 +- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/qinglong/DefaultTasks/bili_task_charge.sh b/qinglong/DefaultTasks/bili_task_charge.sh index 396b586a3..10a7c9a05 100644 --- a/qinglong/DefaultTasks/bili_task_charge.sh +++ b/qinglong/DefaultTasks/bili_task_charge.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 12 * * * # new Env("bili免费B币券充电任务") . bili_task_base.sh target_task_code="Charge" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/bili_task_manga.sh b/qinglong/DefaultTasks/bili_task_manga.sh index 363c888a8..c1b0be3d6 100644 --- a/qinglong/DefaultTasks/bili_task_manga.sh +++ b/qinglong/DefaultTasks/bili_task_manga.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 14 * * * # new Env("bili漫画任务") . bili_task_base.sh target_task_code="Manga" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/bili_task_manga_privilege.sh b/qinglong/DefaultTasks/bili_task_manga_privilege.sh index 8678439b1..cf8874af4 100644 --- a/qinglong/DefaultTasks/bili_task_manga_privilege.sh +++ b/qinglong/DefaultTasks/bili_task_manga_privilege.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 15 * * * # new Env("bili领取大会员漫画权益任务") . bili_task_base.sh target_task_code="MangaPrivilege" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/bili_task_silver2coin.sh b/qinglong/DefaultTasks/bili_task_silver2coin.sh index 73c0eb380..8984f7e75 100644 --- a/qinglong/DefaultTasks/bili_task_silver2coin.sh +++ b/qinglong/DefaultTasks/bili_task_silver2coin.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 8 * * * # new Env("bili银瓜子兑换硬币任务") . bili_task_base.sh target_task_code="Silver2Coin" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/bili_task_vip_privilege.sh b/qinglong/DefaultTasks/bili_task_vip_privilege.sh index fe8a2e639..a2df7399c 100644 --- a/qinglong/DefaultTasks/bili_task_vip_privilege.sh +++ b/qinglong/DefaultTasks/bili_task_vip_privilege.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 1 * * * # new Env("bili领取大会员福利任务") . bili_task_base.sh diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh b/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh index f6dccc009..b6f7c3641 100644 --- a/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh +++ b/qinglong/DefaultTasks/dev/bili_dev_task_charge.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 12 * * * # new Env("bili免费B币券充电任务[dev先行版]") . bili_dev_task_base.sh target_task_code="Charge" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh b/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh index 2b89c9f95..32dbda7b9 100644 --- a/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh +++ b/qinglong/DefaultTasks/dev/bili_dev_task_manga.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 14 * * * # new Env("bili漫画任务[dev先行版]") . bili_dev_task_base.sh target_task_code="Manga" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh b/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh index fd8bde1cc..def173be5 100644 --- a/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh +++ b/qinglong/DefaultTasks/dev/bili_dev_task_manga_privilege.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 15 * * * # new Env("bili领取大会员漫画权益任务[dev先行版]") . bili_dev_task_base.sh target_task_code="MangaPrivilege" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh b/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh index 1ff5b3eac..851282a0c 100644 --- a/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh +++ b/qinglong/DefaultTasks/dev/bili_dev_task_silver2coin.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 8 * * * # new Env("bili银瓜子兑换硬币任务[dev先行版]") . bili_dev_task_base.sh target_task_code="Silver2Coin" -run_task "${target_task_code}" \ No newline at end of file +run_task "${target_task_code}" diff --git a/qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh b/qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh index fe7111d86..18ee9feb6 100644 --- a/qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh +++ b/qinglong/DefaultTasks/dev/bili_dev_task_vip_privilege.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# cron:0 9 * * * +# cron:0 1 * * * # new Env("bili领取大会员福利任务[dev先行版]") . bili_dev_task_base.sh From 77cf35c06c832f8560677fa2d69c06c9a2f95d11 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 11 Jul 2025 02:58:51 +0800 Subject: [PATCH 10/11] Update existing cron schedules --- .../Options/VipPrivilegeOptions.cs | 3 ++- src/Ray.BiliBiliTool.Console/appsettings.json | 23 ++++++++++++++++--- src/Ray.BiliBiliTool.Web/appsettings.json | 19 +++++++-------- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/Ray.BiliBiliTool.Config/Options/VipPrivilegeOptions.cs b/src/Ray.BiliBiliTool.Config/Options/VipPrivilegeOptions.cs index a978518c1..1b3607bad 100644 --- a/src/Ray.BiliBiliTool.Config/Options/VipPrivilegeOptions.cs +++ b/src/Ray.BiliBiliTool.Config/Options/VipPrivilegeOptions.cs @@ -1,6 +1,7 @@ namespace Ray.BiliBiliTool.Config.Options; -public class VipPrivilegeOptions +public class VipPrivilegeOptions : IHasCron { + public string? Cron { get; set; } public bool IsEnable { get; set; } = true; } diff --git a/src/Ray.BiliBiliTool.Console/appsettings.json b/src/Ray.BiliBiliTool.Console/appsettings.json index 64b563d1d..b8ab7faa3 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.json @@ -22,15 +22,32 @@ "CustomEpId": 381662 //自定义漫画阅读 ep_id,若不清楚含义请勿修改 }, - "VipBigPointConfig": { - "Cron": "7 1 * * *", - "ViewBangumis": "33378" // 自定义番剧的ssid,若不清楚含义请勿修改(默认为名侦探柯南) + "MangaTaskConfig": { + "Cron": "0 0 14 * * ?" + }, + + "MangaPrivilegeTaskConfig": { + "Cron": "0 0 15 * * ?" + }, + + "Silver2CoinTaskConfig": { + "Cron": "0 0 8 * * ?" + }, + + "ChargeTaskConfig": { + "Cron": "0 0 12 * * ?" }, "VipPrivilegeConfig": { + "Cron": "0 0 1 * * ?", "IsEnable": true }, + "VipBigPointConfig": { + "Cron": "7 1 * * *", + "ViewBangumis": "33378" // 自定义番剧的ssid,若不清楚含义请勿修改(默认为名侦探柯南) + }, + "LiveLotteryTaskConfig": { "Cron": "0 22 * * *", "ExcludeAwardNames": "舰|船|航海|代金券|自拍|照|写真|图|提督", //根据关键字排除包含这些文字的奖品名称,多个用“|”分隔,如“照|舰|船|航海|代金券|自拍” diff --git a/src/Ray.BiliBiliTool.Web/appsettings.json b/src/Ray.BiliBiliTool.Web/appsettings.json index 80f3051c2..de7abfc7f 100644 --- a/src/Ray.BiliBiliTool.Web/appsettings.json +++ b/src/Ray.BiliBiliTool.Web/appsettings.json @@ -44,23 +44,24 @@ }, "MangaTaskConfig": { - "Cron": "0 0 15 * * ?" + "Cron": "0 0 14 * * ?" }, "MangaPrivilegeTaskConfig": { "Cron": "0 0 15 * * ?" }, - "ReceiveVipPrivilegeTaskConfig": { - "Cron": "0 0 15 * * ?" - }, - "Silver2CoinTaskConfig": { - "Cron": "0 0 15 * * ?" + "Cron": "0 0 8 * * ?" }, "ChargeTaskConfig": { - "Cron": "0 0 15 * * ?" + "Cron": "0 0 12 * * ?" + }, + + "VipPrivilegeConfig": { + "Cron": "0 0 1 * * ?", + "IsEnable": true }, "VipBigPointConfig": { @@ -68,10 +69,6 @@ "ViewBangumis": "33378" // 自定义番剧的ssid,若不清楚含义请勿修改(默认为名侦探柯南) }, - "VipPrivilegeConfig": { - "IsEnable": true - }, - "LiveLotteryTaskConfig": { "Cron": "0 0 22 * * ?", "ExcludeAwardNames": "舰|船|航海|代金券|自拍|照|写真|图|提督", //根据关键字排除包含这些文字的奖品名称,多个用“|”分隔,如“照|舰|船|航海|代金券|自拍” From a08fdd976d8fe9e5be980ccc0851492b2b8256b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=A87=E6=A5=BC?= <31154238+RayWangQvQ@users.noreply.github.com> Date: Fri, 11 Jul 2025 03:03:24 +0800 Subject: [PATCH 11/11] Update src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs b/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs index b33afd825..59468ea10 100644 --- a/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs +++ b/src/Ray.BiliBiliTool.Web/Extensions/ServiceCollectionQuartzConfiguratorExtensions.cs @@ -50,7 +50,7 @@ IConfiguration configuration opts.ForJob(VipPrivilegeJob.Key) .WithIdentity($"{VipPrivilegeJob.Key}.Cron.Trigger", Constants.BiliJobGroup) .WithCronSchedule( - configuration["ReceiveVipPrivilegeTaskConfig:Cron"] ?? DefaultCron + configuration["VipPrivilegeConfig:Cron"] ?? DefaultCron ) );