mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
ComposerUpdate
This commit is contained in:
parent
fc6b18b94f
commit
794a2777a7
8
composer.lock
generated
8
composer.lock
generated
@ -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",
|
||||
|
8
vendor/composer/installed.json
vendored
8
vendor/composer/installed.json
vendored
@ -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": {
|
||||
|
2
vendor/services.php
vendored
2
vendor/services.php
vendored
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// This file is automatically generated at:2020-08-03 17:05:42
|
||||
// This file is automatically generated at:2020-08-03 17:36:09
|
||||
declare (strict_types = 1);
|
||||
return array (
|
||||
0 => 'think\\admin\\Library',
|
||||
|
@ -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");
|
||||
|
@ -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))),
|
||||
];
|
||||
}
|
||||
|
@ -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)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user