diff --git a/application/admin/command/Api/library/Builder.php b/application/admin/command/Api/library/Builder.php index 1ca2921f..dda3a4aa 100755 --- a/application/admin/command/Api/library/Builder.php +++ b/application/admin/command/Api/library/Builder.php @@ -167,6 +167,11 @@ class Builder $sectorArr[$sector] = isset($allClassAnnotation['ApiWeigh']) ? $allClassAnnotation['ApiWeigh'][0] : 0; } arsort($sectorArr); + $routes = include_once CONF_PATH . 'route.php'; + $subdomain = false; + if (config('url_domain_deploy') && isset($routes['__domain__']) && isset($routes['__domain__']['api']) && $routes['__domain__']['api']) { + $subdomain = true; + } $counter = 0; $section = null; $weigh = 0; @@ -181,12 +186,16 @@ class Builder if (0 === count($docs)) { continue; } + $route = is_array($docs['ApiRoute'][0]) ? $docs['ApiRoute'][0]['data'] : $docs['ApiRoute'][0]; + if ($subdomain) { + $route = substr($route, 4); + } $docslist[$section][$name] = [ 'id' => $counter, 'method' => is_array($docs['ApiMethod'][0]) ? $docs['ApiMethod'][0]['data'] : $docs['ApiMethod'][0], 'method_label' => $this->generateBadgeForMethod($docs), 'section' => $section, - 'route' => is_array($docs['ApiRoute'][0]) ? $docs['ApiRoute'][0]['data'] : $docs['ApiRoute'][0], + 'route' => $route, 'title' => is_array($docs['ApiTitle'][0]) ? $docs['ApiTitle'][0]['data'] : $docs['ApiTitle'][0], 'summary' => is_array($docs['ApiSummary'][0]) ? $docs['ApiSummary'][0]['data'] : $docs['ApiSummary'][0], 'body' => isset($docs['ApiBody'][0]) ? is_array($docs['ApiBody'][0]) ? $docs['ApiBody'][0]['data'] : $docs['ApiBody'][0] : '', @@ -200,7 +209,7 @@ class Builder $counter++; } } - + //重建排序 foreach ($docslist as $index => &$methods) { $methodSectorArr = []; @@ -223,7 +232,7 @@ class Builder /** * 渲染 * @param string $template - * @param array $vars + * @param array $vars * @return string */ public function render($template, $vars = []) diff --git a/application/admin/command/Api/library/Extractor.php b/application/admin/command/Api/library/Extractor.php index de46d1f1..5591921b 100644 --- a/application/admin/command/Api/library/Extractor.php +++ b/application/admin/command/Api/library/Extractor.php @@ -245,6 +245,7 @@ class Extractor return \think\Loader::parseName($item); }, $suffixArr)); $urlArr[] = $method->getName(); + $methodAnnotations['ApiRoute'] = [implode('/', $urlArr)]; } if (!isset($methodAnnotations['ApiSector'])) { diff --git a/application/admin/command/Api/template/index.html b/application/admin/command/Api/template/index.html index b86effea..e2b0708a 100755 --- a/application/admin/command/Api/template/index.html +++ b/application/admin/command/Api/template/index.html @@ -428,8 +428,8 @@ $(document).ready(function () { if (storage) { - $('#token').val(storage.getItem('token')); - $('#apiUrl').val(storage.getItem('apiUrl')); + storage.getItem('token') && $('#token').val(storage.getItem('token')); + storage.getItem('apiUrl') && $('#apiUrl').val(storage.getItem('apiUrl')); } $('[data-toggle="tooltip"]').tooltip({ diff --git a/application/admin/controller/Addon.php b/application/admin/controller/Addon.php index f4f0c298..110302d0 100644 --- a/application/admin/controller/Addon.php +++ b/application/admin/controller/Addon.php @@ -191,6 +191,7 @@ class Addon extends Backend $tmpFile = $addonTmpDir . $info->getSaveName(); try { Service::unzip($tmpName); + unset($info); @unlink($tmpFile); $infoFile = $tmpAddonDir . 'info.ini'; if (!is_file($infoFile)) { @@ -235,6 +236,7 @@ class Addon extends Backend throw new Exception(__($e->getMessage())); } } catch (Exception $e) { + unset($info); @unlink($tmpFile); @rmdirs($tmpAddonDir); $this->error(__($e->getMessage())); diff --git a/application/admin/library/Auth.php b/application/admin/library/Auth.php index ddc43d30..99698a0d 100644 --- a/application/admin/library/Auth.php +++ b/application/admin/library/Auth.php @@ -374,12 +374,28 @@ class Auth extends \fast\Auth $refererUrl = Session::get('referer'); $pinyin = new \Overtrue\Pinyin\Pinyin('Overtrue\Pinyin\MemoryFileDictLoader'); // 必须将结果集转换为数组 - $ruleList = collection(\app\admin\model\AuthRule::where('status', 'normal')->where('ismenu', 1)->order('weigh', 'desc')->cache("__menu__")->select())->toArray(); + $ruleList = collection(\app\admin\model\AuthRule::where('status', 'normal') + ->where('ismenu', 1) + ->order('weigh', 'desc') + ->cache("__menu__") + ->select())->toArray(); + $indexRuleList = \app\admin\model\AuthRule::where('status', 'normal') + ->where('ismenu', 0) + ->where('name', 'like', '%/index') + ->column('name,pid'); + $pidArr = array_filter(array_unique(array_map(function ($item) { + return $item['pid']; + }, $ruleList))); foreach ($ruleList as $k => &$v) { if (!in_array($v['name'], $userRule)) { unset($ruleList[$k]); continue; } + $indexRuleName = $v['name'] . '/index'; + if (isset($indexRuleList[$indexRuleName]) && !in_array($indexRuleName, $userRule)) { + unset($ruleList[$k]); + continue; + } $v['icon'] = $v['icon'] . ' fa-fw'; $v['url'] = '/' . $module . '/' . $v['name']; $v['badge'] = isset($badgeList[$v['name']]) ? $badgeList[$v['name']] : ''; @@ -389,6 +405,14 @@ class Auth extends \fast\Auth $selected = $v['name'] == $fixedPage ? $v : $selected; $referer = url($v['url']) == $refererUrl ? $v : $referer; } + $lastArr = array_diff($pidArr, array_filter(array_unique(array_map(function ($item) { + return $item['pid']; + }, $ruleList)))); + foreach ($ruleList as $index => $item) { + if (in_array($item['id'], $lastArr)) { + unset($ruleList[$index]); + } + } if ($selected == $referer) { $referer = []; } diff --git a/application/admin/view/general/attachment/select.html b/application/admin/view/general/attachment/select.html index dc967fbd..1e89b158 100644 --- a/application/admin/view/general/attachment/select.html +++ b/application/admin/view/general/attachment/select.html @@ -7,6 +7,7 @@