初始化项目:添加后端代码、ThinkPHP框架、前端资源

This commit is contained in:
amb
2026-09-03 12:42:39 +08:00
commit 482bece22e
3726 changed files with 416708 additions and 0 deletions
@@ -0,0 +1,226 @@
<?php
namespace app\admin\controller\app\project;
use app\common\controller\Backend;
use think\Cookie;
/**
* 应用插件
*/
class App extends Backend
{
/**
* AttachmentGroup模型对象
* @var \app\admin\model\attachment\AttachmentGroup
*/
protected $model = null;
protected $noNeedRight = ['isInstall'];
public function _initialize()
{
parent::_initialize();
$this->appLibrary = new \app\admin\library\project\App;
}
/**
* 获取已经安装的应用列表
* @return void
*/
public function getInstalledApp(){
$appList = $this->appLibrary->getInstallAppList();
$this->success("获取成功",$appList);
}
/**
* 获取最新版本信息
* @return void
*/
public function newest(){
$newestVersion = $this->getNewestVersion();
if(!$newestVersion){
$this->error("获取版本信息失败");
}
$this->success("获取成功",$newestVersion);
}
/**
* 更新数据库文件
* @return void
*/
public function sql(){
$appTag = input('tag');
$license_token = input('license_token');
if(!$license_token){
$this->error("请登录授权账户后再更新");
}
$versionData = $this->getNewestVersion();
if(!$versionData){
$this->error("获取更新文件失败");
}
try {
$client = \app\common\library\Client::getClient();
$response = $client->request("POST",'api/license/app/sql',[
'form_params'=>[
'token'=>$license_token,
'app_tag'=>$appTag,
'new_version'=>$versionData['version_new_no'],
'old_version'=>Cookie::get($appTag.'_old_app_version_no')
]
]);
$body = $response->getBody();
$data = $body->getContents();
} catch (\Exception $e) {
$this->error("请求失败");
}
$data = json_decode($data,true);
if(!$data || !isset($data['data'])){
$this->error("获取数据库数据失败");
}
if($data['data']){
$result = $this->appLibrary->runsql($data['data']);
if($result !== true){
return $this->error($result);
}
}
$this->appLibrary->refreshAppVersion($appTag,$versionData['version_new_no']);
$this->success("操作成功");
}
/**
* 检查应用是否已经安装
* @return void
*/
public function isInstall(){
$appTag = input('tag');
if(!$this->appLibrary->isInstall($appTag)){
$this->error("未安装");
}
$this->success("已安装");
}
/**
* 下载更新文件
* @return void
*/
public function download(){
set_time_limit(0);
ini_set('memory_limit', '512M');
$appTag = input('tag');
$license_token = input('license_token');
if(!$license_token){
$this->error("请在【系统】-【系统升级】中登录授权账户后再操作");
}
$data = $this->getNewestVersion();
if(!$data){
$this->error("获取更新文件失败");
}
if($data['package_url'] == 'un_login'){
$this->error("请在【系统】-【系统升级】中登录授权账户后再操作");
}
//判断版本号
if(version_compare($data['version_new_no'],$this->appLibrary->getAppVersion($appTag))<=0){
$this->error("当前已是最新版");
}
if(!$data['package_url'] || $data['package_url'] == 'un_auth'){
$this->error("暂无更新权限,请联系客服开通");
}
Cookie::set($appTag.'_old_app_version_no',$this->appLibrary->getAppVersion($appTag),60000);
$result = $this->appLibrary->download($data['package_url'],$this->getFilePath('zip_file',$appTag));
if($result !== true){
return $this->error($result);
}
return $this->success("操作成功");
}
/**
* 解压文件
* @return void
*/
public function unzip(){
$appTag = input('tag');
$result = $this->appLibrary->unzip($this->getFilePath('zip_file',$appTag),$this->getFilePath('root',$appTag));
if($result !== true){
return $this->error($result);
}
return $this->success("操作成功");
}
/**
* 获取文件地址
* @param $type
* @return string|void
*/
protected function getFilePath($type,$appTag){
if($type == 'root'){
return $_SERVER['DOCUMENT_ROOT'] . '/../';
}
if($type == 'zip_file'){
return $_SERVER['DOCUMENT_ROOT'] . '/../runtime/app/'.$appTag.'.zip';
}
}
/**
* 远程获取最新版本信息
* @return false
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function getNewestVersion(){
$license_token = input('license_token');
$appTag = input('tag');
try {
$client = \app\common\library\Client::getClient();
$response = $client->request("POST",'api/license/app/newest',[
'form_params'=>[
'token'=>$license_token,
'app_tag'=>$appTag
]
]);
$body = $response->getBody();
$data = $body->getContents();
} catch (\Exception $e) {
return false;
}
$data = json_decode($data,true);
if(!$data || !isset($data['data'])){
return false;
}
$data['data']['version_now'] = $this->appLibrary->getAppVersion($appTag);
return $data['data'];
}
}