feat: multiple improvements and bug fixes

- Add gift card redemption feature
- Resolve custom range selection issue in overview
- Allow log page size to be modified
- Add subscription path change notification
- Improve dynamic node rate feature
- Support markdown documentation display for plugins
- Reduce power reset service logging
- Fix backend version number not updating after update
This commit is contained in:
xboard
2025-07-14 00:33:04 +08:00
parent a01b94f131
commit a838a43ae5
38 changed files with 3056 additions and 325 deletions
+3 -4
View File
@@ -2,6 +2,7 @@
namespace App\Console\Commands;
use App\Models\User;
use App\Services\TrafficResetService;
use App\Utils\Helper;
use Carbon\Carbon;
@@ -54,8 +55,6 @@ class ResetTraffic extends Command
// 设置最大执行时间
set_time_limit($maxTime);
$startTime = microtime(true);
try {
if ($dryRun) {
$result = $this->performDryRun($batchSize);
@@ -129,7 +128,7 @@ class ResetTraffic extends Command
{
$this->info("🔍 扫描需要重置的用户...");
$totalUsers = \App\Models\User::where('next_reset_at', '<=', time())
$totalUsers = User::where('next_reset_at', '<=', time())
->whereNotNull('next_reset_at')
->where(function ($query) {
$query->where('expired_at', '>', time())
@@ -160,7 +159,7 @@ class ResetTraffic extends Command
// 显示前几个用户的详情作为示例
if ($this->option('verbose') || $totalUsers <= 20) {
$sampleUsers = \App\Models\User::where('next_reset_at', '<=', time())
$sampleUsers = User::where('next_reset_at', '<=', time())
->whereNotNull('next_reset_at')
->where(function ($query) {
$query->where('expired_at', '>', time())
+7 -3
View File
@@ -2,7 +2,9 @@
namespace App\Console\Commands;
use App\Services\UpdateService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
class XboardUpdate extends Command
@@ -39,9 +41,11 @@ class XboardUpdate extends Command
public function handle()
{
$this->info('正在导入数据库请稍等...');
\Artisan::call("migrate");
$this->info(\Artisan::output());
\Artisan::call('horizon:terminate');
Artisan::call("migrate");
$this->info(Artisan::output());
Artisan::call('horizon:terminate');
$updateService = new UpdateService();
$updateService->updateVersionCache();
$this->info('更新完毕,队列服务已重启,你无需进行任何操作。');
}
}