MyListController.class.php 3.67 KB
<?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;
    }
}