post(); $user_id = $param['user_id']; $user = new User(); $project_work = $this->GetProjectList($user_id); for ($i = 0; $i < count($project_work); $i++) { $involve_manager = $project_work[$i]['involve_manager']; $info = $user->GetUserInfoByLoginId($involve_manager); if ($info && isset($info['name'])) { $project_work[$i]['issue_creator_name'] = $info['name']; } } return $this->sendSuccess($project_work); } //获取外部客户类型列表 public function GetWorkInfoByLoginProject() { $param = request()->post(); $user = new User(); $user_id = $param['user_id']; $user_info = db('system_user')->where('id', $user_id)->find(); if ($user_info) { $user_project = explode(',', $user_info['user_project']); $project_info = db('project_info')->alias('p') ->join('project_state s', 's.id =p.project_state', 'left') ->whereIn('project_id', $user_project) ->where('p.project_state', '<', 10) // 未关闭的项目 ->field('p.*, s.desp as project_state_name,1 as project_types') ->select(); foreach ($project_info as &$info) { $involve_manager = $info['involve_manager']; $userInfo = $user->GetUserInfoByLoginId($involve_manager); if ($userInfo && isset($userInfo['name'])) { $info['issue_creator_name'] = $userInfo['name']; } $info['issue_count'] = $this->GetProjectIssueCount($user_id, $info['project_id']); $info['task_count'] = $this->GetProjectTaskCount($user_id, $info['project_id']); } unset($info); return $this->sendSuccess($project_info); } } //获取业主客户类型列表 public function GetWorkInfoByLoginProjectCustomer() { $param = request()->post(); $user = new User(); $user_id = $param['user_id']; $user_info = db('system_user')->where('id', $user_id)->find(); if ($user_info) { $user_project = explode(',', $user_info['user_project']); $project_info = db('project_info')->alias('p') ->join('project_state s', 's.id =p.project_state', 'left') ->whereIn('project_id', $user_project) ->where('p.project_state', '<', 10) // 未关闭的项目 ->field('p.*, s.desp as project_state_name,1 as project_types') ->select(); foreach ($project_info as &$info) { $involve_manager = $info['involve_manager']; $userInfo = $user->GetUserInfoByLoginId($involve_manager); if ($userInfo && isset($userInfo['name'])) { $info['issue_creator_name'] = $userInfo['name']; } $info['issue_count'] = $this->GetProjectIssueCountCustomer($user_id, $info['project_id']); $info['task_count'] = $this->GetProjectTaskCountCustomer($user_id, $info['project_id']); } unset($info); return $this->sendSuccess($project_info); } } public function GetProjectIssueCountCustomer($user_id, $project_id) { $count = db('project_issues')->alias('s') ->join('project_info i', 'i.project_id =s.project_id', 'left') ->join('project_issue_state t', 't.id =s.issue_state', 'left') ->where('s.project_id', $project_id) ->where('s.issue_state', '<', 10) ->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name') ->count(); return $count; } public function GetProjectTaskCountCustomer($user_id, $project_id) { $count = db('work_task_info')->alias('s') ->join('work_story_info x', 'x.story_id =s.story_id', 'left') ->join('project_info i', 'i.project_id =x.work_id', 'left') ->join('work_task_state t', 't.id =s.task_state', 'left') ->where('x.work_id', $project_id) ->count(); return $count; } //获取参与的客户项目列表 public function GetProjectList($user_id) { $ret = db('project_info')->alias('p') ->join('project_state s', 's.id =p.project_state', 'left') ->where('p.project_state', '<', 10) //未关闭的项目 ->where(function ($query) use ($user_id) { $query->where('p.involve_manager', $user_id) ->whereor('p.involve_members', 'like', $user_id . ',%') ->whereor('p.involve_members', 'like', '%,' . $user_id . ',%') ->whereor('p.involve_members', 'like', $user_id . '') ->whereor('p.involve_members', 'like', '%,' . $user_id); }) ->field('p.*, s.desp as project_state_name,1 as project_types') ->select(); //统计每个项目与登录用户有关的任务数 for ($i = 0; $i < count($ret); $i++) { $ret[$i]['issue_count'] = $this->GetProjectIssueCount($user_id, $ret[$i]['project_id']); $ret[$i]['task_count'] = $this->GetProjectTaskCount($user_id, $ret[$i]['project_id']); } return $ret; } public function GetProjectIssueList() { $param = request()->post(); $user = new User(); $user_id = $param['user_id'];// = 60; $project_id = $param['project_id']; // = 122; $issue_state = $param['issue_state']; // = 0; $where = []; if ($issue_state == 1) { $where['s.issue_state'] = array('<', 10); //未关闭 } else if ($issue_state == 2) { $where['s.issue_state'] = array('>', 10);//已关闭 } //负责处理的问题 $ret = db('project_issues')->alias('s') ->join('project_info i', 'i.project_id =s.project_id', 'left') ->join('project_issue_state t', 't.id =s.issue_state', 'left') ->where('s.project_id', $project_id) ->where(function ($query) use ($user_id) { $query->where('s.issue_processor', $user_id) ->whereor('s.issue_creator', $user_id) ->whereor('i.involve_manager', $user_id); }) ->where($where) ->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name, i.involve_manager,1 as project_types') ->select(); for ($i = 0; $i < count($ret); $i++) { $info = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']); if ($info != "") { $ret[$i]['issue_processor_name'] = $info['name']; } else { $ret[$i]['issue_processor_name'] = '-'; } $info = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']); $ret[$i]['issue_creator_name'] = $info['name']; } return $this->sendSuccess($ret); } public function GetProjectIssueCount($user_id, $project_id) { $count = db('project_issues')->alias('s') ->join('project_info i', 'i.project_id =s.project_id', 'left') ->join('project_issue_state t', 't.id =s.issue_state', 'left') ->where('s.project_id', $project_id) ->where(function ($query) use ($user_id) { $query->where('s.issue_processor', $user_id) ->whereor('s.issue_creator', $user_id) ->whereor('i.involve_manager', $user_id); }) ->where('s.issue_state', '<', 10) ->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name') ->count(); return $count; } public function GetProjectTaskList() { $param = request()->post(); $user = new User(); $user_id = $param['user_id']; $project_id = $param['project_id']; $where = []; if($param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') ->join('work_story_info y', 'y.story_id =s.story_id', 'left') ->join('system_user u', 'u.id =s.task_processor', 'left') ->join('work_task_state p', 'p.id =s.task_state', 'left') ->where('y.work_id', $project_id) ->where($where) ->where(function ($query) use ($user_id) { $query->where('s.task_processor', $user_id) ->whereor('y.story_manager', $user_id); }) ->field('s.*, p.desp as task_state_desp, y.story_id,2 as project_types') ->select(); $user = new User(); for ($i=0; $iGetUserInfoByLoginId($ret[$i]['task_processor']); $ret[$i]['task_processor_name'] = $user_info['name']; } return $this->sendSuccess($ret); } public function GetProjectTaskCount($user_id, $project_id) { $count = db('work_task_info')->alias('s') ->join('work_story_info x', 'x.story_id =s.story_id', 'left') ->join('project_info i', 'i.project_id =x.work_id', 'left') ->join('work_task_state t', 't.id =s.task_state', 'left') ->where('x.work_id', $project_id) ->where('s.task_state', '<', 4) ->where(function ($query) use ($user_id) { $query->where('s.task_processor', $user_id) ->whereor('x.story_manager', $user_id); }) ->count(); return $count; } public function GetProjectDevelopProcessor() { $param = request()->post(); if (!$param) { return []; } $member_ids = []; $array = []; if ($param['project_types'] === 1) { $project_info = db('project_info')->where('project_id', $param['project_id'])->find(); if ($project_info && !empty($project_info['involve_members'])) { $member_ids = explode(',', $project_info['involve_members']); } } elseif ($param['project_types'] === 2) { $develop_info = db('develop_project')->where('project_id', $param['project_id']) ->field('project_members')->find(); if ($develop_info && !empty($develop_info['project_members'])) { $member_ids = explode(',', $develop_info['project_members']); } } for ($i = 0; $i < count($member_ids); $i++){ $ret = db('system_user')->alias('su') ->join('hr_staff hs', 'su.user_id = hs.staff_id') ->whereIn('su.id', $member_ids[$i]) ->field('su.id, hs.staff_name') ->find(); $array[] = $ret; } return $this->sendSuccess($array); } public function UpdateProDeveProcessor() { $param = request()->post(); if($param){ if($param['project_types']===1){ $ret= db('project_issues') ->where('issue_id',$param['issue_id']) ->update(['issue_processor'=>$param['processor'] ,'issue_state' => 2]); if($ret){ return $this->sendSuccess('分配成功'); }else{ return $this->sendError('分配失败'); } }else if($param['project_types']===2){ $ret = db('develop_issues') ->where('issue_id',$param['issue_id']) ->update(['issue_processor'=>$param['processor'],'issue_state' => 2]); if($ret){ return $this->sendSuccess('分配成功'); }else{ return $this->sendError('分配失败'); } } } } public function GetOperationTaskList() { $param = request()->post(); $user = new User(); $user_id = $param['user_id']; $story_id = $param['story_id']; $where = []; if($param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') ->join('work_story_info y', 'y.story_id =s.story_id', 'left') ->join('system_user u', 'u.id =s.task_processor', 'left') ->join('work_task_state p', 'p.id =s.task_state', 'left') ->where('y.story_type', 2) ->where('y.story_id', $story_id) ->where($where) ->where(function ($query) use ($user_id) { $query->where('s.task_processor', $user_id) ->whereor('y.story_manager', $user_id); }) ->field('s.*, p.desp as task_state_desp, y.story_id,2 as project_types') ->select(); $user = new User(); for ($i=0; $iGetUserInfoByLoginId($ret[$i]['task_processor']); $ret[$i]['task_processor_name'] = $user_info['name']; } return $this->sendSuccess($ret); } public function GetOperationStoryList() { $param = request()->post(); $user = new User(); $user_id = $param['user_id']; $where = []; if(isset($param['story_state']) && $param['story_state'] != ''){ $where['s.story_state'] = $param['story_state']; } $ret = db('work_story_info')->alias('y') ->join('work_story_state p', 'p.id =y.story_state', 'left') ->where('y.story_type', 2) ->where('y.story_state', '<', 4) //未完成的Story ->where($where) ->where(function ($query) use ($user_id) { $query->where('y.story_manager', $user_id) ->whereor('y.story_member', 'like', $user_id . ',%') ->whereor('y.story_member', 'like', '%,' . $user_id . ',%') ->whereor('y.story_member', $user_id) ->whereor('y.story_member', 'like', '%,' . $user_id); }) ->field('y.*, p.desp as story_state_desp') ->select(); $user = new User(); for ($i=0; $iGetUserInfoByLoginId($ret[$i]['story_manager']); $ret[$i]['story_manager_name'] = $user_info['name']; $ret[$i]['story_tasks'] = 0; } //dump($ret); return $this->sendSuccess($ret); } /*public function GetTaskTypeList() { $ret = db('project_task_state')->select(); return $this->sendSuccess($ret); } */ }