diff --git a/application/common/Model/Project.php b/application/common/Model/Project.php index 9f9c034..0fed8ac 100644 --- a/application/common/Model/Project.php +++ b/application/common/Model/Project.php @@ -36,7 +36,7 @@ class Project extends CommonModel $offset = ($page - 1) * $page; $limit = $pageSize; $prefix = config('database.prefix'); - $sql = "select *,p.id as id,p.name as name,p.code as code from {$prefix}project as p join {$prefix}project_member as pm on p.code = pm.project_code where pm.member_code = '{$memberCode}' and p.organization_code = '$organizationCode' and p.deleted = {$deleted} and p.archive = {$archive} order by p.id desc"; + $sql = "select *,p.id as id,p.name as name,p.code as code from {$prefix}project as p join {$prefix}project_member as pm on p.code = pm.project_code left join {$prefix}project_collection as pc on p.code = pc.project_code where pm.member_code = '{$memberCode}' and p.organization_code = '$organizationCode' and p.deleted = {$deleted} and p.archive = {$archive} order by pc.id desc, p.id desc"; $total = Db::query($sql); $total = count($total); $sql .= " limit {$offset},{$limit}"; diff --git a/application/common/Model/Task.php b/application/common/Model/Task.php index 51c3e12..53ff405 100644 --- a/application/common/Model/Task.php +++ b/application/common/Model/Task.php @@ -347,6 +347,18 @@ class Task extends CommonModel $result = self::update(['done' => $done], ['code' => $taskCode]); //todo 添加任务动态,编辑权限检测 Db::commit(); + $project = Project::where(['code' => $task['project_code']])->field('auto_update_schedule,schedule')->find(); + if ($project['auto_update_schedule']) { + $taskCount = \app\common\Model\Task::where(['project_code' => $task['project_code']])->count('code'); + if ($taskCount) { + $doneTaskCount = \app\common\Model\Task::where(['project_code' => $task['project_code'], 'done' => 1])->count('code'); + $schedule = $doneTaskCount / $taskCount * 100; + $project->schedule = $schedule; + $project->save(); + } + + } + $projectAutoUpdateSchedule = 1; } catch (Exception $e) { Db::rollback(); throw new Exception($e->getMessage()); diff --git a/application/common/Model/TaskMember.php b/application/common/Model/TaskMember.php index 8fefef4..cd56595 100644 --- a/application/common/Model/TaskMember.php +++ b/application/common/Model/TaskMember.php @@ -39,7 +39,9 @@ class TaskMember extends CommonModel //已经是本人 return true; } - self::update(['is_executor' => 0], ['task_code' => $taskCode]); + if ($isExecutor) { + self::update(['is_executor' => 0], ['task_code' => $taskCode]); + } if ($memberCode) { $hasJoined = self::where(['member_code' => $memberCode, 'task_code' => $taskCode])->find(); if ($hasJoined) { @@ -73,7 +75,6 @@ class TaskMember extends CommonModel ]; //todo 添加任务动态 $result = self::create($data); - if ($isExecutor) { Task::update(['assign_to' => $memberCode], ['code' => $taskCode]); if ($memberCode == $currentMember['code']) { diff --git a/application/project/controller/Index.php b/application/project/controller/Index.php index f18477d..783025a 100644 --- a/application/project/controller/Index.php +++ b/application/project/controller/Index.php @@ -107,12 +107,12 @@ class Index extends BasicApi */ public function editPersonal() { - $params = Request::only('mobile,mail,idcard,name,realname,avatar,id'); + $params = Request::only('mobile,mail,idcard,name,realname,avatar,code'); $memberModel = new Member(); - $result = $memberModel->_edit($params, ['id' => Request::post('id')]); + $result = $memberModel->_edit($params, ['code' => $params['code']]); if (isset($params['avatar'])) { - $member = Member::get($params['id']); - MemberAccount::update(['avatar' => $params['avatar']], ['member_code' => $member['code']]); +// $member = Member::get($params['id']); + MemberAccount::update(['avatar' => $params['avatar']], ['member_code' => $params['code']]); } if ($result) { $this->success('基本信息更新成功'); @@ -179,6 +179,10 @@ class Index extends BasicApi $accountModel = new MemberAccount(); try { $file = $accountModel->uploadImg(Request::file('avatar')); + $code = Request::param('code'); + $update = ['avatar' => $file['url']]; + Member::update($update, ['code' => $code]); + MemberAccount::update($update, ['member_code' => $code]); } catch (Exception $e) { $this->error($e->getMessage(), $e->getCode());; } diff --git a/application/project/controller/Project.php b/application/project/controller/Project.php index 7c7e8b1..87f7a23 100644 --- a/application/project/controller/Project.php +++ b/application/project/controller/Project.php @@ -81,11 +81,11 @@ class Project extends BasicApi continue; } - $item['collected'] = false; + $item['collected'] = 0; $item['owner_name'] = '-'; $collected = ProjectCollection::where(['project_code' => $item['code'], 'member_code' => $currentMember['code']])->field('id')->find(); if ($collected) { - $item['collected'] = true; + $item['collected'] = 1; } $owner = ProjectMember::where(['project_code' => $item['code'], 'is_owner' => 1])->field('member_code')->find(); @@ -129,21 +129,18 @@ class Project extends BasicApi $list = $this->model->getMemberProjects($member['code'], getCurrentOrganizationCode(), $deleted, $archive, Request::post('page'), Request::post('pageSize')); if ($list['list']) { foreach ($list['list'] as $key => &$item) { - $item['collected'] = false; $item['owner_name'] = '-'; if (isset($item['project_code'])) { $item['code'] = $item['project_code']; $item = $this->model->where(['code' => $item['code']])->find(); } $collected = ProjectCollection::where(['project_code' => $item['code'], 'member_code' => getCurrentMember()['code']])->field('id')->find(); - if ($collected) { - $item['collected'] = true; - } - + $item['collected'] = $collected ? 1 : 0; $owner = ProjectMember::where(['project_code' => $item['code'], 'is_owner' => 1])->field('member_code')->find(); $member = Member::where(['code' => $owner['member_code']])->field('name')->find(); $item['owner_name'] = $member['name']; } + unset($item); } $this->success('', $list); } @@ -187,10 +184,10 @@ class Project extends BasicApi if (!$project) { $this->notFound(); } - $project['collected'] = false; + $project['collected'] = 0; $collected = ProjectCollection::where(['project_code' => $project['code'], 'member_code' => getCurrentMember()['code']])->field('id')->find(); if ($collected) { - $project['collected'] = true; + $project['collected'] = 1; } $item['owner_name'] = ''; $item['owner_avatar'] = ''; @@ -214,7 +211,7 @@ class Project extends BasicApi */ public function edit(Request $request) { - $data = $request::only('name,description,cover,private,prefix,open_prefix,schedule,open_begin_time,open_task_private,task_board_theme,begin_time,end_time'); + $data = $request::only('name,description,cover,private,prefix,open_prefix,schedule,open_begin_time,open_task_private,task_board_theme,begin_time,end_time,auto_update_schedule'); $code = $request::param('projectCode'); try { $result = $this->model->edit($code, $data); @@ -297,7 +294,7 @@ class Project extends BasicApi debug('begin'); $result = ProjectReport::setDayilyProejctReport(); debug('end'); - logRecord(debug('begin','end') * 1000 . 'ms', 'setDayilyProejctReportSuccess'); + logRecord(debug('begin', 'end') * 1000 . 'ms', 'setDayilyProejctReportSuccess'); echo 'success_at ' . nowTime(); } diff --git a/application/project/middleware/ProjectAuth.php b/application/project/middleware/ProjectAuth.php index a21d154..50dc68e 100644 --- a/application/project/middleware/ProjectAuth.php +++ b/application/project/middleware/ProjectAuth.php @@ -5,6 +5,7 @@ namespace app\project\middleware; use app\common\Model\Project; use app\common\Model\ProjectMember; use app\common\Model\Task; +use app\common\Model\TaskStages; use think\Request; /** @@ -25,7 +26,7 @@ class ProjectAuth 'Task/save', 'Task/taskDone', 'Task/assignTask', -// 'Task/sort', + 'Task/sort', 'Task/edit', 'Task/recycle', 'Task/recovery', @@ -116,6 +117,15 @@ class ProjectAuth $code = $task['project_code']; } } + if (!$code) { + $taskStageCode = \think\facade\Request::param('stageCode'); + if ($taskStageCode) { + $taskStage = TaskStages::where(['code' => $taskStageCode])->find(); + if ($taskStage) { + $code = $taskStage['project_code']; + } + } + } return $code; } diff --git a/data/2.8.0/2.8.5-2.8.6.sql b/data/2.8.0/2.8.5-2.8.6.sql new file mode 100644 index 0000000..79b6a35 --- /dev/null +++ b/data/2.8.0/2.8.5-2.8.6.sql @@ -0,0 +1,29 @@ +SET FOREIGN_KEY_CHECKS=0; + +ALTER TABLE `pearProject`.`pear_project` ADD COLUMN `auto_update_schedule` tinyint(1) NULL DEFAULT 0 COMMENT '自动更新项目进度' AFTER `end_time`; + +ALTER TABLE `pearProject`.`pear_project_features` ADD INDEX `project_code`(`project_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_project_features` ADD INDEX `organization_code`(`organization_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_project_log` DROP INDEX `member_code`; + +ALTER TABLE `pearProject`.`pear_project_log` ADD INDEX `source_code`(`source_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_project_version` ADD INDEX `organization_code`(`organization_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_project_version` ADD INDEX `features_code`(`features_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_project_version_log` ADD INDEX `project_code`(`project_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_project_version_log` ADD INDEX `features_code`(`features_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_task` ADD INDEX `stage_code`(`stage_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_task` ADD INDEX `project_code`(`project_code`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_task` ADD INDEX `pcode`(`pcode`) USING BTREE; + +ALTER TABLE `pearProject`.`pear_task` ADD INDEX `sort`(`sort`) USING BTREE; + +SET FOREIGN_KEY_CHECKS=1; diff --git a/data/2.8.0/pearproject.sql b/data/2.8.0/pearproject.sql index 9d5ef93..a68c135 100644 --- a/data/2.8.0/pearproject.sql +++ b/data/2.8.0/pearproject.sql @@ -3,15 +3,15 @@ Source Server : localhost Source Server Type : MySQL - Source Server Version : 50726 + Source Server Version : 80012 Source Host : localhost:3306 Source Schema : pearproject Target Server Type : MySQL - Target Server Version : 50726 + Target Server Version : 80012 File Encoding : 65001 - Date: 19/08/2019 10:02:58 + Date: 02/09/2019 15:30:46 */ SET NAMES utf8mb4; @@ -218,8 +218,8 @@ CREATE TABLE `pear_member` ( `dingtalk_unionid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '钉钉unionid', `dingtalk_userid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '钉钉用户id', PRIMARY KEY (`id`) USING BTREE, - INDEX `username`(`account`) USING BTREE, - UNIQUE INDEX `code`(`code`) USING BTREE + UNIQUE INDEX `code`(`code`) USING BTREE, + INDEX `username`(`account`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 589 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表' ROW_FORMAT = Compact; -- ---------------------------- @@ -392,8 +392,8 @@ CREATE TABLE `pear_project` ( `begin_time` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目开始日期', `end_time` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目截止日期', PRIMARY KEY (`id`) USING BTREE, - INDEX `project`(`order`) USING BTREE, - UNIQUE INDEX `code`(`code`) USING BTREE + UNIQUE INDEX `code`(`code`) USING BTREE, + INDEX `project`(`order`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13043 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表' ROW_FORMAT = Compact; -- ---------------------------- diff --git a/data/pearproject.sql b/data/pearproject.sql index 9d5ef93..a68c135 100644 --- a/data/pearproject.sql +++ b/data/pearproject.sql @@ -3,15 +3,15 @@ Source Server : localhost Source Server Type : MySQL - Source Server Version : 50726 + Source Server Version : 80012 Source Host : localhost:3306 Source Schema : pearproject Target Server Type : MySQL - Target Server Version : 50726 + Target Server Version : 80012 File Encoding : 65001 - Date: 19/08/2019 10:02:58 + Date: 02/09/2019 15:30:46 */ SET NAMES utf8mb4; @@ -218,8 +218,8 @@ CREATE TABLE `pear_member` ( `dingtalk_unionid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '钉钉unionid', `dingtalk_userid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '钉钉用户id', PRIMARY KEY (`id`) USING BTREE, - INDEX `username`(`account`) USING BTREE, - UNIQUE INDEX `code`(`code`) USING BTREE + UNIQUE INDEX `code`(`code`) USING BTREE, + INDEX `username`(`account`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 589 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表' ROW_FORMAT = Compact; -- ---------------------------- @@ -392,8 +392,8 @@ CREATE TABLE `pear_project` ( `begin_time` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目开始日期', `end_time` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目截止日期', PRIMARY KEY (`id`) USING BTREE, - INDEX `project`(`order`) USING BTREE, - UNIQUE INDEX `code`(`code`) USING BTREE + UNIQUE INDEX `code`(`code`) USING BTREE, + INDEX `project`(`order`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13043 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表' ROW_FORMAT = Compact; -- ----------------------------