Help.class.php
4.78 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
/**
* Created by PhpStorm.
* User: zhonglei
* Date: 2017/6/21
* Time: 17:14
*/
namespace Common\Common;
use Com\Cache as ComCache;
use Common\Service\ConfigService;
use Common\Service\SettingService;
class Help
{
/**
* 实例化
* @return Help
*/
public static function &instance()
{
static $instance;
if (empty($instance)) {
$instance = new self();
}
return $instance;
}
/**
* 获取用户所在部门以及父级部门的ID集合
*
* @param array $user
*
* @return array
*/
public function get_user_dp_list($user = [])
{
$dpIds = [];
// 部门ID
if (isset($user['dpName']) && !empty($user['dpName'])) {
$myDpIds = array_column($user['dpName'], 'dpId');
$dpServ = &Department::instance();
$parentDpIds = [];
// 取父级部门ID
foreach ($myDpIds as $myDpId) {
$dpServ->list_parent_cdids($myDpId, $parentDpIds);
}
$dpIds = array_unique(array_merge($myDpIds, array_values($parentDpIds)));
}
return $dpIds;
}
/**
* 获取是否用户发起话题权限
* @param array $user 用户详情
* @return array 后台设置权限以及当前用户是否有权限发布话题
*/
public function setting_auth($user = [])
{
$setting = Config::instance()->getCacheData();
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_FALSE;
// 我所在部门和所有父级部门
$dp_ids = $this->get_user_dp_list($user);
// 如果不是全公司
if ($setting['right']['is_all'] != Constant::SETTING_ALL_AUTH) {
// 如果设置了人员
if (!empty($setting['right']['user_list'])) {
// 获取权限中的人员集合
$setting_auth_uids = array_column($setting['right']['user_list'], 'uid');
// 如果存在交集
if (in_array($user['memUid'], $setting_auth_uids)) {
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
return $setting;
}
}
// 如果设置了部门
if (!empty($setting['right']['dp_list'])) {
// 获取权限中的部门集合
$setting_auth_dp_ids = array_column($setting['right']['dp_list'], 'dp_id');
// 如果存在交集
if (array_intersect($dp_ids, $setting_auth_dp_ids)) {
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
}
}
// 如果设置了岗位
if (!empty($setting['right']['job_list '])) {
// 获取权限中的岗位集合
$setting_auth_job_ids = array_column($setting['right']['job_list '], 'job_id');
// 如果包含则有权限
if (in_array($user['job']['jobId'], $setting_auth_job_ids)) {
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
}
}
// 如果设置了角色
if (!empty($setting['right']['role_list '])) {
// 获取权限中的岗位集合
$setting_auth_role_ids = array_column($setting['right']['role_list '], 'role_id');
// 如果包含则有权限
if (in_array($user['role']['roleId'], $setting_auth_role_ids)) {
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
}
}
// 如果设置了标签
if (!empty($setting['right']['tag_list'])) {
$setting_auth_tag_ids = array_column($setting['right']['tag_list'], 'tag_id');
// 调用SDK获取用户列表
$memList = Tag::instance()->listUserByTagId($setting_auth_tag_ids);
// 获取用户UIDS
$ucMemUids = array_filter(array_column($memList['list'], 'memUid'));
if (in_array($user['memUid'], $ucMemUids)) {
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
return $setting;
}
// 获取部门IDS
$ucDpIds = array_filter(array_column($memList['list'], 'dpId'));
// 如果存在交集
if (array_intersect($dp_ids, $ucDpIds)) {
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
return $setting;
}
}
} else {
// 如果是全公司则有权限
$setting['push_topic_auth'] = Constant::PUSH_TOPIC_AUTH_TRUE;
}
// 我的标签
return $setting;
}
}