DeleteController.class.php 2.62 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 17/4/27
 * Time: 14:50
 */

namespace Apicp\Controller\Source;

use Common\Common\AttachOperation;
use VcySDK\Service;
use VcySDK\Cron;
use Common\Service\TaskService;
use Common\Service\SourceService;
use Common\Service\ArticleChapterService;

class DeleteController extends \Apicp\Controller\AbstractController
{
    /**
     * Delete
     * @author liyifei
     * @desc 素材删除接口(支持单、多个删除)
     * @param Array source_ids:true 素材ID集合
     * @return array // 单个删除时,返回该素材被使用的课程ID;批量删除时,返回不可删除的素材ID;
     */
    public function Index_post()
    {
        $source_ids = I('post.source_ids');

        if (empty($source_ids) || !is_array($source_ids)) {

            E('_ERR_SOURCE_PARAM_FORMAT');
        }

        // 初始化返回值
        $data = [];

        // 素材是否被使用
        $chapterServ = new ArticleChapterService();
        $chapterList = $chapterServ->list_by_conds(['source_id' => $source_ids]);

        // 没有被使用
        if (empty($chapterList)) {
            $sourceServ = new SourceService();
            // 删除素材
            $sourceServ->delete_by_conds(['source_id' => $source_ids]);

            // 素材-计划任务id数据
            $taskServ = new TaskService();
            $task_list = $taskServ->list_by_conds(['source_id' => $source_ids]);

            // 删除定时任务
            if (!empty($task_list)) {
                // 计划任务id集合
                $cron_ids = array_filter(array_column($task_list, 'cron_id'));
                // 删除UC计划任务
                $cronSdk = new Cron(Service::instance());
                foreach ($cron_ids as $cron_id) {

                    $cronSdk->delete($cron_id);
                }

                // 删除本地计划任务记录
                $taskServ->delete_by_conds(['cron_id' => $cron_ids]);
            }

            // 删除附件操作
            $attach_serv = new AttachOperation();
            $attach_serv->delete_attach(APP_DIR, 'source', $source_ids);

        } else {
            if (count($source_ids) == 1) {
                // 单个删除时,返回使用该素材的课程ID列表
                $data = array_values(array_unique(array_column($chapterList, 'article_id')));
            } else {
                // 批量删除时,返回被使用的素材ID
                $data = array_unique(array_column($chapterList, 'source_id'));
            }
        }

        $this->_result = [
            'list' => array_values($data),
        ];
    }
}