RemindController.class.php
2.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
<?php
/**
* 定时提醒定时回调
*/
namespace Frontend\Controller\Callback;
use Common\Common\Msg;
use Common\Service\AnswerService;
use Common\Service\BaseinfoService;
use Common\Service\RecordService;
use Common\Service\RightService;
use Common\Service\ViewrangeService;
use VcySDK\Message;
use VcySDK\Service;
class RemindController extends AbstractController
{
/**
* @var RecordService 调研回答信息表
*/
protected $_record_s;
/**
* @var RightService 调研权限信息表
*/
protected $_view_s;
/**
* @var BaseinfoService 调研基本信息
*/
protected $_baseinfo_s;
/**
* @var AnswerService 用户回复信息表
*/
protected $_answer_s;
public function before_action($action = '')
{
if (!parent::before_action($action)) {
return false;
}
// 实例化活动表
$this->_baseinfo_s = new BaseinfoService();
$this->_answer_s = new AnswerService();
$this->_record_s = new RecordService();
$this->_view_s = new RightService();
return true;
}
public function Index()
{
// 获取需要发送的活动id
$back = $this->callBackData;
$qu_id = $back['qu_id'];
// 非空判断
if (empty($qu_id)) {
return true;
}
// 获取调研基本详情
$data = $this->_baseinfo_s->get($qu_id);
if (empty($data)) {
return true;
}
// 获取应参与人的列表
$all_users = $this->_view_s->list_user($qu_id, $data['is_all']);
// 查询已经参与问卷的用户记录信息
$answer_list = $this->_answer_s->list_by_conds(['qu_id' => $qu_id]);
// 已参与人 uid集合
$join_users = array_unique(array_filter(array_column($answer_list, 'uid')));
// 未参与人uid集合
$no_join_users = array_diff($all_users, $join_users);
sort($no_join_users);
// 无需发送消息的情况
if (empty($no_join_users)) {
return true;
}
$toUser = implode('|', $no_join_users);
$articles = [
[
'title' => '【培训调研】' . $data['title'],
'description' => '该调研将于' . $data['remind'] . '分钟后截止,请尽快填写完毕',
'url' => oaUrl('Frontend/Index/QuestionnaireView/Index', ['qu_id' => $qu_id]),
'picUrl' => ''
]
];
// 发送消息
$msg = new Msg();
$msg->sendNews($toUser, '', '', $articles, $safe = 0);
return true;
}
}