<?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, ]; } }