Account.php
2.21 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/**
* Created by PhpStorm.
* User: Hanson
* Date: 2016/12/13
* Time: 20:56
*/
namespace Hanson\Robot\Collections;
use Illuminate\Support\Collection;
class Account extends Collection
{
/**
* @var Account
*/
static $instance = null;
const NORMAL_MEMBER = 'normal_member';
const GROUP_MEMBER = 'group_member';
/**
* create a single instance
*
* @return Account
*/
public static function getInstance()
{
if(static::$instance === null){
static::$instance = new Account();
}
return static::$instance;
}
/**
* 增加群聊天
*
* @param $groupMember
*/
public function addGroupMember($groupMember)
{
$account = static::$instance->all();
$account[static::GROUP_MEMBER][] = $groupMember;
static::$instance->make($account);
}
/**
* 增加联系人聊天
*
* @param $normalMember
*/
public function addNormalMember($normalMember)
{
$account = static::$instance->all();
$account[static::NORMAL_MEMBER][] = $normalMember;
static::$instance->make($account);
}
/**
* 获取联系人名称
*
* @param string $id
* @param string $type 群或者联系人
* @param bool $prefer 返回最佳名称或名称数组
* @return array|null
*/
public function getContactName($id, $type, $prefer = false)
{
$target = static::$instance->get($type);
$user = $target[$id];
$name = [];
if(isset($user['RemarkName'])){
$name['remarkName'] = $user['RemarkName'];
}
if(isset($user['NickName'])){
$name['nickName'] = $user['NickName'];
}
if(isset($user['DisplayName'])){
$name['displayName'] = $user['DisplayName'];
}
if(!$name){
return null;
}
return $prefer ? current($name) : $name;
}
/**
* 获取联系人
*
* @param $id
* @param string $type 类型
* @return array
*/
public function getContact($id, $type)
{
$target = static::$instance->get($type);
return $target[$id] ?? null;
}
}