mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 20:40:49 +08:00
add job RemoveUserVipStatus + RemoveUserDonorStatus + RemoveUserWarning
This commit is contained in:
@@ -6,6 +6,9 @@ use App\Jobs\CheckCleanup;
|
||||
use App\Jobs\CheckQueueFailedJobs;
|
||||
use App\Jobs\MaintainPluginState;
|
||||
use App\Jobs\ManagePlugin;
|
||||
use App\Jobs\RemoveUserDonorStatus;
|
||||
use App\Jobs\RemoveUserVipStatus;
|
||||
use App\Jobs\RemoveUserWarning;
|
||||
use App\Jobs\SaveIpLogCacheToDB;
|
||||
use App\Jobs\UpdateIsSeedBoxFromUserRecordsCache;
|
||||
use App\Utils\ThirdPartyJob;
|
||||
@@ -53,6 +56,9 @@ class Kernel extends ConsoleKernel
|
||||
$schedule->job(new UpdateIsSeedBoxFromUserRecordsCache())->everySixHours();
|
||||
$schedule->job(new CheckCleanup())->everyFifteenMinutes();
|
||||
$schedule->job(new SaveIpLogCacheToDB())->hourly();
|
||||
$schedule->job(new RemoveUserWarning())->everyTwentySeconds();
|
||||
$schedule->job(new RemoveUserVipStatus())->everyMinute();
|
||||
$schedule->job(new RemoveUserDonorStatus())->everyMinute();
|
||||
|
||||
}
|
||||
|
||||
|
||||
63
app/Jobs/RemoveUserDonorStatus.php
Normal file
63
app/Jobs/RemoveUserDonorStatus.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Enums\ModelEventEnum;
|
||||
use App\Models\Message;
|
||||
use App\Models\User;
|
||||
use App\Models\UserModifyLog;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
|
||||
class RemoveUserDonorStatus
|
||||
{
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
$users = User::query()
|
||||
->with('language')
|
||||
->where('donor', 'yes')
|
||||
->whereNotNull('donoruntil')
|
||||
->where('donoruntil', '!=', '0000-00-00 00:00:00')
|
||||
->where('donoruntil', '<', now())
|
||||
->get();
|
||||
$userModifyLogs = [];
|
||||
foreach ($users as $user) {
|
||||
$locale = $user->locale;
|
||||
$userModifyLogs[] = [
|
||||
'user_id' => $user->id,
|
||||
'content' => "donor status removed by - AutoSystem",
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
];
|
||||
$user->donor = 'no';
|
||||
do_log(sprintf("update user %s => %s", $user->id, json_encode($user->getDirty())));
|
||||
$user->save();
|
||||
clear_user_cache($user->id);
|
||||
publish_model_event(ModelEventEnum::USER_UPDATED, $user->id);
|
||||
$subject = sqlesc(nexus_trans("cleanup.msg_donor_status_removed", [], $locale));
|
||||
$msg = sqlesc(nexus_trans("cleanup.msg_donor_status_removed_body", [], $locale));
|
||||
Message::add([
|
||||
'sender' => 0,
|
||||
'receiver' => $user->id,
|
||||
'added' => now(),
|
||||
'subject' => $subject,
|
||||
'msg' => $msg,
|
||||
]);
|
||||
}
|
||||
if (!empty($userModifyLogs)) {
|
||||
UserModifyLog::query()->insert($userModifyLogs);
|
||||
}
|
||||
do_log("remove donor status if time's up, success handle user count: " . $users->count());
|
||||
}
|
||||
}
|
||||
69
app/Jobs/RemoveUserVipStatus.php
Normal file
69
app/Jobs/RemoveUserVipStatus.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Enums\ModelEventEnum;
|
||||
use App\Models\Message;
|
||||
use App\Models\User;
|
||||
use App\Models\UserModifyLog;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
|
||||
class RemoveUserVipStatus
|
||||
{
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
$users = User::query()
|
||||
->with('language')
|
||||
->where('vip_added', 'yes')
|
||||
->where('vip_until', '<', now())
|
||||
->get();
|
||||
$userModifyLogs = [];
|
||||
foreach ($users as $user) {
|
||||
$locale = $user->locale;
|
||||
$userModifyLogs[] = [
|
||||
'user_id' => $user->id,
|
||||
'content' => "VIP status removed by - AutoSystem",
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
];
|
||||
$message = [];
|
||||
$user->vip_added = 'no';
|
||||
$user->vip_until = null;
|
||||
if ($user->class <= User::CLASS_VIP) {
|
||||
$user->class = User::CLASS_USER;
|
||||
$subject = sqlesc(nexus_trans("cleanup.msg_vip_status_removed", [], $locale));
|
||||
$msg = sqlesc(nexus_trans("cleanup.msg_vip_status_removed_body", [], $locale));
|
||||
$message = [
|
||||
'sender' => 0,
|
||||
'receiver' => $user->id,
|
||||
'added' => now(),
|
||||
'subject' => $subject,
|
||||
'msg' => $msg,
|
||||
];
|
||||
}
|
||||
do_log(sprintf("update user %s => %s", $user->id, json_encode($user->getDirty())));
|
||||
$user->save();
|
||||
clear_user_cache($user->id);
|
||||
publish_model_event(ModelEventEnum::USER_UPDATED, $user->id);
|
||||
if (!empty($message)) {
|
||||
Message::add($message);
|
||||
}
|
||||
}
|
||||
if (!empty($userModifyLogs)) {
|
||||
UserModifyLog::query()->insert($userModifyLogs);
|
||||
}
|
||||
do_log("remove VIP status if time's up, success handle user count: " . $users->count());
|
||||
}
|
||||
}
|
||||
63
app/Jobs/RemoveUserWarning.php
Normal file
63
app/Jobs/RemoveUserWarning.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Enums\ModelEventEnum;
|
||||
use App\Models\Message;
|
||||
use App\Models\User;
|
||||
use App\Models\UserModifyLog;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
|
||||
class RemoveUserWarning
|
||||
{
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
$users = User::query()
|
||||
->with('language')
|
||||
->where('enabled', 'yes')
|
||||
->where('warned', 'yes')
|
||||
->where('warneduntil', '<', now())
|
||||
->get();
|
||||
$userModifyLogs = [];
|
||||
foreach ($users as $user) {
|
||||
$locale = $user->locale;
|
||||
$userModifyLogs[] = [
|
||||
'user_id' => $user->id,
|
||||
'content' => "Warning removed by System.",
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
];
|
||||
$user->warned = 'no';
|
||||
$user->warneduntil = null;
|
||||
do_log(sprintf("update user %s => %s", $user->id, json_encode($user->getDirty())));
|
||||
$user->save();
|
||||
clear_user_cache($user->id);
|
||||
publish_model_event(ModelEventEnum::USER_UPDATED, $user->id);
|
||||
$subject = nexus_trans("cleanup.msg_warning_removed", [], $locale);
|
||||
$msg = nexus_trans("cleanup.msg_your_warning_removed", [], $locale);
|
||||
Message::add([
|
||||
'sender' => 0,
|
||||
'receiver' => $user->id,
|
||||
'added' => now(),
|
||||
'subject' => $subject,
|
||||
'msg' => $msg,
|
||||
]);
|
||||
}
|
||||
if (!empty($userModifyLogs)) {
|
||||
UserModifyLog::query()->insert($userModifyLogs);
|
||||
}
|
||||
do_log("remove warning of users, success handle user count: " . $users->count());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user