DeleteDataController.class.php 2.78 KB
<?php
/**
 * Created by PhpStorm.
 * User: zhonglei
 * Date: 2017/9/1
 * Time: 16:33
 */
namespace Rpc\Controller\AppNotice;

use Common\Common\Constant;
use Think\Log;
use Com\PackageValidate;
use Common\Common\TaskHelper;
use Common\Service\CustomtaskService;
use Common\Service\CustomtaskContentService;

class DeleteDataController extends \Rpc\Controller\AbstractController
{
    /**
     * DeleteData
     * @author zhonglei
     * @desc 删除应用数据
     * @param String app:true 应用
     * @param array app_data_ids:true 应用数据ID数组
     * @return bool
     */
    public function Index()
    {
        Log::record('params: ' . var_export($this->_params, true), Log::INFO);
        $post_data = $this->_params;

        // 验证规则
        $rules = [
            'app' => 'require',
            'app_data_ids' => 'require|array',
        ];

        // 验证请求数据
        $validate = new PackageValidate();
        $validate->postData = $post_data;
        $validate->validateParams($rules);

        $conds = [
            'app' => $post_data['app'],
            'app_data_id' => $post_data['app_data_ids'],
            'content_status' => Constant::CUSTOMTASK_CONTENT_NORMAL,
        ];

        $contentServ = new CustomtaskContentService();
        $content_list = $contentServ->list_by_conds($conds);

        if (empty($content_list)) {
            Log::record('not found customtask content', Log::INFO);
            return false;
        }

        // 更新内容状态
        $customtask_content_ids = array_column($content_list, 'customtask_content_id');
        $contentServ->update_by_conds(['customtask_content_id' => $customtask_content_ids], [
            'content_status' => Constant::CUSTOMTASK_CONTENT_DELETE,
        ]);

        // 获取未开始、进行中的任务列表
        $customtask_ids = array_unique(array_column($content_list, 'customtask_id'));
        $customtaskServ = new CustomtaskService();
        $customtask_list = $customtaskServ->list_by_conds([
            'customtask_id' => array_values($customtask_ids),
            'task_status' => [
                // 未开始
                Constant::CUSTOMTASK_STATUS_UNSTART,
                // 进行中
                Constant::CUSTOMTASK_STATUS_PROCESS,
            ],
        ]);

        if (empty($customtask_list)) {
            Log::record('not found customtask', Log::INFO);
            return false;
        }

        $taskHelper = &TaskHelper::instance();

        // 自动终止任务
        foreach ($customtask_list as $customtask) {
            Log::record('stop customtask: ' . var_export($customtask, true), Log::INFO);
            $result = $taskHelper->stopCustomtask($customtask);
            Log::record("stop customtask result: {$result}", Log::INFO);
        }

        return true;
    }
}