ListController.class.php 4.1 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 17/7/26
 * Time: 14:08
 */

namespace Apicp\Controller\Customtask;

use Com\PackageValidate;
use Common\Common\Constant;
use Common\Service\CustomtaskService;

class ListController extends \Apicp\Controller\AbstractController
{
    /**
     * List
     * @author liyifei
     * @desc 常规任务列表接口
     * @param Int page:1 当前页
     * @param Int limit:20 当前页条数
     * @param String task_name 任务名称
     * @param Int start_time 任务开始时间
     * @param Int end_time 任务结束时间
     * @param Int task_status 任务状态(1=草稿;2=未开始;3=进行中;4=已结束;5=已终止)
     * @param Int up_start_time 更新开始时间
     * @param Int up_end_time 更新结束时间
     * @return array
                array(
                    'page' => 1, // 当前页
                    'limit' => 20, // 当前页条数
                    'total' => 100, // 总条数
                    'list' => array( // 列表数据
                        array(
                            'customtask_id' => 1, // 任务ID
                            'task_name' => '电商冲击,实体店靠什么赢', // 任务标题
                            'start_time' => 1491897290000, // 任务开始时间
                            'end_time' => 1491897290001, // 任务结束时间
                            'complete_total' => 10, // 已完成任务总人数
                            'user_total' => 100, // 参与任务总人数
                            'task_status' => 1, // 任务状态
                            'update_time' => 1491897290002, // 最后更新时间
                        ),
                    ),
                )
     */
    public function Index_post()
    {
        // 验证规则
        $rules = [
            'page' => 'integer',
            'limit' => 'integer',
            'task_name' => 'max:64',
            'start_time' => 'integer',
            'end_time' => 'integer',
            'task_status' => 'integer|in:1,2,3,4,5',
            'up_start_time' => 'integer',
            'up_end_time' => 'integer',
        ];

        // 验证数据
        $validate = new PackageValidate($rules, [], array_keys($rules));
        $postData = $validate->postData;

        // 组合条件
        $conds = [];
        if (isset($postData['task_name'])) {
            $conds['task_name like ?'] = "%{$postData['task_name']}%";
        }
        if (isset($postData['start_time'])) {
            $conds['start_time >= ?'] = $postData['start_time'];
        }
        if (isset($postData['end_time'])) {
            $conds['end_time <= ?'] = $postData['end_time'];
        }
        if (isset($postData['task_status'])) {
            if (Constant::CUSTOMTASK_STATUS_END == $postData['task_status']) {
                $conds['task_status'] = [
                    Constant::CUSTOMTASK_STATUS_END,
                    Constant::CUSTOMTASK_STATUS_STOP
                ];
            } else {
                $conds['task_status'] = $postData['task_status'];
            }
        }
        if (isset($postData['up_start_time'])) {
            $conds['update_time >= ?'] = $postData['up_start_time'];
        }
        if (isset($postData['up_end_time'])) {
            $conds['update_time <= ?'] = $postData['up_end_time'];
        }

        // 分页
        $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'];

        // 列表
        $taskServ = new CustomtaskService();
        $list = $taskServ->list_by_conds($conds, [$start, $perpage], $order_option);

        // 数据总数
        $total = $taskServ->count_by_conds($conds);

        $this->_result = [
            'page' => $postData['page'],
            'limit' => $postData['limit'],
            'total' => intval($total),
            'list' => $list,
        ];
    }
}