MyListController.class.php
3.67 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
<?php
/**
* 【调研中心-手机端】02_我的调研列表
* MyListController.class.php
* CreateBy:daijun
* Date:2017-03-10
*/
namespace Api\Controller\Questionnaire;
use Common\Service\BaseinfoService;
use Common\Service\AnswerService;
class MyListController extends \Api\Controller\AbstractController
{
public function Index()
{
// 获取参数
$params = I('post.');
// 判断分页参数是否为空,为空赋默认值
$page = !empty($params['page']) ? rintval($params['page']) : self::DEFAULT_PAGE;
$limit = !empty($params['limit']) ? rintval($params['limit']) : self::DEFAULT_LIMIT;
// 分页
list($start, $limit) = page_limit($page, $limit);
// 调研回答记录Service
$answer_s = new AnswerService();
// 获取总数
$total = $answer_s->count_by_conds(['uid' => $this->uid]);
$list = [];
if ($total) {
// 分页参数
$page_option = [$start, $limit];
// 排序方式:填写时间倒序
$order_by['created'] = 'DESC';
// 查询字段
$fields = 'qu_id,created';
// 获取列表
$list = $answer_s->list_by_conds(['uid' => $this->uid], $page_option, $order_by, $fields);
}
// 数据格式化
$list = $this->format_data($list);
$this->_result = [
'page' => $page,
'limit' => $limit,
'total' => rintval($total),
'list' => $list
];
}
/**
* 格式化数据
*
* @param array $data 分类列表数据
*
* @return mixed
*/
private function format_data($data = [])
{
$list = [];
if (empty($data)) {
return $list;
}
// 初始化调研基本信息Service
$base_info_s = new BaseinfoService();
// 用户所答题的提问id集合
$qu_ids = array_unique(array_column($data, 'qu_id'));
// 调研列表
$base_list = $base_info_s->list_by_conds(['qu_id' => $qu_ids]);
// 将调研列表信息转换成以调研ID为key的数组
$base_list = array_combine_by_key($base_list, 'qu_id');
// 获取分类列表数据
$class_list = $base_info_s->get_classify_list();
// 将调研类型信息转换成以类型ID为key的数组
$class_list = array_combine_by_key($class_list, 'qc_id');
foreach ($data as $val) {
// 调研基本信息
$base_info = $base_list[$val['qu_id']];
// 所属分类
$qc_name = '';
if (!empty($class_list[$base_info['qc_id']])) {
$qc_name = $class_list[$base_info['qc_id']]['qc_name'];
}
// 调研状态
if ($base_info['deadline'] >= MILLI_TIME) {
// 进行中
$qu_status = BaseinfoService::FRONTEND_QU_STATUS_ING;
} else {
// 已结束
$qu_status = BaseinfoService::FRONTEND_QU_STATUS_END;
}
// 组装返回数据
$list[] = [
'qu_id' => rintval($val['qu_id']),
'title' => $base_info['title'],
'created' => rintval($val['created']), // 填写时间
'deadline' => rintval($base_info['deadline']),
'anonymous' => rintval($base_info['anonymous']),
'qu_status' => $qu_status, // 调研状态
'qc_name' => $qc_name // 所属分类
];
}
return $list;
}
}