|
|
@@ -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);
|
|
|
}
|
|
|
}
|