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);
							 | 
						||
| 
								 | 
							
								        // }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								}
							 |