InfoController.class.php
5.13 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
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 17/7/26
* Time: 14:08
*/
namespace Api\Controller\Customtask;
use Common\Common\Constant;
use Common\Common\Integral as IntegralCom;
use Common\Common\TaskHelper;
use Common\Service\CustomtaskService;
use Common\Service\CustomtaskContentService;
use Common\Service\CustomtaskRightService;
use Common\Service\UserContentService;
use Common\Service\UserTaskService;
class InfoController extends \Api\Controller\AbstractController
{
/**
* Info
* @author liyifei
* @desc 常规任务详情接口
* @param Int customtask_id:true 常规任务ID
* @return array
array(
'customtask_id' => 1, // 任务ID
'task_name' => '电商冲击,实体店靠什么赢', // 任务标题
'task_status' => 4, // 任务状态(3=进行中;4=已结束;5=已终止)
'start_time' => 1491897290000, // 任务开始时间
'end_time' => 1491897290001, // 任务结束时间
'send_time' => 1491897290001, // 发布时间
'is_reward' => 1, // 是否发放激励(1=不发放;2=发放)
'reward_setting' => array( // 激励设置(is_reward=1时,此参数值为空字符串)
'type' => 1, // 激励类型(1=勋章;2=积分)
'integral' => 0, // 积分数(type=2时,返回该参数,否则不返回)
'medals' => array( // 勋章信息(type=1时,返回该参数,否则不返回)
'im_id' => 3, // 勋章ID
'icon' => 'http://qy.vchangyi.com/icon.jpg', // 勋章图标URL或者前端路径
'icon_type' => 1, // 勋章图标来源(1=用户上传;2=系统预设)
'name' => '勋章1', // 勋章名称
'desc' => '这是一个勋章', // 勋章描述
),
),
'description' => '这是一个任务描述', // 任务描述
'total_task' => 10, // 总任务数
'complete_task' => 3, // 已完成的任务数
'my_rank' => 10, // 我的排名(排名为0时,前端页面不显示排名数)
);
*/
public function Index_post()
{
$customtaskId = I('post.customtask_id', 0, 'intval');
if ($customtaskId == 0) {
E('_ERR_CUSTOMTASK_ID_IS_EMPTY');
}
// 常规任务详情
$customtaskServ = new CustomtaskService();
$customtask = $customtaskServ->get($customtaskId);
if (empty($customtask)) {
E('_ERR_CUSTOMTASK_NOT_FOUND');
} elseif (in_array($customtask['task_status'], [Constant::CUSTOMTASK_STATUS_DRAFT, Constant::CUSTOMTASK_STATUS_UNSTART])) {
E('_ERR_CUSTOMTASK_TASK_STATUS_ABNORMAL');
}
// 登录人员
$user = $this->_login->user;
// 是否有权限查看
$rightServ = new CustomtaskRightService();
$checkRes = $rightServ->checkUserRight($user, $customtaskId);
if (!$checkRes) {
E('_ERR_CUSTOMTASK_DONT_HAVE_RIGHT');
}
// 用户是否已领取进行中的任务,未领取时自动领取
$userContentServ = new UserContentService();
if ($customtask['task_status'] == Constant::CUSTOMTASK_STATUS_PROCESS) {
$userTaskTotal = $userContentServ->count_by_conds([
'uid' => $user['memUid'],
'customtask_id' => $customtaskId,
]);
if ($userTaskTotal == 0) {
$taskHelper = &TaskHelper::instance();
$taskHelper->buildNewCustomtask($user);
}
}
// 激励开启,反序列化激励设置
if ($customtask['is_reward'] == Constant::CUSTOMTASK_REWARD_OPEN && !empty($customtask['reward_setting'])) {
$reward = unserialize($customtask['reward_setting']);
// 激励设置为勋章时,补全勋章信息
if ($reward['type'] == Constant::REWARD_TYPE_MEDAL && !empty($reward['medal_id'])) {
$integralServ = &IntegralCom::instance();
$medals = $integralServ->listMedal($reward['medal_id']);
$reward['medals'] = $medals[0];
unset($reward['medal_id']);
}
$customtask['reward_setting'] = $reward;
}
// 总任务数
$contentServ = new CustomtaskContentService();
$customtask['total_task'] = $contentServ->count_by_conds(['customtask_id' => $customtaskId]);
// 已完成的任务数
$customtask['complete_task'] = $userContentServ->count_by_conds([
'uid' => $user['memUid'],
'customtask_id' => $customtaskId,
'content_status' => Constant::USER_CONTENT_STATUS_COMPLETE,
]);
// 我的排名
$userTaskServ = new UserTaskService();
$customtask['my_rank'] = $userTaskServ->getMyRank($user['memUid'], $customtaskId);
$this->_result = $customtask;
}
}