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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。