2022-12-30 11:36:57 +00:00
|
|
|
<?php
|
|
|
|
|
2023-01-13 14:11:56 +00:00
|
|
|
namespace App\Jobs\User;
|
2022-12-30 11:36:57 +00:00
|
|
|
|
|
|
|
use App\Models\User;
|
|
|
|
use App\Models\UserGroup;
|
2023-01-13 14:11:56 +00:00
|
|
|
use App\Notifications\User\TodayIsUserBirthday;
|
2022-12-30 11:36:57 +00:00
|
|
|
use Illuminate\Bus\Queueable;
|
|
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
|
|
use Illuminate\Queue\SerializesModels;
|
|
|
|
|
|
|
|
class SetBirthdayGroupJob implements ShouldQueue
|
|
|
|
{
|
|
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new job instance.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
//
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Execute the job.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function handle(): void
|
|
|
|
{
|
2023-01-10 13:42:27 +00:00
|
|
|
$birthday_group = (new UserGroup)->find(config('settings.user_groups.birthday_group_id'));
|
2022-12-30 11:36:57 +00:00
|
|
|
|
2023-01-30 16:14:07 +00:00
|
|
|
if (! $birthday_group) {
|
2022-12-30 11:36:57 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-12-31 08:49:58 +00:00
|
|
|
// 先撤销原来的
|
2023-01-10 13:42:27 +00:00
|
|
|
(new User)->where('user_group_id', $birthday_group->id)->update(['user_group_id' => null]);
|
2022-12-31 08:49:58 +00:00
|
|
|
|
2023-01-10 13:42:27 +00:00
|
|
|
(new User)->birthday()->whereNull('user_group_id')->chunk(100, function ($users) use ($birthday_group) {
|
2022-12-30 11:36:57 +00:00
|
|
|
foreach ($users as $user) {
|
2022-12-31 08:49:58 +00:00
|
|
|
$user->user_group_id = $birthday_group->id;
|
|
|
|
$user->save();
|
2022-12-30 13:26:46 +00:00
|
|
|
|
2022-12-30 12:55:45 +00:00
|
|
|
$user->notify(new TodayIsUserBirthday());
|
2022-12-30 11:36:57 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|