ListController.class.php 5.11 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 17/10/11
 * Time: 17:41
 */
namespace Apicp\Controller\Questionnaire;

use Common\Common\Constant;
use Common\Common\QuestionnaireHelper;
use Common\Common\User;

class ListController extends \Apicp\Controller\AbstractController
{
    /**
     * List
     * @author daijun
     * @desc 员工调研明细列表
     * @param Int page:1 当前页
     * @param Int limit:20 当前页条数
     * @param String uid:true 用户uid
     * @return array
               array(
                    'user' => array( // 人员数据
                        'uid' => 'B4BD47577F000001053A50235DC5B1BB', // 用户uid
                        'userface' => 'http://p.qlogo.cn/bizmail/FZaQ9jwGLMdFlI84NwMVWCCcZsnxPwXrdkcWWWZTrWS8BAwYMW7yQQ/0', // 头像
                        'username' => '李四', // 姓名
                        'dp_names' => array('开发组', '测试组'), // 组织
                        'job' => 'PHP工程师', // 岗位
                        'role' => 'leader', // 角色
                    ),
                    'page' => 1, // 当前页
                    'limit' => 20, // 当前页条数
                    'total' => 100, // 总条数
                    'list' => array( // 列表数据
                        array(
                            'a_id' => 101,  // 问卷回答记录id
                            'qu_id' => 5,  // 问卷id
                            'title' => '圆圈logo征集', // 调研名称
                            'qc_name' => '调查类', // 所属分类
                            'deadline' => 1506787200000, // 截止时间(时间戳:毫秒)
                            'anonymous' => '2', // 是否匿名(1:否,2:是)
                            'writetime' => 1506787100000, // 填写时间
                        ),
                    ),
               )
     */
    public function Index_post()
    {

        $params = I('post.');

        if(empty($params['uid'])){
            E('_EMPTY_UID');
        }

        // 分页
        $page = !empty($params['page']) ? $params['page'] : Constant::PAGING_DEFAULT_PAGE;
        $limit = !empty($params['limit']) ? $params['limit'] : Constant::PAGING_DEFAULT_LIMIT;

        list($start, $limit, $page) = page_limit($page, $limit);

        $questionnaire_helper = & QuestionnaireHelper::instance();

        // 分页参数
        $page_option = array($start, $limit,);
        // 填写时间倒序
        $order_option = array('created' => 'DESC');
        // 查询条件
        $conds = array(
            'uid' => $params['uid'],
            'data_type' => Constant::DATA_TYPE_NOMAL
        );

        $total = $questionnaire_helper->count_answer($conds);

        $answer_list = array();
        $qu_list = array();
        $classify_list = array();
        if($total){
            // 查询回答记录
            $answer_list = $questionnaire_helper->list_answer($conds,$page_option,$order_option,'a_id,qu_id,uid,created');
            // 获取问卷id集合
            $qu_ids = array_unique(array_column($answer_list,'qu_id'));
            // 查询问卷基本信息
            $qu_list = $questionnaire_helper->list_baseinfo(array('qu_id' => $qu_ids,'qu_type' => 1),'qu_id,title,deadline,qc_id,anonymous');
            $qu_list = array_combine_by_key($qu_list,'qu_id');
            // 获取问卷分类id集合
            $qc_ids = array_unique(array_column($qu_list,'qc_id'));
            // 获取问卷分类列表
            $classify_list = $questionnaire_helper->list_classify(array('qc_id'=>$qc_ids),'qc_id,qc_name');
            $classify_list = array_combine_by_key($classify_list,'qc_id');
        }

        $list = array();
        // 返回数据格式化
        foreach ($answer_list as $v){
            $data = array();
            // 组装问卷id、回答记录id、填写时间
            $data['a_id'] = $v['a_id'];
            $data['qu_id'] = $v['qu_id'];
            $data['writetime'] = $v['created'];

            // 获取问卷标题、截止时间、是否匿名
            $qu_info = $qu_list[$v['qu_id']];
            $data['title'] = $qu_info['title'];
            $data['deadline'] = $qu_info['deadline'];
            // 此处数据库的字段与返回值字段刚好相反
            $data['anonymous'] = $qu_info['anonymous'] == 1 ? 2 : 1;

            // 获取分类信息
            $class_info = $classify_list[$qu_info['qc_id']];
            $data['qc_name'] = $class_info['qc_name'];

            $list[] = $data;
        }

        $user = &User::instance()->getByUid($params['uid']);

        $this->_result = [
            'user' => [
                'uid' => $params['uid'],
                'username' => $user['memUsername'],
                'userface' => $user['memFace'],
                'dp_names' => isset($user['dpName']) && !empty($user['dpName']) ? array_column($user['dpName'], 'dpName') : [],
                'job' => $user['memJob'],
                'role' => $user['memRole'],
            ],
            'page' => (int)$page,
            'limit' => (int)$limit,
            'total' => (int)$total,
            'list' => $list
        ];
    }
}