RightService.class.php
2.52 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
<?php
/**
* 试卷-权限表
* @author: houyingcai
* @email: 594609175@qq.com
* @date : 2017-05-19 17:50:52
*/
namespace Common\Service;
use Common\Common\Department;
use Common\Common\Job;
use Common\Common\Role;
use Common\Common\Tag;
use Common\Common\User;
use Common\Model\RightModel;
class RightService extends AbstractService
{
// 构造方法
public function __construct()
{
$this->_d = new RightModel();
parent::__construct();
}
/**
* 获取当前用户的标签,部门,岗位,用户ID
*
* @author 英才
*
* @param array $user 传入当前用户信息
*
* @return array
*/
public function get_by_right($user = [])
{
// 获取用户所在部门ID以及上级部门ID
$dpIds = $this->get_user_dp_list($user);
// 获取用户岗位ID
$job_ids = [];
if (!empty($user['job']['jobId'])) {
$job_ids = $user['job']['jobId'];
}
// 获取用户角色ID
$role_ids = [];
if (!empty($user['role']['roleId'])) {
$role_ids = $user['role']['roleId'];
}
// 获取用户标签ID
$tagIds = [];
$tagsInfo = User::instance()->getTagsByUserId($user['memUid']);
if (!empty($tagsInfo)) {
$userTagInfo = isset($tagsInfo['userTagList']) ? array_column($tagsInfo['userTagList'], 'tagId') : [];
$departTagInfo = isset($tagsInfo['departTagList']) ? array_column($tagsInfo['departTagList'], 'tagId') : [];
$tagIds = array_unique(array_merge($userTagInfo, $departTagInfo));
}
return [
'memID' => $user['memUid'],
'dpIds' => $dpIds,
'jobIds' => $job_ids,
'roleIds' => $role_ids,
'tagIds' => $tagIds
];
}
/**
* 获取用户所在部门以及父级部门的ID集合
*
* @param array $user
*
* @return array
*/
private 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;
}
}