RemindController.class.php
2.84 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
<?php
/**
* 未读人员提醒
* RemindController.class.php
* @author: 何岳龙
* @date : 2017年5月31日16:48:05
* @version $Id$
*/
namespace Apicp\Controller\Answer;
use Common\Service\AnswerService;
use Common\Service\PaperService;
class RemindController extends AbstractController
{
/** @var PaperService 实例化考试表对象 */
protected $paper_service;
/** @var AnswerService 实例化答卷表对象 */
protected $answer_service;
public function before_action($action = '')
{
if (!parent::before_action($action)) {
return false;
}
$this->paper_service = new PaperService();
$this->answer_service = new AnswerService();
return true;
}
public function Index_post()
{
$params = I('post.');
$ep_id = rintval($params['ep_id']);
// UIDS不能为空
if (!empty($params['uids'])) {
$uids = array_unique(array_filter(array_column($params['uids'], 'uid')));
// 如果UID不存在
if (empty($uids)) {
E('_EMPTY_UID');
}
}
// 试卷ID不能为空
if (empty($ep_id)) {
E('_EMPTY_EP_ID');
}
// 获取试卷信息
$paper = $this->paper_service->get($ep_id);
// 试卷不存在
if (empty($paper)) {
E('_ERR_PAPER_NOT_FOUND');
}
// 如果考试已终止
if ($paper['exam_status'] == PaperService::PAPER_STOP) {
E('_ERR_EXAM_STOP');
}
// 如果考试已结束
if ($paper['end_time'] <= MILLI_TIME) {
E('_ERR_EXAM_END');
}
// 如果未读人员列表为空
if (empty($params['uids'])) {
$conds = [
'epc_id' => $ep_id,
'er_type' => AnswerService::RIGHT_PAPER
];
// 获取未参与考试人员列表及人数
$unjoin_data = $this->answer_service->get_unjoin_data($conds, $ep_id, $paper['is_all']);
// 未参加人的列表
$list = $unjoin_data['unjoin_list'];
sort($list);
} else {
// 获取用户IDS
$list = array_unique(array_filter(array_column($params['uids'], 'uid')));
}
// 消息提醒
$data = [
'uids' => $list,
'name' => $paper['ep_name'],
'description' => $paper['intro'],
'img_id' => $paper['cover_id'],
'is_cover_open'=>$paper['is_cover_open'],
'id' => $paper['ep_id'],
'begin_time' => $paper['begin_time'],
'end_time' => $paper['end_time']
];
// 给未读人员发送消息
$this->answer_service->send_msg($data, AnswerService::ANSWER_UN_MSG);
$this->_result = [];
return true;
}
}