HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/douyin.sbufb.com/application/work/model/Task.php
<?php
// +----------------------------------------------------------------------
// | Description: 任务
// +----------------------------------------------------------------------
// | Author:  yykun
// +----------------------------------------------------------------------

namespace app\work\model;

use think\Db;
use app\admin\model\Common;
use app\admin\model\Message;
use app\admin\model\User as UserModel;
use app\admin\model\Structure as StructureModel;
use app\admin\model\Comment as CommentModel;
use app\work\model\WorkLog as LogModel;
use app\work\model\WorkLable as lableModel;
use app\work\model\WorkClass as classModel;
use com\verify\HonrayVerify;
use think\Cache;

class Task extends Common
{
    /**
     * 为了数据库的整洁,同时又不影响Model和Controller的名称
     * 我们约定每个模块的数据表都加上相同的前缀,比如微信模块用weixin作为数据表前缀
     */
	protected $name = 'task';
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';
	protected $autoWriteTimestamp = true;
	protected $insert = [
		'status' => 1,
	];

	/**
     * 项目下任务列表(看板视图)
     * @author yykun
     * @return
     */ 
	public function getDataList($request, $user_id)
	{
		//权限项目判断
		$workModel = model('Work');
		$userModel = new \app\admin\model\User();
		$work_id = $request['work_id'];
		$ret = $workModel->checkWork($work_id, $user_id);
		if (!$ret) {
			$this->error = $workModel->getError();
			return false;
		}
		$classModel = model('WorkClass');
		//删除还原的任务,归类至未分组列表下,此列表不可拖拽编辑
		if ($this->where(['class_id' => 0,'ishidden' => 0,'work_id' => $work_id])->find()) {
			$classArr = ['0' => ['name' => '未分组','class_id' => 0]];
		}
		$classList = $classModel->getDataList($work_id);
		if ($classArr && $classList['list']) {
			$newList = array_merge($classArr,$classList['list']);
		} elseif ($classArr) {
			$newList = $classArr;
		} else {
			$newList = $classList['list'];
		}
		
		if ($request['main_user_id']) {
			$map['main_user_id'] = ['in',$request['main_user_id']];
		}
		//截止时间
		if ($request['stop_time_type']) {
			if ($request['stop_time_type'] == '5') { //没有截至日期
				$map['stop_time'] = '0';
			} elseif ($request['stop_time_type'] == '6') { //延期的
				$map['stop_time'] = ['between',[1,time()]];
				$map['status'] = 1;
			} elseif ($request['stop_time_type'] == '7') { //今日更新
				$timeAry = getTimeByType('today');
				$map['update_time'] = ['between',[$timeAry[0],$timeAry[1]]];
			} else {
				switch ($request['stop_time_type']) {
					case '1': //今天到期
						$timeAry = getTimeByType('today');
						break;
					case '2': //明天到期
						$temp = getTimeByType('today');
						$timeAry[0] = $temp[1];
						$timeAry[1] = $temp[1]+3600*24;
						break;
					case '3': //一周内到期
						$timeAry = getTimeByType('week');
						break;
					case '4': //一月内到期
						$timeAry = getTimeByType('month');
						break;
					default:
						break;
				}
				$map['stop_time'] = ['between',[$timeAry[0],$timeAry[1]]];
			}
		}
		if ($request['lable_id']) {
			$taskIds = [];
			$task_ids = [];
			foreach ($request['lable_id'] as $v) {
				$task_id = [];
				$lableWhere = [];
				$lableWhere['lable_id'] = ['like','%,'.$v.',%'];
				$lableWhere['work_id'] = $work_id;
				$lableWhere['status'] = ['in',['1','5']]; 	
				$lableWhere['ishidden'] = 0;
				$lableWhere['pid'] = 0;
				$lableWhere['is_archive'] = 0;			
				$task_id = $this->where($lableWhere)->column('task_id');
				if ($task_id && $task_ids) {
					$task_ids = array_unique(array_filter(array_merge($task_ids,$task_id)));
				} elseif ($task_id) {
					$task_ids = $task_id;
				}
			}
			$map['task_id'] = ['in',$task_ids];
		}
		$data = array();
		foreach ($newList as $key => $value) {
			$data[$key]['class_id'] = $value['class_id'] ? : -1;	
			$data[$key]['class_name'] = $value['name'];

			$map['status'] = $map['status'] ? : ['in',['1','5']];
			$map['ishidden'] = 0;
			$map['work_id'] = $request['work_id'];
			$map['class_id'] = $value['class_id'];
			$map['pid'] = 0;
			$map['is_archive'] = 0;

			$taskList = [];
			$resTaskList = $this->getTaskList($map);
			$data[$key]['count'] = $resTaskList['count'];
			$data[$key]['list'] = $resTaskList['list'];
		}
		return $data;
	}

