diff --git a/composer.lock b/composer.lock index 4715f7ce6..1d0ecc574 100644 --- a/composer.lock +++ b/composer.lock @@ -879,12 +879,12 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "3241ffefd6697d1bedcc9721e3275a24055bb77b" + "reference": "0cf2b63422aff3efe9ad200b21af1ef88339726a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/3241ffefd6697d1bedcc9721e3275a24055bb77b", - "reference": "3241ffefd6697d1bedcc9721e3275a24055bb77b", + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/0cf2b63422aff3efe9ad200b21af1ef88339726a", + "reference": "0cf2b63422aff3efe9ad200b21af1ef88339726a", "shasum": "", "mirrors": [ { @@ -928,7 +928,7 @@ ], "description": "ThinkPHP v6.0 Development Library", "homepage": "http://thinkadmin.top", - "time": "2020-08-03T09:00:42+00:00" + "time": "2020-08-03T09:30:04+00:00" }, { "name": "zoujingli/wechat-developer", diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 4d43bbd3a..9009bf0a3 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -903,12 +903,12 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "3241ffefd6697d1bedcc9721e3275a24055bb77b" + "reference": "0cf2b63422aff3efe9ad200b21af1ef88339726a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/3241ffefd6697d1bedcc9721e3275a24055bb77b", - "reference": "3241ffefd6697d1bedcc9721e3275a24055bb77b", + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/0cf2b63422aff3efe9ad200b21af1ef88339726a", + "reference": "0cf2b63422aff3efe9ad200b21af1ef88339726a", "shasum": "", "mirrors": [ { @@ -924,7 +924,7 @@ "ext-json": "*", "topthink/framework": "^6.0" }, - "time": "2020-08-03T09:00:42+00:00", + "time": "2020-08-03T09:30:04+00:00", "type": "library", "extra": { "think": { diff --git a/vendor/services.php b/vendor/services.php index 9b4e9ffc4..0f19fc41f 100644 --- a/vendor/services.php +++ b/vendor/services.php @@ -1,5 +1,5 @@ 'think\\admin\\Library', diff --git a/vendor/zoujingli/think-library/src/command/Install.php b/vendor/zoujingli/think-library/src/command/Install.php index 32c8a5ae9..37aad8562 100644 --- a/vendor/zoujingli/think-library/src/command/Install.php +++ b/vendor/zoujingli/think-library/src/command/Install.php @@ -117,7 +117,7 @@ class Install extends Command $data = InstallService::instance()->grenerateDifference($this->rules, $this->ignore); if (empty($data)) $this->output->writeln('No need to update the file if the file comparison is consistent'); else foreach ($data as $file) { - list($state, $mode, $name) = InstallService::instance()->fileSynchronization($file); + [$state, $mode, $name] = InstallService::instance()->fileSynchronization($file); if ($state) { if ($mode === 'add') $this->output->writeln("--- {$name} add successfully"); if ($mode === 'mod') $this->output->writeln("--- {$name} update successfully"); diff --git a/vendor/zoujingli/think-library/src/service/InstallService.php b/vendor/zoujingli/think-library/src/service/InstallService.php index e995d1c76..b84cd3752 100644 --- a/vendor/zoujingli/think-library/src/service/InstallService.php +++ b/vendor/zoujingli/think-library/src/service/InstallService.php @@ -25,26 +25,26 @@ use think\admin\Service; */ class InstallService extends Service { - /** - * 代码地址 - * @var string - */ - protected $uri; - /** * 项目根目录 * @var string */ - protected $path; + protected $root; /** - * 当前版本号 + * 线上服务器地址 + * @var string + */ + protected $server; + + /** + * 当前大版本号 * @var string */ protected $version; /** - * 文件规则 + * 更新规则 * @var array */ protected $rules = []; @@ -57,18 +57,24 @@ class InstallService extends Service /** * 初始化服务 - * @return $this */ protected function initialize() { + // 应用根目录 + $this->root = strtr($this->app->getRootPath(), '\\', '/'); // 应用框架版本 - $this->version = $this->app->config->get('app.thinkadmin_ver'); - if (empty($this->version)) $this->version = 'v4'; + $this->version = $this->app->config->get('app.thinkadmin_ver') ?: 'v4'; // 线上应用代码 - $this->uri = "https://{$this->version}.thinkadmin.top"; - // 当前应用根目录 - $this->path = strtr($this->app->getRootPath(), '\\', '/'); - return $this; + $this->server = "https://{$this->version}.thinkadmin.top"; + } + + /** + * 获取线上接口 + * @return string + */ + public function getServer() + { + return $this->server; } /** @@ -94,7 +100,7 @@ class InstallService extends Service return [false, $file['type'], $file['name']]; } } elseif (in_array($file['type'], ['del'])) { - $real = $this->path . $file['name']; + $real = $this->root . $file['name']; if (is_file($real) && unlink($real)) { $this->removeEmptyDirectory(dirname($real)); return [true, $file['type'], $file['name']]; @@ -111,9 +117,9 @@ class InstallService extends Service */ private function downloadFile($encode) { - $result = json_decode(HttpExtend::get("{$this->uri}?s=admin/api.update/get&encode={$encode}"), true); + $result = json_decode(HttpExtend::get("{$this->server}?s=admin/api.update/get&encode={$encode}"), true); if (empty($result['code'])) return false; - $filename = $this->path . decode($encode); + $filename = $this->root . decode($encode); file_exists(dirname($filename)) || mkdir(dirname($filename), 0755, true); return file_put_contents($filename, base64_decode($result['data']['content'])); } @@ -137,8 +143,8 @@ class InstallService extends Service */ public function grenerateDifference($rules = [], $ignore = []) { - list($this->rules, $this->ignore, $data) = [$rules, $ignore, []]; - $result = json_decode(HttpExtend::post("{$this->uri}?s=/admin/api.update/node", [ + [$this->rules, $this->ignore, $data] = [$rules, $ignore, []]; + $result = json_decode(HttpExtend::post("{$this->server}?s=/admin/api.update/node", [ 'rules' => json_encode($this->rules), 'ignore' => json_encode($this->ignore), ]), true); if (!empty($result['code'])) { @@ -161,7 +167,7 @@ class InstallService extends Service private function grenerateDifferenceContrast(array $serve = [], array $local = []) { // 数据扁平化 - list($_serve, $_local, $_new) = [[], [], []]; + [$_serve, $_local, $_new] = [[], [], []]; foreach ($serve as $t) $_serve[$t['name']] = $t; foreach ($local as $t) $_local[$t['name']] = $t; unset($serve, $local); @@ -190,7 +196,7 @@ class InstallService extends Service // 扫描规则文件 foreach ($rules as $key => $rule) { $name = strtr(trim($rule, '\\/'), '\\', '/'); - $data = array_merge($data, $this->scanList("{$this->path}{$name}")); + $data = array_merge($data, $this->scanList("{$this->root}{$name}")); } // 清除忽略文件 foreach ($data as $key => $item) foreach ($ignore as $ingore) { @@ -227,7 +233,7 @@ class InstallService extends Service private function getInfo($filename) { return [ - 'name' => str_replace($this->path, '', $filename), + 'name' => str_replace($this->root, '', $filename), 'hash' => md5(preg_replace('/\s+/', '', file_get_contents($filename))), ]; } diff --git a/vendor/zoujingli/think-library/src/service/ModuleService.php b/vendor/zoujingli/think-library/src/service/ModuleService.php index 98aebaf2b..64f33d71d 100644 --- a/vendor/zoujingli/think-library/src/service/ModuleService.php +++ b/vendor/zoujingli/think-library/src/service/ModuleService.php @@ -29,7 +29,7 @@ class ModuleService extends Service * 获取模块变更 * @return array */ - public function change() + public function change(): array { [$online, $locals] = [$this->online(), $this->getModules()]; foreach ($online as &$item) if (isset($locals[$item['name']])) { @@ -50,28 +50,31 @@ class ModuleService extends Service /** * 安装或更新模块 - * @param string $name + * @param string $name 模块名称 * @return array */ public function install($name): array { - $install = InstallService::instance(); - $data = $install->grenerateDifference(["app/{$name}"]); - if (empty($data)) return [0, '没有需要安装的文件', []]; - $lines = []; - foreach ($data as $file) { - [$state, $mode, $name] = $install->fileSynchronization($file); - if ($state) { - if ($mode === 'add') $lines[] = "add {$name} successed"; - if ($mode === 'mod') $lines[] = "modify {$name} successed"; - if ($mode === 'del') $lines[] = "delete {$name} successed"; - } else { - if ($mode === 'add') $lines[] = "add {$name} failed"; - if ($mode === 'mod') $lines[] = "modify {$name} failed"; - if ($mode === 'del') $lines[] = "delete {$name} failed"; + $this->app->cache->set('module-online-data', []); + $data = InstallService::instance()->grenerateDifference(["app/{$name}"]); + if (empty($data)) { + return [0, '没有需要安装的文件', []]; + } else { + $lines = []; + foreach ($data as $file) { + [$state, $mode, $name] = InstallService::instance()->fileSynchronization($file); + if ($state) { + if ($mode === 'add') $lines[] = "add {$name} successed"; + if ($mode === 'mod') $lines[] = "modify {$name} successed"; + if ($mode === 'del') $lines[] = "deleted {$name} successed"; + } else { + if ($mode === 'add') $lines[] = "add {$name} failed"; + if ($mode === 'mod') $lines[] = "modify {$name} failed"; + if ($mode === 'del') $lines[] = "deleted {$name} failed"; + } } + return [1, '模块安装成功', $lines]; } - return [1, '模块安装成功', $lines]; } /** @@ -82,11 +85,11 @@ class ModuleService extends Service { $data = $this->app->cache->get('module-online-data', []); if (!empty($data)) return $data; - $result = json_decode(HttpExtend::get('https://v6.thinkadmin.top/admin/api.update/version'), true); + $server = InstallService::instance()->getServer(); + $result = json_decode(HttpExtend::get("{$server}/admin/api.update/version"), true); if (isset($result['code']) && $result['code'] > 0 && isset($result['data']) && is_array($result['data'])) { - foreach ($result['data'] as $item) $data[$item['name']] = $item; - $this->app->cache->set('module-online-data', $data, 1800); - return $data; + $this->app->cache->set('module-online-data', $result['data'], 1800); + return $result['data']; } else { return []; } @@ -100,7 +103,11 @@ class ModuleService extends Service { $data = []; foreach (NodeService::instance()->getModules() as $name) { - if (is_array($ver = $this->__getVersion($name))) $data[$name] = $ver; + if (is_array($ver = $this->getModuleVersion($name))) { + if (preg_match('|^\d{4}\.\d{2}\.\d{2}\.\d{2}$|', $ver['version'])) { + $data[$name] = $ver; + } + } } return $data; } @@ -110,7 +117,7 @@ class ModuleService extends Service * @param string $name 模块名称 * @return bool|array|null */ - private function __getVersion($name) + private function getModuleVersion($name) { $file = $this->app->getBasePath() . $name . DIRECTORY_SEPARATOR . 'ver.php'; if (file_exists($file) && is_file($file) && is_array($vars = @include $file)) {