ListController.class.php
4.72 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
<?php
/**
*【线下培训-后台】班级管理列表
*
* @author: houyingcai
* @email: 594609175@qq.com
* @date : 2017-08-29 10:08:15
* @version $Id$
*/
namespace Apicp\Controller\Team;
use Common\Service\EducationService;
use Common\Service\RightUsersService;
class ListController extends \Apicp\Controller\AbstractController
{
public function Index_post()
{
$params = I('post.');
// 默认值
$params['page'] = !empty($params['page']) ? intval($params['page']) : 1;
$params['limit'] = !empty($params['limit']) ? intval($params['limit']) : self::PAGE_LIMIT_DEFAULT;
$right_users_server = new RightUsersService();
$education_server = new EducationService();
// 培训ID不能为空
if (empty($params['ed_id'])) {
E('_EMPTY_ED_ID');
}
$education = $education_server->get($params['ed_id']);
// 培训不存在
if (empty($education)) {
E('_ERR_EDUCATION_NOT_EXIST');
}
// 获取培训状态
$ed_status = $education_server->get_ed_status($education);
// 根据部门ID集合,角色ID,岗位ID获取人员ID集合
if ($params['dpIDs'] || $params['roleID'] || $params['jobID'] || $params['memUsername']) {
$ed_uids = $right_users_server->list_uids_by_dp_job_role(
$params['dpIDs'],
$params['roleID'],
$params['jobID'],
$params['memUsername']
);
unset(
$params['dpIDs'],
$params['roleID'],
$params['jobID'],
$params['memUsername']
);
// 用户为空直接返回
if (empty($ed_uids)) {
$this->_result = [
'total' => 0,
'all_total' => 0,
'sign_total' => 0,
'unsign_total' => 0,
'page' => $params['page'],
'limit' => $params['limit'],
'list' => [],
'ed_status' => $ed_status,
'ed_is_sign_up' => $education['ed_is_sign_up'],
'ed_is_check' => $education['ed_is_check'],
'ed_is_charge' => $education['ed_is_charge'],
];
return true;
}
}
// 人员ID集合不为空
if (!empty($ed_uids)) {
$params['ru_uids'] = $ed_uids;
}
// 根据搜索条件统计班级人员数量
$total = $right_users_server->count_by_right_users($params);
$search_list = [];
// 班级人员不为空
if ($total) {
// 根据搜索条件获取班级人员列表
$search_list = $right_users_server->list_by_right_users($params);
$uids = array_column($search_list, 'ru_uid');
// 获取用户详细信息
$user_list = $right_users_server->get_all_user_by_cache($uids);
// 组装返回数组
foreach ($search_list as $k => &$v) {
$dpNames = array_column($user_list[$v['ru_uid']]['dpName'], 'dpName');
$order_num = ($params['page'] - 1) * $params['limit'] + ($k + 1);
$v['ru_id'] = intval($v['ru_id']);
$v['ed_id'] = intval($v['ed_id']);
$v['order_num'] = $order_num;
$v['memUsername'] = $user_list[$v['ru_uid']]['memUsername'];
$v['dpName'] = implode(',', $dpNames);
$v['roleName'] = $user_list[$v['ru_uid']]['memRole'];
$v['jobName'] = $user_list[$v['ru_uid']]['memJob'];
}
}
// 获取全部学员总数、已报名学员总数、未报名学员总数(不可从 education 表中获取)
$conds = ['ed_id' => $params['ed_id']];
if (!empty($ed_uids)) {
$conds['ru_uids'] = $ed_uids;
}
$all_total = (int)$right_users_server->count_by_right_users($conds);
$conds['ru_sign_status'] = RightUsersService::SIGN_STATUS_SIGNED;
$sign_total = (int)$right_users_server->count_by_right_users($conds);
$unsign_total = $all_total - $sign_total;
$this->_result = [
'total' => $total,
'all_total' => $all_total,
'sign_total' => $sign_total,
'unsign_total' => $unsign_total,
'page' => $params['page'],
'limit' => $params['limit'],
'list' => $search_list,
'ed_status' => $ed_status,
'ed_is_sign_up' => $education['ed_is_sign_up'],
'ed_is_check' => $education['ed_is_check'],
'ed_is_charge' => $education['ed_is_charge'],
];
return true;
}
}