Helper.class.php
6.01 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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<?php
/**
* Created by PhpStorm.
* User: xtong
* Date: 2017/11/29
* Time: 10:51
*/
namespace Common\Common;
class Helper
{
// 活动综合状态 :草稿
const STATUS_DRAFT = 1;
// 活动综合状态 :未开始
const STATUS_NOT_START = 2;
// 活动综合状态 :进行中
const STATUS_ING = 3;
// 活动综合状态 :已结束
const STATUS_END = 4;
// 活动综合状态 :已终止
const STATUS_STOP = 5;
// 扩展字段类型
// 文本类型
const EXT_FIELD_TEXT_TYPE = 1;
// 数字类型
const EXT_FIELD_NUMBER_TYPE = 2;
// 单选类型
const EXT_FIELD_RADIO_TYPE = 3;
// 多选类型
const EXT_FIELD_MULTI_SELECT_TYPE = 4;
// 时分类型
const EXT_FIELD_TIME_HI_TYPE = 5;
// 年月日类型
const EXT_FIELD_TIME_YMD_TYPE = 6;
// 年月日时分
const EXT_FIELD_TIME_YMD_HI_TYPE = 7;
// 多选单选选项值被选中
const EXT_FIELD_CHECK = 1;
// 是否可围观
// 全公司不可围观
const SALE_NOT_ALL_LOOK = 0;
// 全公可围观
const SALE_ALL_LOOK = 1;
// 无参加权限
const NOT_IS_JOIN_RIGHT = 0;
// 有参加权限
const IS_JOIN_RIGHT = 1;
// 移动端首页不推荐
const SALE_NOT_INDEX_RECOMMEND = 0;
// 移动端首页推荐
const SALE_INDEX_RECOMMEND = 1;
// 是否具有审核权限
// 不具有审核权限
const SALE_NOT_CHECK_AUTH = 0;
// 具有审核权限
const SALE_CHECK_AUTH = 1;
// 最大导出条数
const MAX_EXPORT_NUM = 1000;
// 用户在当前活动存在一个回帖(含删除)
const COMMENT_COUNT_ONE = 1;
// 按部门条件查询时,部门递归查询人员
const USER_DEPARTMENTCHILDRENFLAG_TRUE = 1;
// 按部门条件查询时,部门不递归查询人员
const USER_DEPARTMENTCHILDRENFLAG_FALSE = 0;
// 时分的正则表达式
const HOUR_MIN_REGULAR = '/^([01][0-9]|2[0-3]):([0-5][0-9])$/';
// 年月日的正则表达式
const YEAR_MONTH_DAY_REGULAR = '/[0-9]{4}\/([1][0-2]|[0][1-9])\/([3][0-1]|[0][1-9]|[1-2][0-9])/';
// 年月日时分的正则表达式
const YEAR_MONTH_DAY_HOUR_MIN_REGULAR = '/[0-9]{4}\/([1][0-2]|[0][1-9])\/([3][0-1]|[0][1-9]|[1-2][0-9])\s([01][0-9]|2[0-3]):([0-5][0-9])/';
/**
* 实例化
*
* @author xtong
* @return Helper
*/
public static function &instance()
{
static $instance;
if (is_null($instance)) {
$instance = new self();
}
return $instance;
}
// 构造方法
public function __construct()
{
return true;
}
/**
* 获取有权限的人员UID集合
*
* @param int $is_all 是否全公司 0=否 1=是
* @param array $uids 用户UIDS集合
* @param array $dp_ids 用户部门ID集合
* @param array $job_ids 用户岗位ID集合
* @param array $role_ids 用户角色ID集合
* @param array $is_notes_uids 不需要发消息的用户IDS集合
*
* @return array
*/
public static function get_send_msg_user($is_all = 0, $uids = [], $dp_ids = [], $job_ids = [], $role_ids = [], $is_notes_uids = [])
{
$data = [
'is_all' => $is_all,
'uids' => $uids,
'dp_ids' => $dp_ids,
'job_ids' => $job_ids,
'role_ids' => $role_ids
];
// 获取有权限的用户集合
$uids = self::list_uids_by_right($data);
// 如果有指定不提醒消息的用户UID集合
if (!empty($is_notes_uids)) {
// 取差集
$uids = array_diff($uids, $is_notes_uids);
}
sort($uids);
return $uids;
}
/**
* 获取权限表中的人员
*
* @author houyingcai
*
* @param array $right 权限数据
*
* @return array
*/
public static function list_uids_by_right($right)
{
// 初始化用户类
$userServ = &User::instance();
// 全公司
if (!empty($right['is_all'])) {
// 公司人员列表
$res_list = $userServ->listAllBasic([]);
// 返回人员id集合
return array_column($res_list, 'memUid');
}
// 初始化有权限人员id集合
$uids = isset($right['uids']) ? $right['uids'] : [];
// 处理部门
if (!empty($right['dp_ids'])) {
// 部门ID去重
$dp_ids = array_unique($right['dp_ids']);
sort($dp_ids);
// 遍历获取部门下的人员,递归查询子部门的人员
foreach ($dp_ids as $dpid) {
$params = [
'dpId' => $dpid,
'departmentChildrenFlag' => self::USER_DEPARTMENTCHILDRENFLAG_TRUE, // 按部门条件查询时,表示部门递归查询人员
];
// 部门人员列表
$userList = $userServ->listAllBasic($params);
if (!empty($userList)) {
$uids = array_merge($uids, array_column($userList, 'memUid'));
}
}
}
// 处理岗位
if (!empty($right['job_ids'])) {
$job_ids = array_unique($right['job_ids']);
sort($job_ids);
// 获取岗位人员列表
$job_list = $userServ->listAllBasic(['jobIdList' => $job_ids]);
// 岗位人员列表不为空
if (!empty($job_list)) {
$uids = array_merge($uids, array_column($job_list, 'memUid'));
}
}
// 处理角色
if (!empty($right['role_ids'])) {
$role_ids = array_unique($right['role_ids']);
sort($role_ids);
// 获取角色人员列表
$role_List = $userServ->listAllBasic(['roleIdList' => $role_ids]);
// 角色人员列表不为空
if (!empty($role_List)) {
$uids = array_merge($uids, array_column($role_List, 'memUid'));
}
}
return array_unique($uids);
}
}