src/Biz/Course/Copy/Chain/ActivityTestpaperCopy.php

(开头部分) 2KB

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

<?php

namespace Biz\Course\Copy\Chain;

use Biz\Activity\Service\TestpaperActivityService;

class ActivityTestpaperCopy extends TestpaperCopy
{
    /*
     * - $source = $activity
     * - $config: newActivity, isCopy
     * */
    protected function copyEntity($source, $config = array())
    {
        if ($source['mediaType'] != 'testpaper') {
            return array();
        }

        // 同课程下复制 不需要创建新的试卷
        if ($source['fromCourseSetId'] === $config['newCourseSetId']) {
            $activity = $this->getTestpaperActivityService()->getActivity($source['mediaId']);

            return $this->getTestpaperService()->getTestpaperByIdAndType($activity['mediaId'], $source['mediaType']);
        }

        return $this->doCopyTestpaper($source, $config['newCourseSetId'], $config['newCourseId'], $config['isCopy']);
    }

    public function doCopyTestpaper($activity, $newCourseSetId, $newCourseId, $isCopy)
    {
        $mediaType = $activity['mediaType'];
        $testpaperId = 0;

        if ($mediaType === 'testpaper') {
            $testpaperActivity = $this->getActivityConfig($mediaType)->get($activity['mediaId']);
            $testpaperId = $testpaperActivity['mediaId'];
        } elseif ($mediaType === 'homework' || $mediaType === 'exercise') {
            $testpaperId = $activity['mediaId'];
        }

        if ($testpaperId <= 0) {
            return null;
        }

        $testpaper = $this->getTestpaperService()->getTestpaperByIdAndType($testpaperId, $mediaType);
        if (empty($testpaper)) {
            return null;
        }

        $existed = $this->getTestpaperService()->getTestpaperByCopyIdAndCourseSetId($testpaperId, $newCourseSetId);

        if (!empty($existed)) {
            return $existed; //已复制过,不要重复复制
        }
        $newTestpaper = $this->baseCopyTestpaper($testpaper, $isCopy);
        $newTestpaper['courseSetId'] = $newCourseSetId;
        $newTestpaper['courseId'] = $newCourseId;

        $newTestpaper = $this->getTestpaperService()->createTestpaper($newTestpaper);

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

AI 解读 AI

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

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