Bläddra i källkod

feat(auth): 添加权限缓存机制以提升性能

- 使用 Cache::remember 缓存权限数据,减少重复查询
- 设置缓存有效期为 600 秒(10分钟)-保留原有权限逻辑处理流程
- 提升系统响应速度与资源利用率
runphp 5 månader sedan
förälder
incheckning
4a61385681
1 ändrade filer med 32 tillägg och 28 borttagningar
  1. 32 28
      src/Entity/ExtensionAuthPermissionEntity.php

+ 32 - 28
src/Entity/ExtensionAuthPermissionEntity.php

@@ -6,6 +6,7 @@ namespace SixShop\Auth\Entity;
 use Opis\Closure\ReflectionClosure;
 use SixShop\Auth\Model\ExtensionAuthPermissionModel;
 use SixShop\Core\Entity\BaseEntity;
+use think\facade\Cache;
 use think\route\Resource;
 use think\route\Rule;
 use function Opis\Closure\init;
@@ -26,34 +27,37 @@ class ExtensionAuthPermissionEntity extends BaseEntity
             $rc = new ReflectionClosure($route);
             $route = $rc->info()->key();
         }
-        $permission = $this->where(['route' => $route])->findOrEmpty();
-        $description = $rule->getOption('description');
-        if ($rule->getParent() instanceof Resource) {
-            $parts = explode('/', $route);
-            $rest = end($parts);
-            $name = str_replace('/', ':', $rule->getRule());
-            if ($rest != 'edit') {
-                $name .= ':' . $rest;
+        Cache::remember($route, function () use ($route, $rule) {
+            $permission = $this->where(['route' => $route])->findOrEmpty();
+            $description = $rule->getOption('description');
+            if ($rule->getParent() instanceof Resource) {
+                $parts = explode('/', $route);
+                $rest = end($parts);
+                $name = str_replace('/', ':', $rule->getRule());
+                if ($rest != 'edit') {
+                    $name .= ':' . $rest;
+                }
+                $description .= match ($rest) {
+                    'index' => '列表',
+                    'create' => '创建',
+                    'save' => '保存',
+                    'read' => '查看',
+                    'edit' => '编辑',
+                    'update' => '更新',
+                    'delete' => '删除',
+                    default => '',
+                };
+            } else {
+                $name = str_replace('/', ':', $rule->getRule());
             }
-            $description .= match ($rest) {
-                'index' => '列表',
-                'create' => '创建',
-                'save' => '保存',
-                'read' => '查看',
-                'edit' => '编辑',
-                'update' => '更新',
-                'delete' => '删除',
-                default => '',
-            };
-        } else {
-            $name = str_replace('/', ':', $rule->getRule());
-        }
-        $permission->save([
-            'name' => $name,
-            'rule' => $rule->getRule(),
-            'route' => $route,
-            'method' => $rule->getMethod(),
-            'description' => $description,
-        ]);
+            $permission->save([
+                'name' => $name,
+                'rule' => $rule->getRule(),
+                'route' => $route,
+                'method' => $rule->getMethod(),
+                'description' => $description,
+            ]);
+            return $permission->toArray();
+        }, 600);
     }
 }