From a967493d77f424680af89f32f04d8fda39d02b8b Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 13 Sep 2024 06:41:20 +0300 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=97=B6=E9=97=B4=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/ProjectController.php | 15 +++++--- app/Models/ProjectPermission.php | 11 ++++-- ...9_13_055518_update_project_permissions.php | 37 +++++++++++++++++++ .../manage/components/ProjectPermission.vue | 9 +++++ 4 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 database/migrations/2024_09_13_055518_update_project_permissions.php diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 7abf59c96..568258918 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -1692,7 +1692,7 @@ class ProjectController extends AbstractController // $task = ProjectTask::userTask($file->task_id); // - ProjectPermission::userTaskPermission(Project::userProject($task->project_id), ProjectPermission::TASK_UPDATE, $task); + ProjectPermission::userTaskPermission(Project::userProject($task->project_id), ProjectPermission::TASK_REMOVE, $task); // $task->pushMsg('filedelete', $file); $file->delete(); @@ -1964,11 +1964,13 @@ class ProjectController extends AbstractController $task = ProjectTask::userTask($task_id); // $project = Project::userProject($task->project_id); - if (Arr::exists($param, 'flow_item_id')) { - ProjectPermission::userTaskPermission($project, ProjectPermission::TASK_STATUS, $task); - }else{ - ProjectPermission::userTaskPermission($project, ProjectPermission::TASK_UPDATE, $task); + $permissionKey = ProjectPermission::TASK_UPDATE; + if (Arr::exists($param, 'times')) { + $permissionKey = ProjectPermission::TASK_TIME; + } else if (Arr::exists($param, 'flow_item_id')) { + $permissionKey = ProjectPermission::TASK_STATUS; } + ProjectPermission::userTaskPermission($project, $permissionKey, $task); // $taskUser = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($task_id)->get(); $owners = $taskUser->where('owner', 1)->pluck('userid')->toArray(); @@ -2625,8 +2627,9 @@ class ProjectController extends AbstractController ProjectPermission::TASK_LIST_SORT, ProjectPermission::TASK_ADD, ProjectPermission::TASK_UPDATE, - ProjectPermission::TASK_REMOVE, + ProjectPermission::TASK_TIME, ProjectPermission::TASK_STATUS, + ProjectPermission::TASK_REMOVE, ProjectPermission::TASK_ARCHIVED, ProjectPermission::TASK_MOVE, ]); diff --git a/app/Models/ProjectPermission.php b/app/Models/ProjectPermission.php index cbfd06e56..2655dddfe 100644 --- a/app/Models/ProjectPermission.php +++ b/app/Models/ProjectPermission.php @@ -10,7 +10,7 @@ use App\Module\Base; * * @property int $id * @property int|null $project_id 项目ID - * @property string $permissions 权限 + * @property array|string $permissions 权限 * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend() @@ -38,6 +38,7 @@ class ProjectPermission extends AbstractModel const TASK_LIST_SORT = 'task_list_sort'; // 列表排序 const TASK_ADD = 'task_add'; // 任务添加 const TASK_UPDATE = 'task_update'; // 任务更新 + const TASK_TIME = 'task_time'; // 任务时间 const TASK_STATUS = 'task_status'; // 任务状态 const TASK_REMOVE = 'task_remove'; // 任务删除 const TASK_ARCHIVED = 'task_archived'; // 任务归档 @@ -69,7 +70,7 @@ class ProjectPermission extends AbstractModel /** * 权限 * @param $value - * @return string + * @return array */ public function getPermissionsAttribute($value) { @@ -110,7 +111,8 @@ class ProjectPermission extends AbstractModel self::TASK_LIST_REMOVE => [self::PERMISSIONS['project_leader']], self::TASK_LIST_SORT => $projectTaskList, self::TASK_ADD => $projectTaskList, - self::TASK_UPDATE => [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader'], self::PERMISSIONS['task_assist']], + self::TASK_UPDATE => $taskUpdate = [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader'], self::PERMISSIONS['task_assist']], + self::TASK_TIME => $taskUpdate, self::TASK_STATUS => $taskStatus = [self::PERMISSIONS['project_leader'], self::PERMISSIONS['task_leader']], self::TASK_REMOVE => $taskStatus, self::TASK_ARCHIVED => $taskStatus, @@ -153,13 +155,14 @@ class ProjectPermission extends AbstractModel $userid = User::userid(); $permissions = self::getPermission($project->id, $action); switch ($action) { - // 任务添加,任务更新, 任务状态, 任务删除, 任务完成, 任务归档, 任务移动 + // 任务添加,任务更新, 任务状态, 任务删除, 任务完成, 任务归档, 任务移动 case self::TASK_LIST_ADD: case self::TASK_LIST_UPDATE: case self::TASK_LIST_REMOVE: case self::TASK_LIST_SORT: case self::TASK_ADD: case self::TASK_UPDATE: + case self::TASK_TIME: case self::TASK_STATUS: case self::TASK_REMOVE: case self::TASK_ARCHIVED: diff --git a/database/migrations/2024_09_13_055518_update_project_permissions.php b/database/migrations/2024_09_13_055518_update_project_permissions.php new file mode 100644 index 000000000..12807490f --- /dev/null +++ b/database/migrations/2024_09_13_055518_update_project_permissions.php @@ -0,0 +1,37 @@ +chunk(100, function ($rows) { + /** @var ProjectPermission $row */ + foreach ($rows as $row) { + $permissions = $row->permissions; + if (!isset($permissions[ProjectPermission::TASK_TIME])) { + $permissions[ProjectPermission::TASK_TIME] = $permissions[ProjectPermission::TASK_UPDATE]; + $row->permissions = \App\Module\Base::array2json($permissions); + $row->save(); + } + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/resources/assets/js/pages/manage/components/ProjectPermission.vue b/resources/assets/js/pages/manage/components/ProjectPermission.vue index 723bc4fcd..5d11b455d 100644 --- a/resources/assets/js/pages/manage/components/ProjectPermission.vue +++ b/resources/assets/js/pages/manage/components/ProjectPermission.vue @@ -51,6 +51,14 @@ {{ $L('项目成员') }} + + + {{ $L('项目负责人') }} + {{ $L('任务负责人') }} + {{ $L('任务协助人') }} + {{ $L('项目成员') }} + + {{ $L('项目负责人') }} @@ -109,6 +117,7 @@ export default { project_task_list: [], task_add: [], task_update: [], + task_time: [], task_status: [], task_archived: [], task_remove: [],