permissions; if ($key){ if (!isset($currentPermissions[$key])) { throw new ApiException('项目权限设置不存在'); } return $currentPermissions[$key]; } return $projectPermission; } /** * 初始化项目权限 * * @param int $projectId * @return ProjectPermission */ public static function initPermissions($projectId) { $permissions = [ self::TASK_ADD => [1,3], self::TASK_UPDATE => [1,2], self::TASK_REMOVE => [1,2], self::TASK_UPDATE_COMPLETE => [1,2], self::TASK_ARCHIVED => [1,2], self::TASK_MOVE => [1,2], self::PANEL_SHOW_TASK_COMPLETE => 1, ]; return self::firstOrCreate( ['project_id' => $projectId], ['permissions' => Base::array2json($permissions)] ); } /** * 更新项目权限 * * @param int $projectId * @param array $permissions * @return ProjectPermission */ public static function updatePermissions($projectId, $newPermissions) { $projectPermission = self::initPermissions($projectId); $currentPermissions = $projectPermission->permissions; $mergedPermissions = empty($newPermissions) ? $currentPermissions : array_merge($currentPermissions, $newPermissions); $projectPermission->permissions = Base::array2json($mergedPermissions); $projectPermission->save(); return $projectPermission; } }