diff --git a/application/common/Model/DepartmentMember.php b/application/common/Model/DepartmentMember.php index 99fdc33..20249e3 100644 --- a/application/common/Model/DepartmentMember.php +++ b/application/common/Model/DepartmentMember.php @@ -146,6 +146,12 @@ class DepartmentMember extends CommonModel } } else { $memberAccount = MemberAccount::where(['member_code' => $member['code'], 'organization_code' => $organizationCode])->find(); + if (!$memberAccount) { + $memberAccount = MemberAccount::inviteMember($member['code'], $organizationCode, $position, $mobile, '', $description); + if (!isError($memberAccount)) { + $count++; + } + } } if ($departments) { $departmentList = explode(';', $departments); @@ -168,6 +174,8 @@ class DepartmentMember extends CommonModel } catch (Exception $e) { return error(2, $e->getMessage()); } + }else{ + } } } diff --git a/application/common/Model/Task.php b/application/common/Model/Task.php index 53ff405..772bd86 100644 --- a/application/common/Model/Task.php +++ b/application/common/Model/Task.php @@ -19,7 +19,7 @@ use think\facade\Hook; */ class Task extends CommonModel { - protected $append = ['priText', 'liked', 'stared', 'tags', 'childCount', 'hasUnDone', 'parentDone', 'hasComment', 'hasSource', 'canRead']; + protected $append = ['priText','statusText', 'liked', 'stared', 'tags', 'childCount', 'hasUnDone', 'parentDone', 'hasComment', 'hasSource', 'canRead']; public function read($code) { @@ -112,6 +112,9 @@ class Task extends CommonModel if (isset($data['pri'])) { $type = 'pri'; } + if (isset($data['status'])) { + $type = 'status'; + } if (isset($data['begin_time'])) { $type = 'setBeginTime'; if (!$data['begin_time']) { @@ -481,7 +484,16 @@ class Task extends CommonModel return false; } - public function getMemberTasks($memberCode = '', $done = 0, $page = 1, $pageSize = 10) + /** + * 成员任务 + * @param string $memberCode + * @param int $done + * @param int $taskType 搜索类型 1-我执行的 2-我参与的 3-我创建的 + * @param int $page + * @param int $pageSize + * @return array + */ + public function getMemberTasks($memberCode = '', $done = 0, $taskType = 1, $page = 1, $pageSize = 10) { if (!$memberCode) { $memberCode = getCurrentMember()['code']; @@ -489,14 +501,25 @@ class Task extends CommonModel if ($page < 1) { $page = 1; } - $offset = ($page - 1) * $page; + $offset = ($page - 1) * $pageSize; $limit = $pageSize; $prefix = config('database.prefix'); $doneSql = ''; if ($done != -1) { $doneSql = " and t.done = {$done}"; } - $sql = "select *,t.id as id,t.name as name,t.code as code,t.create_time as create_time,t.end_time,t.begin_time from {$prefix}task as t join {$prefix}project as p on t.project_code = p.code where t.deleted = 0 {$doneSql} and t.assign_to = '{$memberCode}' and p.deleted = 0 order by t.id desc"; + //我执行的 + if ($taskType == 1) { + $sql = "select *,t.id as id,t.name as name,t.code as code,t.create_time as create_time,t.end_time,t.begin_time from {$prefix}task as t join {$prefix}project as p on t.project_code = p.code where t.deleted = 0 {$doneSql} and t.assign_to = '{$memberCode}' and p.deleted = 0 order by t.id desc"; + } + //我参与的 + if ($taskType == 2) { + $sql = "select *,t.id as id,t.name as name,t.code as code,t.create_time as create_time,t.end_time,t.begin_time from {$prefix}task as t join {$prefix}project as p on t.project_code = p.code left join {$prefix}task_member as tm on tm.task_code = t.code where t.deleted = 0 {$doneSql} and tm.member_code = '{$memberCode}' and p.deleted = 0 order by t.id desc"; + } + //我创建的 + if ($taskType == 3) { + $sql = "select *,t.id as id,t.name as name,t.code as code,t.create_time as create_time,t.end_time,t.begin_time from {$prefix}task as t join {$prefix}project as p on t.project_code = p.code where t.deleted = 0 {$doneSql} and t.create_by = '{$memberCode}' and p.deleted = 0 order by t.id desc"; + } $total = Db::query($sql); $total = count($total); $sql .= " limit {$offset},{$limit}"; @@ -700,6 +723,14 @@ class Task extends CommonModel $status = [0 => '普通', 1 => '紧急', 2 => '非常紧急']; return $status[$data['pri']]; } + public function getStatusTextAttr($value, $data) + { + if (!isset($data['status'])) { + $data['status'] = 0; + } + $status = [0 => '未开始', 1 => '已完成', 2 => '进行中', 3 => '挂起', 4 => '测试中']; + return $status[$data['status']]; + } /** * 标签 diff --git a/application/common/Model/TaskStages.php b/application/common/Model/TaskStages.php index b8f2e35..379e120 100644 --- a/application/common/Model/TaskStages.php +++ b/application/common/Model/TaskStages.php @@ -34,7 +34,7 @@ class TaskStages extends CommonModel * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ - public function tasks($stageCode, $deleted = 0, $done = -1, $title = '', $pri = [], $executor = [], $creator = [], $joiner = [], $endTime = [], $beginTime = [], $createTime = [], $doneTime = []) + public function tasks($stageCode, $deleted = 0, $done = -1, $title = '', $pri = [], $executor = [], $creator = [], $joiner = [], $status = [], $endTime = [], $beginTime = [], $createTime = [], $doneTime = []) { $where = ['pcode' => '', 'deleted' => $deleted]; if ($done != -1) { @@ -43,7 +43,7 @@ class TaskStages extends CommonModel $taskModel = Task::alias('t')->where($where); if (is_array($stageCode)) { $taskModel = $taskModel->whereIn('t.stage_code', $stageCode); - }else{ + } else { $taskModel = $taskModel->where('t.stage_code', $stageCode); } if ($title) { @@ -52,6 +52,9 @@ class TaskStages extends CommonModel if ($pri) { $taskModel = $taskModel->whereIn('t.pri', $pri); } + if ($status) { + $taskModel = $taskModel->whereIn('t.status', $status); + } if ($endTime) { $taskModel = $taskModel->whereBetween('t.end_time', implode(',', $endTime)); } @@ -62,7 +65,7 @@ class TaskStages extends CommonModel $taskModel = $taskModel->whereBetween('t.create_time', implode(',', $createTime)); } if ($doneTime) { - $taskModel = $taskModel->leftJoin('project_log pl', 't.code = pl.source_code')->where(['pl.action_type'=> 'task', 'pl.type' => 'done'])->whereBetween('pl.create_time', $doneTime); + $taskModel = $taskModel->leftJoin('project_log pl', 't.code = pl.source_code')->where(['pl.action_type' => 'task', 'pl.type' => 'done'])->whereBetween('pl.create_time', $doneTime); } //todo 查询范围问题 $joinTaskMember = false; diff --git a/application/index/controller/Oauth.php b/application/index/controller/Oauth.php index 4280b0b..8c02692 100644 --- a/application/index/controller/Oauth.php +++ b/application/index/controller/Oauth.php @@ -16,7 +16,6 @@ use Symfony\Component\HttpFoundation\RedirectResponse; use think\db\exception\DataNotFoundException; use think\db\exception\ModelNotFoundException; use think\exception\DbException; -use think\facade\Log; use think\facade\Request; use think\response\Redirect; diff --git a/application/project/behavior/Task.php b/application/project/behavior/Task.php index 0174c10..5a82552 100644 --- a/application/project/behavior/Task.php +++ b/application/project/behavior/Task.php @@ -118,6 +118,10 @@ class Task $icon = 'user'; $remark = '更新任务优先级为 ' . $task['priText']; break; + case 'status': + $icon = 'deployment-unit'; + $remark = '修改执行状态为 ' . $task['statusText']; + break; case 'removeExecutor': $icon = 'user-delete'; $remark = '移除了执行者 '; diff --git a/application/project/controller/Task.php b/application/project/controller/Task.php index f28f052..4d6ce8e 100644 --- a/application/project/controller/Task.php +++ b/application/project/controller/Task.php @@ -77,6 +77,7 @@ class Task extends BasicApi */ public function selfList() { + $taskType = Request::post('taskType', 1); $type = Request::post('type', 0); $memberCode = Request::post('memberCode', ''); if (!$memberCode) { @@ -89,9 +90,11 @@ class Task extends BasicApi $done = 0; } $type == -1 && $done = $type; - $list = $this->model->getMemberTasks($member['code'], $done, Request::post('page'), Request::post('pageSize')); + $list = $this->model->getMemberTasks($member['code'], $done, $taskType, Request::post('page'), Request::post('pageSize')); + $status = [0 => '普通', 1 => '紧急', 2 => '非常紧急']; if ($list['list']) { foreach ($list['list'] as &$task) { + $task['priText'] = $status[$task['pri']]; $task['executor'] = Member::where(['code' => $task['assign_to']])->field('name,avatar')->find(); $task['projectInfo'] = \app\common\Model\Project::where(['code' => $task['project_code']])->field('name,code')->find(); } @@ -291,7 +294,7 @@ class Task extends BasicApi */ public function edit(Request $request) { - $data = $request::only('name,sort,end_time,begin_time,pri,description,work_time'); + $data = $request::only('name,sort,end_time,begin_time,pri,description,work_time,status'); $code = $request::post('taskCode'); if (!$code) { $this->error("请选择一个任务"); diff --git a/application/project/controller/TaskStages.php b/application/project/controller/TaskStages.php index 7d5cecf..2db7a27 100644 --- a/application/project/controller/TaskStages.php +++ b/application/project/controller/TaskStages.php @@ -69,6 +69,7 @@ class TaskStages extends BasicApi $done = Request::param('done', -1); $title = Request::param('title', ''); $pri = json_decode(Request::post('pri', '')); + $status = json_decode(Request::post('status', '')); $stage = json_decode(Request::post('stage', '')); $executor = json_decode(Request::post('executor', '')); $creator = json_decode(Request::post('creator', '')); @@ -81,7 +82,7 @@ class TaskStages extends BasicApi $this->error("数据解析异常"); } $where[] = ['stage_code', '=', $code]; - $list = $this->model->tasks($code, 0, $done, $title, $pri, $executor, $creator, $joiner, $endTime, $beginTime, $createTime, $doneTime); + $list = $this->model->tasks($code, 0, $done, $title, $pri, $executor, $creator, $joiner, $status, $endTime, $beginTime, $createTime, $doneTime); // $list = \app\common\Model\Task::alias('t')->join('member m','t.assign_to = m.code')->field()->where(['stage_code'=>$code])->select(); $this->success('', $list); diff --git a/composer.json b/composer.json index 6eed784..204d012 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "phpoffice/phpspreadsheet": "^1.5", "firebase/php-jwt": "^5.0", "phpmailer/phpmailer": "^6.0", - "mingyoung/dingtalk": "2.0", + "mingyoung/dingtalk": "^2.3.0", "zoujingli/ip2region": "^1.0" }, "autoload": { diff --git a/config/app.php b/config/app.php index aa4a303..a1ad078 100644 --- a/config/app.php +++ b/config/app.php @@ -6,7 +6,7 @@ return [ // 应用名称 'app_name' => 'pearProject', // 应用版本 - 'app_version' => '2.8.12', + 'app_version' => '2.8.13', // 应用地址 'app_host' => '', // 应用调试模式 diff --git a/thinkphp/library/think/session/driver/Redis.php b/thinkphp/library/think/session/driver/Redis.php index 646700b..5a0e7bc 100644 --- a/thinkphp/library/think/session/driver/Redis.php +++ b/thinkphp/library/think/session/driver/Redis.php @@ -124,7 +124,7 @@ class Redis implements SessionHandlerInterface */ public function destroy($sessID) { - return $this->handler->delete($this->config['session_name'] . $sessID) > 0; + return $this->handler->del($this->config['session_name'] . $sessID) > 0; } /**