CompleteListController.class.php
4.86 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
<?php
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 17/7/26
* Time: 14:08
*/
namespace Api\Controller\Customtask;
use Com\PackageValidate;
use Common\Common\Constant;
use Common\Common\Integral;
use Common\Service\CustomtaskService;
use Common\Service\UserTaskService;
class CompleteListController extends \Api\Controller\AbstractController
{
/**
* CompleteList
* @author tangxingguo
* @desc 已完成常规任务列表接口
* @param Int page 页码
* @param Int limit 每页数据条数
* @return array
array(
'page' => 1, // 页码
'limit' => 20, // 每页数据条数
'total' => 100, // 数据总数
'list' => array(
'customtask_id' => 1, // 任务ID
'task_name' => '艰难的任务', // 任务名称
'update_time' => 1501724335242, // 任务最后更新时间
'is_reward' => 1, // 是否发放激励(1=不发放;2=发放)
'reward_setting' => array( // 激励设置(is_reward=1时,此参数值为空字符串)
'type' => 1, // 激励类型(1=勋章;2=积分)
'medal_id' => 'xxx', // 勋章ID
'medal_name' => '荣耀王者', // 勋章名
'integral' => 0, // 积分数
),
),
);
*/
public function Index_post()
{
// 验证规则
$rules = [
'page' => 'integer',
'limit' => 'integer',
];
// 验证数据
$validate = new PackageValidate($rules, [], array_keys($rules));
$postData = $validate->postData;
// 完成任务的总数
$userTaskServ = new UserTaskService();
$total = $userTaskServ->count_by_conds(['uid' => $this->uid, 'complete_status' => Constant::USER_TASK_COMPLETE_STATUS_COMPLETE]);
// 任务列表
$list = [];
if ($total > 0) {
// 分页
$postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
$postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;
list($start, $perpage) = page_limit($postData['page'], $postData['limit']);
// 已完成的常规任务
$order_option = ['update_time' => 'DESC'];
$myTasks = $userTaskServ->list_by_conds(['uid' => $this->uid, 'complete_status' => Constant::USER_TASK_COMPLETE_STATUS_COMPLETE], [$start, $perpage], $order_option);
if (!empty($myTasks)) {
// 取常规任务信息
$taskIds = array_column($myTasks, 'customtask_id');
$taskServ = new CustomtaskService();
$taskList = $taskServ->list_by_conds(['customtask_id' => $taskIds]);
$taskList = array_combine_by_key($taskList, 'customtask_id');
// 勋章
$IntegralServ = new Integral();
$integralList = $IntegralServ->listMedal();
if (!empty($integralList)) {
$integralList = array_combine_by_key($integralList, 'im_id');
}
// 合并勋章、标题
foreach ($myTasks as $v) {
if (isset($taskList[$v['customtask_id']])) {
$task = $taskList[$v['customtask_id']];
$rewardSetting = empty($task['reward_setting']) ? [] : unserialize($task['reward_setting']);
if (isset($rewardSetting['type']) && $rewardSetting['type'] == Constant::REWARD_TYPE_MEDAL) {
// 勋章ID
$mId = $rewardSetting['medal_id'];
$rewardSetting['medal_name'] = isset($integralList[$mId]) ? $integralList[$mId]['name'] : '';
$rewardSetting['medal_url'] = isset($integralList[$mId]) ? $integralList[$mId]['icon'] : '';
$rewardSetting['medal_type'] = isset($integralList[$mId]) ? $integralList[$mId]['icon_type'] : '';
}
$list[] = [
'customtask_id' => $v['customtask_id'],
'task_name' => $task['task_name'],
'update_time' => $v['update_time'],
'is_reward' => $task['is_reward'],
'reward_setting' => $rewardSetting,
];
}
}
}
}
$this->_result = [
'page' => $postData['page'],
'limit' => $postData['limit'],
'total' => intval($total),
'list' => $list,
];
}
}