perf: 新增修改任务时间权限

This commit is contained in:
kuaifan 2024-09-13 06:41:20 +03:00
parent 050c9702d8
commit a967493d77
4 changed files with 62 additions and 10 deletions

View File

@ -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,
]);

View File

@ -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:

View File

@ -0,0 +1,37 @@
<?php
use App\Models\ProjectPermission;
use Illuminate\Database\Migrations\Migration;
class UpdateProjectPermissions extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
ProjectPermission::orderBy('id')->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()
{
//
}
}

View File

@ -51,6 +51,14 @@
<Checkbox :label="2">{{ $L('项目成员') }}</Checkbox>
</CheckboxGroup>
</FormItem>
<FormItem :label="$L('修改时间')">
<CheckboxGroup v-model="formData.task_time">
<Checkbox :label="1" disabled>{{ $L('项目负责人') }}</Checkbox>
<Checkbox :label="3">{{ $L('任务负责人') }}</Checkbox>
<Checkbox :label="4">{{ $L('任务协助人') }}</Checkbox>
<Checkbox :label="2">{{ $L('项目成员') }}</Checkbox>
</CheckboxGroup>
</FormItem>
<FormItem :label="$L('修改状态')">
<CheckboxGroup v-model="formData.task_status">
<Checkbox :label="1" disabled>{{ $L('项目负责人') }}</Checkbox>
@ -109,6 +117,7 @@ export default {
project_task_list: [],
task_add: [],
task_update: [],
task_time: [],
task_status: [],
task_archived: [],
task_remove: [],