	/**
     * 根据任务ID 获取操作记录
     * @author yykun
     * @return
     */
	public function getTaskLogList($param)
	{
		$list = Db::name('WorkTaskLog')->alias('l')
				->join('AdminUser u','u.id = l.user_id','LEFT')
				->field('l.*,u.realname,u.thumb_img')
				->where('l.task_id ='.$param['task_id'])
				->order('l.log_id desc')
				->select();
		foreach ($list as $key => $value) {
			$list[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
		}
		return $list ? : [];
	}

	/**
     * 根据主键获取详情
     * @author yykun
     * @return
     */	
	public function getDataById($id = '', $userInfo)
	{		
		//读取参与人
		$userModel = new UserModel();
		$structModel = new StructureModel();
		$recordModel = new \app\admin\model\Record();
		$taskInfo = $this->where(['task_id' => $id])->find();
		if (!$taskInfo) {
			$this->error = '任务不存在或已删除';
			return false;
		}
		
	    $userlist = $userModel->getDataByStr($taskInfo['owner_user_id']);
		$taskInfo['owner_list'] = $userlist ? : array(); 
		
		$workInfo = Db::name('Work')->where(['work_id' => $taskInfo['work_id']])->find();
		$taskInfo['work_name'] = $workInfo['name'] ? : '';
		
		//读取部门
		$structList  = $structModel->getDataByStr($taskInfo['structure_ids']);
		$taskInfo['struct_list'] = $structList ? : array(); 

		//负责人
		$mainData = [];
		if ($taskInfo['main_user_id']) { 
			$mainData = $userModel->getDataById($taskInfo['main_user_id']);
		}
		$taskInfo['main_user_name'] = $mainData['realname'] ? : '';
		$taskInfo['main_user_img'] = $mainData['thumb_img'] ? : '';

		$taskInfo['stop_time'] = $taskInfo['stop_time'] ? : '';
		$lablelist = [];
		if ($taskInfo['lable_id']) {
			$lableModel = new \app\work\model\WorkLable();
			$lablelist = $lableModel->getDataByStr($taskInfo['lable_id']);
		}
		$taskInfo['lable_list'] = $lablelist ? : array();

		$commonmodel = new \app\admin\model\Comment();
		$param['type_id'] = $taskInfo['task_id'];
		$param['type'] = 'task';
		$taskInfo['replyList'] = $commonmodel->read($param);
		$subTaskList = $this->alias('t')
						->join('AdminUser u','u.id = t.main_user_id','LEFT')
						->field('t.task_id,t.pid,t.name,t.main_user_id,t.stop_time,t.status,t.class_id,u.id as main_user_id,u.realname,u.thumb_img')
						->where(' t.ishidden = 0 and ( t.status=1 or t.status=5 ) and t.pid ='.$id)
						->select();
		foreach ($subTaskList as $key => $value) {
			$subTaskList[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
		}
		$taskInfo['subTaskList'] = $subTaskList;
		//相关业务
		$relationArr = $recordModel->getListByRelationId('task', $id);
		$taskInfo['businessList'] = $relationArr['businessList'];
		$taskInfo['contactsList'] = $relationArr['contactsList'];
		$taskInfo['contractList'] = $relationArr['contractList'];
		$taskInfo['customerList'] = $relationArr['customerList'];

		$createUserInfo = $userModel->getDataById($taskInfo['create_user_id']);
		$createUserInfo['thumb_img'] = $createUserInfo['thumb_img'] ? getFullPath($createUserInfo['thumb_img']) : '';
		$taskInfo['create_user_info'] = $createUserInfo;
		return $taskInfo;
	}

	/**
     * 创建任务
     * @author yykun
     * @return
     */	
	public function createTask($param)
	{
		$param['status'] = 1;
		$rdata['customer_ids'] = !empty($param['customer_ids']) ? arrayToString($param['customer_ids']) : ''; 
		$rdata['contacts_ids'] = !empty($param['contacts_ids']) ? arrayToString($param['contacts_ids']) : ''; 
		$rdata['business_ids'] = !empty($param['business_ids']) ? arrayToString($param['business_ids']) : ''; 
		$rdata['contract_ids'] = !empty($param['contract_ids']) ? arrayToString($param['contract_ids']) : '';  
		$arr = ['customer_ids','contacts_ids','business_ids','contract_ids'];
		foreach ($arr as $value) {
			unset($param[$value]);
		}
		$main_user_id = $param['main_user_id'] ? : $param['create_user_id'];
		$param['main_user_id'] = $main_user_id; //负责人
		$param['owner_user_id'] = ','.$main_user_id.','; //参与人
		$param['start_time'] = $param['start_time'] ? : strtotime(date('Y-m-d',time()));
		if ($param['start_time'] == $param['stop_time']) {
			$param['stop_time'] = $param['start_time']+86399;
		}
		$this->data($param)->allowField(true)->save();
		$task_id = $this->task_id;
		if ($task_id) {
			$rdata['status'] = 1;
			$rdata['create_time'] = time();
			$rdata['task_id'] = $task_id;
			Db::name('TaskRelation')->insert($rdata);
			
			if (!$param['pid']) {
				$taskLog = new LogModel();
				$datalog['name'] = $param['name'];
				$datalog['user_id'] = $param['create_user_id']; 
				$datalog['task_id'] = $task_id;
				$datalog['work_id'] = $param['work_id'] ? : '';
				$ret = $taskLog->newTaskLog($datalog);
				//操作日志
				actionLog($task_id,'','','新建了任务');
				//抄送站内信
				(new Message())->send(
                    Message::TASK_ALLOCATION,
                    [
                        'title' => $param['name'],
                        'action_id' => $task_id
                    ],
                    $main_user_id
                );
			}
			return $task_id;
		} else {
			$this->error = '添加失败';
			return false;
		}
	}
	
	/**
     * 编辑任务
     * @author yykun
     * @param type 类型(字段名)
     * @return
     */	
	public function updateDetTask($param){
		$LogModel = new LogModel();
		$userModel = new UserModel();
		$lableModel =new lableModel();
		$StructureModel = new StructureModel();
		$type = $param['type'] ? : '';
		if (!$param['task_id']) {
			$this->error = '参数错误!';
			return false;			
		}
		//关联业务
		if(isset($param['customer_ids']) && !empty($param['customer_ids'])){
			$rdata['customer_ids'] = $param['customer_ids'] ? arrayToString($param['customer_ids']) : ''; 
		}
		if(isset($param['contacts_ids']) && !empty($param['contacts_ids'])){
			$rdata['contacts_ids'] = $param['contacts_ids'] ? arrayToString($param['contacts_ids']) : ''; 
		}
		if(isset($param['business_ids']) && !empty($param['business_ids'])){
			$rdata['business_ids'] = $param['business_ids'] ? arrayToString($param['business_ids']) : ''; 
		}
		if(isset($param['contract_ids']) && !empty($param['contract_ids'])){
			$rdata['contract_ids'] = $param['contract_ids'] ? arrayToString($param['contract_ids']) : ''; 
		}
		$rdata['task_id'] = $param['task_id'];
		$arr = ['customer_ids','contacts_ids','business_ids','contract_ids'];
		foreach ($arr as $value) {
			unset($param[$value]);
		}
		
		$data = array();
		$taskInfo = $this->get($param['task_id']);
		$taskInfo = json_decode(json_encode($taskInfo),true);
		$data['type'] = $param['type'];
		$data['before'] = $taskInfo[$param['type']] ? $taskInfo[$param['type']] : '空';
		switch ($type) {
			case 'name' : 
				$data['after'] = $param['name']; break;
			case 'stop_time' : 
				if ($taskInfo['start_time'] > $param['stop_time']) {
					$this->error = '截止时间不能在开始时间之前';
					return false;
				}
				if ($param['stop_time']) {
					$data['after'] = date("Y-m-d",$param['stop_time']);
				} else {
					$data['after'] = '无';
				}
				break;
			case 'class_id'	:
				//类型修改
				$classModel = model('WorkClass');
				$taskInfo = $classModel->getDataById($param['class_id']);
				$data['after'] = $taskInfo['name'];	
				break;	
			case 'lable_id_add' : 
				//标签添加
				$lable = $lableModel->getNameByIds($param['lable_id_add']);
				if ($taskInfo['lable_id'] && $param['lable_id_add']) {
					$param['lable_id_add'] = array_unique(array_merge(stringToArray($taskInfo['lable_id']),$param['lable_id_add']));
				}
				$param['lable_id'] = arrayToString($param['lable_id_add']);
				$data['after'] = $lable ? implode(',',$lable) : '';
				unset($param['lable_id_add']);
				break;	
			case 'lable_id_del' :	
				//标签删除
				$lable = $lableModel->getNameByIds($param['lable_id_del']);
				if ($param['lable_id_del']) {
					$lable_id = array_unique(array_diff(stringToArray($taskInfo['lable_id']),$param['lable_id_del']));
					$param['lable_id'] = arrayToString($lable_id);
				} else {
					$param['lable_id'] = $taskInfo['lable_id'];
				}
				$data['after'] = $lable ? implode(',',$lable) : '';
				unset($param['lable_id_del']);	
				break;
			case 'structure_id_del' :
				//删除参与部门
				$structuredet = $StructureModel->getDataById($param['structure_id']);
				$param['structure_ids'] = str_replace(','.$param['structure_id_del'].',',',',$taskInfo['structure_ids']); //删除
				$data['after'] = $structuredet['name'];
				unset( $param['structure_id_del'] );
				break;	
			case 'structure_id_add' :
				//添加参与部门 
				$structuredet = $StructureModel->getDataById($param['owner_userid_add']);
				if ($taskInfo['structure_ids']) {
					$param['structure_ids'] = $taskInfo['structure_ids'].$param['structure_id_add'].','; //追加
				} else {
					$param['structure_ids'] = ','.$param['structure_id_add'].','; //首次添加
				}
				$data['after'] = $structuredet['name'];
				unset( $param['structure_id_add'] );
				break;	
			case 'owner_userid_del' :
				//删除参与成员 
				$userdet = $userModel->getDataById($param['owner_userid_del']);
				$param['owner_user_id'] = str_replace(','.$param['owner_userid_del'].',',',',$taskInfo['owner_user_id']); //删除
				$data['after'] = $userdet['realname'];
				unset( $param['owner_userid_del'] );
				break;
			case 'owner_userid_add' :
				//添加参与成员 
				$userdet = $userModel->getDataById($param['owner_userid_add']);
				if ($taskInfo['owner_user_id'] ){
					$param['owner_user_id'] = $taskInfo['owner_user_id'].$param['owner_userid_add'].','; //追加
				} else {
					$param['owner_user_id'] = ','.$param['owner_userid_add'].','; //首次添加
				}
				$data['after'] = $userdet['realname'];
				unset($param['owner_userid_add']);
				break;
			case 'main_user_id' :
				//设置负责人
				$userdet = $userModel->getDataById($param['main_user_id']);
				$data['after'] = '设定'.$userdet['realname'].'为主要负责人!';
				(new Message())->send(
                    Message::TASK_ALLOCATION,
                    [
                        'title' => $taskInfo['name'],
                        'action_id' => $param['task_id']
                    ],
                    $param['main_user_id']
                );
				break;				
		}

		$param['update_time'] = time();
		$data['work_id'] = $param['work_id'];
		$data['task_id'] = $param['task_id'];
		$data['user_id'] = $param['create_user_id'];
		unset($param['type']);
		unset($param['create_user_id']);
		$flag = $this->where(['task_id' => $param['task_id']])->update($param);
		
		if ($flag || count($rdata)) {
			if ($param['owner_user_id']) {
				$this->where(['task_id' => $param['task_id']])->setField('owner_user_id',$param['owner_user_id']);
			} 
			if (!$param['pid']) {
				$LogModel = new LogModel();
				$taskInfo = $LogModel->taskLogAdd($data);   
				actionLog($param['task_id'],$param['owner_user_id'],$param['structure_ids'],'修改了任务');
				$resRelation = Db::name('TaskRelation')->where(['task_id' => $param['task_id']])->find();
				if ($resRelation) {
					Db::name('TaskRelation')->where(['task_id' => $param['task_id']])->update($rdata); //更新关联关系	
				} else {
					$rdata['create_time'] = time();
					$rdata['status'] = 1;
					Db::name('TaskRelation')->insert($rdata); //更新关联关系
				}
			}
			return true;
		} else {
			$this->error = '操作失败';
			return false;
		}
	}

	/**
     * 任务统计不同状态
     * @author yykun
     * @param 
     * @return
     */	
	public function getCount($status = 0)
	{
		$map = array();
		if ($status > 0) {
			$map['status'] = $status;
		}
		$count = $this->where($map)->count();
		return $count ? : 0;
	}

	/**
     * 获取某一月份任务列表
     * @author yykun
     * @param 
     * @return
     */
	public function getDateList($param)
	{
		$start_time = $param['start_time'];
		$stop_time = $param['stop_time'];
		$user_id = $param['user_id'];
		// $date_list = dateList($start_time, $stop_time, 1);
		$where = [];
		$where['ishidden'] = 0;
		$where['is_archive'] = 0;
		$where['status'] = 1;
		$where['pid'] = 0;
		$str = ','.$user_id.',';
		$whereStr = ' ( create_user_id = '.$user_id.' or ( owner_user_id like "%'.$str.'%") or ( main_user_id = '.$user_id.' ) )';
		$whereDate = '( stop_time > 0 and stop_time between '.$start_time.' and '.$stop_time.' ) or ( update_time between '.$start_time.' and '.$stop_time.' )';
		$list = db('task')
				->where($where)
				->where($whereStr)
				->where($whereDate)
				->field('task_id,name,priority,start_time,stop_time,priority,update_time')
				->select();
		return $list ? : [];
	}

	/**
     * 删除任务
     * @author yykun
     * @param 
     * @return
     */
	public function delTaskById($param)
	{	
		if (!$param['task_id']) {
			$this->error = '参数错误';
			return false;
		}		
		$taskInfo = $this->get($param['task_id']);
		if (!$taskInfo) {
			$this->error = '数据不存在或已删除';
			return false;
		}
		$map['task_id'] = $param['task_id'];
		$temp['ishidden'] = 1;
		$temp['hidden_time'] = time();
		$flag = $this->where($map)->update($temp);
		if ($flag) {
			if (!$taskInfo['pid']) {
				actionLog( $taskInfo['task_id'],$taskInfo['owner_user_id'],$taskInfo['structure_ids'],'删除了任务');
			}
			return true;
		} else {
			$this->error = '删除失败';
			return false;
		}
	}

	/**
     * 归档任务
     * @author yykun
     * @param 
     * @return
     */
	public function archiveData($param)
	{
		$data['is_archive'] = 1;
		$data['archive_time'] = time();
		$flag = $this->where(['task_id' => $param['task_id']])->update($data);
		if ($flag) {                          
			//添加归档日志
			actionLog($param['task_id'],'','','归档了任务'); 
			return true;
		} else {
			$this->error = '归档失败';
			return false;
		}
	}

	/**
     * 归档任务恢复
     * @author yykun
     * @param 
     * @return
     */	
	public function recover($param)
	{
		$flag = $this->where(['task_id' => $param['task_id']])->setField('is_archive',0);
		if ($flag) {
			//添加日志
			actionLog( $param['task_id'],'','','恢复归档任务'); 
			return true;
		} else {
			$this->error = '操作失败';
			return false;
		}
	}

	/**
     * 任务权限判断
     * @author Michael_xu
     * @param 
     * @return
     */
	public function checkTask($task_id, $userInfo)
	{
		$userModel = new \app\admin\model\User();		
		$taskInfo = $this->get($task_id);
		if (!$taskInfo) {
			$this->error = '该任务不存在或已删除';
			return false;
		}
		$user_id = $userInfo['id'];
		$structure_id = $userInfo['structure_id'];
		$adminTypes = adminGroupTypes($user_id);
        if (in_array(1,$adminTypes) || in_array(7,$adminTypes)) {
			return true;
        }		
		if (($taskInfo['create_user_id'] == $user_id) || ($taskInfo['main_user_id'] == $user_id) || in_array($user_id, stringToArray($taskInfo['owner_user_id'])) || in_array($structure_id, stringToArray($taskInfo['structure_ids']))) {
			return true;
		}
		$workInfo = db('work')->where(['work_id' => $taskInfo['work_id']])->find();
		if ($taskInfo['is_open'] == 1) {
			return true;
		} else {
			//私有项目(只有项目成员可以查看)
			$workUser = db('work_user')->where(['work_id' => $taskInfo['work_id']])->column('user_id');
			if ($workUser && in_array($user_id,$workUser)) {
				return true;	
			}
			return false;		
		}		
	}

	/**
     * 查看关联个数
     * @author yykun
     * @param 
     * @return
     */	
    public function getRelationCount($task_id)
    {
    	$relationInfo = Db::name('TaskRelation')->where(['task_id' => $task_id])->find();
    	$count = 0;
    	if ($relationInfo) {
    		$count1 = count(stringToArray($relationInfo['customer_ids']));
    		$count2 = count(stringToArray($relationInfo['contacts_ids']));
    		$count3 = count(stringToArray($relationInfo['business_ids']));
    		$count4 = count(stringToArray($relationInfo['contract_ids']));
    		$count = $count1+$count2+$count3+$count4;
    	} 
    	return $count;
    }

	/**
     * 任务列表
     * @author Michael_xu
     * @param 
     * @return
     */	
    public function getTaskList($request)
    {
    	$search = $request['search'];
    	$whereStr = $request['whereStr'] ? : [];
    	$lable_id = $request['lable_id'] ? : '';
    	unset($request['search']);
    	unset($request['whereStr']);
    	unset($request['lable_id']);
		$request = $this->fmtRequest($request);
        $requestMap = $request['map'] ? : [];    	
    	$userModel = new \app\admin\model\User();
    	$lableModel = new \app\work\model\WorkLable();
    	$map = $requestMap;
    	$map['ishidden'] = $requestMap['ishidden'] ? : 0;
		if ($search) {
			//普通筛选
			$map['name'] = ['like','%'.$search.'%'];
		}
		$map = where_arr($map, 'work', 'task', 'index');  
		if ($lable_id) {
			$map['task.lable_id'] = array('like','%'.$lable_id.'%');
		}
    	$dataCount = db('task')->alias('task')->where($map)->where($whereStr)->count();
		$taskList = [];
		if ($dataCount) {
			$taskList = db('task')
						->alias('task')
						->join('AdminUser u','u.id = task.main_user_id','LEFT') 
						->join('Work w','w.work_id = task.work_id','LEFT')
						->field('task.task_id,task.name,task.main_user_id,task.is_top,task.work_id,task.lable_id,task.priority,task.stop_time,task.status,task.pid,task.create_time,task.owner_user_id,u.realname as main_user_name,u.thumb_img,w.name as work_name,color')
						->where($map)
						->where($whereStr)
						// ->limit(($request['page']-1)*$request['limit'], $request['limit'])
						->order('task.status asc,task.order_id asc')
						->select();
			foreach ($taskList as $key => $value) {
				if ($value['pid'] > 0) {
					$p_det = $this->field('task_id,name')->where(['task_id' => $value['pid']])->find();
					$taskList[$key]['pname'] = $p_det['name'];
				} else {
					$taskList[$key]['pname'] = '';
				}
				$taskList[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
				$subcount = $this->where(['ishidden' => 0,'status' => 1,'pid' => $value['task_id']])->count();
				$subdonecount = $this->where(['ishidden' => 0,'status' => 5,'pid' => $value['task_id']])->count();
				$taskList[$key]['subcount'] = $subcount; //子任务
				$taskList[$key]['subdonecount'] = $subdonecount; //已完成子任务
				$taskList[$key]['commentcount'] = Db::name('AdminComment')->where(['type' => 'task','type_id' => $value['task_id']])->count(); //评论
				$taskList[$key]['filecount'] = Db::name('WorkTaskFile')->where(['task_id' => $value['task_id']])->count();
				$lableList = [];	
				if ($value['lable_id']) {
					$lableList =  $lableModel->getDataByStr($value['lable_id']);
					$taskList[$key]['lableList'] = $lableList ? : array();
				}
				$taskList[$key]['lableList'] = $lableList ? : array();
				//参与人
				//负责人信息
				$taskList[$key]['main_user'] = $value['main_user_id'] ? $userModel->getDataById($value['main_user_id']) : NULL;
				$taskList[$key]['relationCount'] = $this->getRelationCount($value['task_id']);
				$is_end = 0;
				if (!empty($value['stop_time']) && (strtotime(date('Ymd'))+86399 > $value['stop_time'])) $is_end = 1;
				$taskList[$key]['is_end'] = $is_end;
				$taskList[$key]['checked'] = ($value['status']=='5') ? true : false;
			}
		}
		$data = [];
		$data['count'] = $dataCount ? : 0;
		$data['list'] = $taskList ? : [];
		return $data;	
    } 
}