StudyListController.class.php 3.52 KB
<?php
/**
 * Created by PhpStorm.
 * User: tangxingguo
 * Date: 2017/5/5
 * Time: 10:23
 */

namespace Api\Controller\Course;

use Com\PackageValidate;
use Common\Common\Constant;
use Common\Common\User;
use Common\Service\StudyRecordService;

class StudyListController extends \Api\Controller\AbstractController
{
    /**
     * 是否必须登录
     */
    protected $_require_login = false;
    /**
     * StudyList
     * @author tangxingguo
     * @desc 谁在学列表接口
     * @param Int page:false:1 页码
     * @param Int limit:false:20 每页记录数
     * @param int article_id:true 课程ID
     * @param int customtask_id 任务ID
     * @param int plan_id 培训计划ID
     * @param int ed_id  培训ID
     * @return array 学生列表
                    array(
                        'page' => 1,
                        'limit' => 20,
                        'list' => array(
                            array(
                                'uid' => '469C4B0A7F0000016F4D5C189632297B', // 人员ID
                                'username' => '张三', // 人员姓名
                                'face' => 'http://shp.qpic.cn/bizmp/gdZUibR6BHrmiar6pZ6pLfRyZSVaXJicn2CsvKRdI9gccXRfP2NrDvJ8A/', // 头像
                            )
                        )
                    )
     */
    public function Index_post()
    {

        // 验证规则
        $rules = [
            'article_id' => 'require|integer|gt:0',
            'customtask_id' => 'integer',
            'plan_id' => 'integer',
            'ed_id' => 'integer',
            'page' => 'integer',
            'limit' => 'integer',
        ];

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

        $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']);

        // 人员列表
        $studyRecordServ = new StudyRecordService();
        $recordConds = ['article_id' => $postData['article_id']];

        if (isset($postData['customtask_id'])) {

            $recordConds['customtask_id'] = $postData['customtask_id'];
        }

        if (isset($postData['plan_id'])) {

            $recordConds['plan_id'] = $postData['plan_id'];
        }

        if (isset($postData['ed_id'])) {

            $recordConds['ed_id'] = $postData['ed_id'];
        }

        // 排序条件
        $order_option = ['created' => 'desc'];

        $studyList = $studyRecordServ->list_by_conds($recordConds, [$start, $perpage], $order_option);
        $list = [];
        if ($studyList) {
            // 取人员UID并去重
            $uids = array_values(array_unique(array_column($studyList, 'uid')));

            // 取头像
            $userServ = &User::instance();
            $userList = $userServ->listUsersAll(['memUids' => $uids,'memAll'=>1]);
            $userList = array_combine_by_key($userList, 'memUid');

            foreach ($uids as $v) {

                $list[] = [
                    'uid' => $v,
                    'username' => $userList[$v]['memUsername'],
                    'face' => isset($userList[$v]) ? $userList[$v]['memFace'] : '',
                ];
            }
        }

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