89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace app\admin\controller\csmtable;
 | 
						|
 | 
						|
use addons\csmtable\library\xcore\xcore\base\XcABackend;
 | 
						|
use addons\csmtable\library\xapp\csmtable\utils\CsmTableUtils;
 | 
						|
 
 | 
						|
 | 
						|
class Csmgenerate extends XcABackend
 | 
						|
{
 | 
						|
    
 | 
						|
    public function _initialize()
 | 
						|
    {
 | 
						|
        parent::_initialize();
 | 
						|
    }
 | 
						|
 | 
						|
    public function generate()
 | 
						|
    {
 | 
						|
        set_time_limit(0);
 | 
						|
        $request = $this->request;
 | 
						|
        $filesource = $request->request('csmtable_filesource');
 | 
						|
        $indexurl = $request->request('csmtable_indexurl');
 | 
						|
 | 
						|
        $dao = new \app\admin\model\csmtable\Xlstask();
 | 
						|
        // 限制下载
 | 
						|
        if (true) {
 | 
						|
            $userinfo = $this->auth->getUserInfo();
 | 
						|
 
 | 
						|
            $adminId = $userinfo["id"];
 | 
						|
            $row = $dao->where("admin_id", "=", $adminId)
 | 
						|
                ->where("progress", "<", "100")
 | 
						|
                ->where("createtime", ">", time() - 1800)
 | 
						|
                ->where("iserror", "<>", "Y")
 | 
						|
                ->find();
 | 
						|
            if ($row) {
 | 
						|
                $this->error("当前有下载任务,请任务结束后再尝试下载。");
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        // 生成任务记录
 | 
						|
        $dao->where("admin_id", "=", $adminId)
 | 
						|
            ->where("filesource", '=', $filesource)
 | 
						|
            ->where("status", "=", "normal")
 | 
						|
            ->update([
 | 
						|
            "status" => "hidden"
 | 
						|
        ]);
 | 
						|
 | 
						|
        // 触发异步生成Excel任务
 | 
						|
        $route2 = CsmTableUtils::getInstanceAndMethod($indexurl);
 | 
						|
        $classname = $route2[0];
 | 
						|
 | 
						|
        $getparams = [
 | 
						|
            'search' => $request->request('search'),
 | 
						|
            'filter' => $request->request('filter'),
 | 
						|
            'op' => $request->request('op'),
 | 
						|
            'sort' => $request->request('sort'),
 | 
						|
            'order' => $request->request('order'),
 | 
						|
            'offset' => $request->request('offset'),
 | 
						|
            'limit' => $request->request('limit'),
 | 
						|
            'csmtable_classname' => str_replace('\\', '/', $classname),
 | 
						|
            'csmtable_methodname' => $route2[1],
 | 
						|
            'csmtable_columns' => $request->request('csmtable_columns')
 | 
						|
        ];
 | 
						|
 | 
						|
 
 | 
						|
        $param = [
 | 
						|
            'admin_id' => $adminId,
 | 
						|
            'filesource' => $filesource,
 | 
						|
            'param' => json_encode($getparams),
 | 
						|
            'createtime' => time(),
 | 
						|
 
 | 
						|
        ];
 | 
						|
        $dao->create($param);
 | 
						|
        $this->success();
 | 
						|
        
 | 
						|
        // $id = $dao->getLastInsID();
 | 
						|
 | 
						|
        // $ret = $this->_index($id);
 | 
						|
        // if($ret===true){
 | 
						|
        //     $this->success();
 | 
						|
        // }else{
 | 
						|
        //     $this->error($ret);
 | 
						|
        // }
 | 
						|
    }
 | 
						|
 | 
						|
 
 | 
						|
   
 | 
						|
 
 | 
						|
}
 |