src/AppBundle/Extensions/DataTag/StudyCenterMissionsDataTag.php

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php

namespace AppBundle\Extensions\DataTag;

use Biz\Common\CommonException;
use Biz\Task\Service\TaskService;
use AppBundle\Common\ArrayToolkit;
use Biz\Task\Service\TaskResultService;

class StudyCenterMissionsDataTag extends BaseDataTag implements DataTag
{
    /**
     * 获取我的所有课程中未学的任务
     * 可传入的参数:
     *   userId         用户
     *   count          班级课程和普通课程各自的数量
     *   missionCount   每个课程的任务数量.
     *
     * @param array $arguments 参数
     *
     * @return array 按课程分组的任务列表
     */
    public function getData(array $arguments)
    {
        if (!ArrayToolkit::requireds($arguments, array('userId', 'count', 'missionCount'))) {
            throw CommonException::ERROR_PARAMETER_MISSING();
        }

        return $this->getStudyMissions($arguments);
    }

    private function getStudyMissions($arguments)
    {
        $userId = $arguments['userId'];
        $count = $arguments['count'];
        $missionCount = $arguments['missionCount'];

        $sortedCourses = array();
        //1. 先获取userId的所有course_member数据,获取课程的所属班级
        //2. 对courses按照classroom排序,分离出classroom的courses
        //3. 遍历courses,判断courses是否已学完,如果未学完,则查询出要学的missionCount个任务
        //4. 交给前端展示
        $members = $this->getCourseMemberService()->searchMembers(array('userId' => $userId, 'role' => 'student'), array('classroomId' => 'DESC', 'createdTime' => 'DESC'), 0, PHP_INT_MAX);
        if (empty($members)) {
            return $sortedCourses;
        }

        $courseIds = ArrayToolkit::column($members, 'courseId');

        $courses = $this->getCourseService()->findCoursesByIds($courseIds);
        usort($courses, function ($c1, $c2) use ($courseIds) {
            if (($c1['parentId'] > 0 && $c2['parentId'] > 0) || (0 == $c1['parentId'] && 0 == $c2['parentId'])) {
                return array_search($c1['id'], $courseIds) > array_search($c2['id'], $courseIds);
            }

            return $c1['parentId'] < $c2['parentId'];
        });
        $classroomRefs = $this->getClassroomService()->findClassroomsByCoursesIds($courseIds);
        $classroomRefs = ArrayToolkit::index($classroomRefs, 'courseId');
        $classroomIds = ArrayToolkit::column($classroomRefs, 'classroomId');

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。