MemberAttr.class.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
<?php
/**
* Member.class.php
* 用户接口操作类
*
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @copyright Copyright (c) 2014 - ? VcySDK (http://www.vchangyi.com/)
* @author zhonglei
* @version 1.0.0
*/
namespace VcySDK;
use Common\Service\UserService;
class MemberAttr
{
/**
* 属性类型,默认属性
*/
const ATTR_TYPE_DEFAULT = 1;
/**
* 属性类型,扩展属性
*/
const ATTR_TYPE_EXT = 2;
/**
* 获取扩展属性列表
*
* @return array
*/
public function getExtList()
{
$user_attrs = cfg('USER_ATTRS');
$ext_attrs = [];
foreach ($user_attrs as $k => $v) {
if ($v['attr_type'] == self::ATTR_TYPE_EXT) {
$ext_attrs[$k] = $v;
}
}
return $ext_attrs;
}
/**
* 分离用户数据中的默认属性和扩展属性
*
* @param array $data 用户数据
* @return array
*/
public function splitAttr($data)
{
// 系统规定的扩展字段
$extAttrsField = self::getExtList();
// 后台设置的扩展字段
$extAttrs = array_combine_by_key((new UserService())->getAttrList(true, [], false, false), 'field_name');
// 最后的扩展字段
$array = array_intersect(array_keys($data), array_keys($extAttrsField));
if ($array) {
$ext_data = [];
foreach ($array as $k) {
$ext_data[$k] = $data[$k];
unset($data[$k]);
}
return [$data, $ext_data, $extAttrs];
} else {
return [$data, [], $extAttrs];
}
}
/**
* 格式化扩展属性数据
*
* @param string $uid 用户UID
* @param array $data 扩展属性数据
* @return array
*/
public function formatExtData($uid, $data)
{
if ($uid) {
$extData = [];
foreach ($data as $k => $v) {
$extData[] = [
'memUid' => $uid,
'extKey' => $k,
'extValue' => $v,
];
}
return $extData;
}
return [];
}
}