ImFixCommand.php
2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
namespace App\Console\Commands;
use App\Helpers\IMHelper;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Arr;
class ImFixCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'im:fix';
/**
* The console command description.
*
* @var string
*/
protected $description = 'IM 用户同步';
/**
* Execute the console command.
*
* @return int
* @throws \Exception
*/
public function handle(): int
{
User::with(['business:id,nick_name,avatar', 'artTags:id,name'])->select(['id', 'nick_name', 'avatar', 'business_id', 'chat_mode', 'identity'])
->where('audit_status', 1)->chunkById(100, function (Collection $collection) {
$result = IMHelper::checkAccount($collection->modelKeys())->json('ResultItem', []);
$checkUser = Arr::pluck($result, 'AccountStatus', 'UserID');
$collection->each(function (User $user) use ($checkUser) {
if (isset($checkUser[IMHelper::userKeyToAccount($user->getKey())]) && $checkUser[IMHelper::userKeyToAccount($user->getKey())] === 'NotImported') {
$data = IMHelper::importSingleAccount($user->getKey(), [
'chat_mode' => $user->getAttribute('chat_mode'),
'nickName' => $user->getAttribute('nick_name'),
'business' => $user->getAttribute('business'),
'artTag' => $user->getAttribute('artTags'),
'identity' => $user->getAttribute('identity')
], $user->getAttribute('avatar') ?? '');
$this->info($user->getKey() . ':' . json_encode($data->json(), JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE));
}
});
});
return self::SUCCESS;
}
}