ExamListController.class.php 5.14 KB
<?php
/**
 * 员工考试明细
 * User: yingcai
 * Date: 2017/10/12
 * Time: 下午12:11
 */

namespace Apicp\Controller\UserData;

use Common\Common\Constant;
use Common\Common\ExamHelper;
use Common\Common\User;

class ExamListController extends \Apicp\Controller\AbstractController
{
    /**
     * ExamList
     * @author houyingcai
     * @desc 员工考试明细
     * @param Int page:1 当前页
     * @param Int limit:20 当前页条数
     * @param String uid:true 人员UID
     * @return array
               array(
                    'user' => array( // 人员数据
                        'username' => '李四', // 姓名
                        'userface' => 'http://p.qlogo.cn/bizmail/FZaQ9jwGLMdFlI84NwMVWCCcZsnxPwXrdkcWWWZTrWS8BAwYMW7yQQ/0', // 头像
                        'dp_names' => array('开发组', '测试组'), // 组织
                        'job' => '苹果系统工程师', // 岗位
                        'role' => 'leader', // 角色
                    ),
                    'page' => 1, // 当前页
                    'limit' => 20, // 当前页条数
                    'total' => 100, // 总条数
                    'list' => array( // 列表数据
                        array(
                            'ea_id' => 123, // 答卷ID
                            'ep_id' => 1, // 试卷ID
                            'ep_name' => '入职测试', // 试卷名称
                            'ec_name' => '分类1', // 试卷所属分类名称
                            'paper_type' => 1, // 试卷使用类型(0:测评试卷,1:模拟试卷)
                            'begin_time' => 1501827237983, // 考试开始时间(毫秒级时间戳)
                            'end_time' => 1501927237983, // 考试结束时间(毫秒级时间戳)
                            'paper_time' => 300, // 考试时长(秒)
                            'my_begin_time' => 1501827237983, // 参与考试开始时间(毫秒级时间戳)
                            'my_end_time' => 1501827237983, // 参与考试结束时间(毫秒级时间戳)
                            'total' => 1, // 参与次数
                            'my_score' => '50.00', // 分数
                        ),
                    ),
               )
     */
    public function Index_post()
    {
        $params = I('post.');
        // UID不能为空
        if (empty($params['uid'])) {

            E('_EMPTY_UID');
        }

        // 获取用户信息
        $userServ = &User::instance();
        $user = $userServ->getByUid($params['uid']);
        $user_data = [
            'username' => $user['memUsername'],
            'userface' => $user['memFace'],
            'dp_names' => array_column($user['dpName'], 'dpName'),
            'job' => $user['memJob'],
            'role' => $user['memRole'],
        ];

        // 默认值
        $page = !empty($params['page']) ? intval($params['page']) : Constant::PAGING_DEFAULT_PAGE;
        $limit = !empty($params['limit']) ? intval($params['limit']) : Constant::PAGING_DEFAULT_LIMIT;

        // 分页
        list($start, $limit) = page_limit($page, $limit);

        // 分页参数
        $page_option = array($start, $limit);

        // 发布时间倒序
        $order_option = array('l.ea_id' => 'DESC');

        $exam_helper = &ExamHelper::instance();
        // 根据UID统计用户考试次数
        $total = $exam_helper->count_user_data_exam($params['uid']);
        // 根据UID获取员工考试记录
        $list = $exam_helper->list_user_data_exam($params['uid'], $page_option, $order_option);

        // 格式化数据
        $this->format_list($list);

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

    /**
     * @desc 格式化数据列表
     * @param array $list 需要格式化的数据列表
     * @return bool
     */
    private function format_list(&$list)
    {
        $exam_helper = &ExamHelper::instance();
        // 获取分类列表
        $category_list = $exam_helper->exam_category_list();
        // 获取所有的试卷ID
        $ep_ids = array_column($list, 'ep_id');

        // 根据试卷ID获取试卷信息
        $paper_list = $exam_helper->list_by_paper_ids($ep_ids);

        // 获取分类名称
        foreach ($paper_list as &$v) {
            $v['ec_name'] = $category_list[$v['ec_id']]['ec_name'];
        }

        // 组装列表数据
        foreach ($list as $key => &$val) {
            $val['ea_id'] = intval($val['ea_id']);
            $val['ep_id'] = intval($val['ep_id']);
            $val['my_time'] = intval($val['my_time']);
            $val['total'] = intval($val['total']);

            $paper = $paper_list[$val['ep_id']];

            $val['ep_name'] = $paper['ep_name'];
            $val['ec_name'] = $paper['ec_name'];
            $val['begin_time'] = $paper['begin_time'];
            $val['end_time'] = $paper['end_time'];
            $val['paper_type'] = intval($paper['paper_type']);
            $val['paper_time'] = intval($paper['paper_time'] * 60);
        }

        return true;
    }
}