作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -24,6 +24,9 @@ class RemainDay extends Command
*/
protected $signature = 'remain_day';
/**
* @var 按上线时间统计
*/
protected $projectId = [
1434,1812
];//需要单独处理的项目
... ... @@ -58,6 +61,14 @@ class RemainDay extends Command
{
$list = Project::whereIn('type', [Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR])->get();
foreach ($list as $item){
if(in_array($item->id,$this->ceaseProjectId)){//暂停的项目
if($item['type'] == Project::TYPE_TWO && $item->is_compliance == 1){
$item->pause_days = $item->pause_days + 1;
}
if($item['type'] != Project::TYPE_THREE){
$item->pause_days = $item->pause_days + 1;
}
}
if(in_array($item->id,$this->projectId)){//已开始优化的时间结算
$optimizeModel = new DeployOptimize();
$opInfo = $optimizeModel->read(['project_id'=>$item->id],['start_date']);
... ... @@ -65,22 +76,16 @@ class RemainDay extends Command
continue;
}
$diff = time() - strtotime($opInfo['start_date'] ?? $item->uptime);
$remain_day = $item['deploy_build']['service_duration'] - floor($diff / (60 * 60 * 24));
$remain_day = $item['deploy_build']['service_duration'] + $item->pause_days - floor($diff / (60 * 60 * 24));
}else{
if($item['type'] == Project::TYPE_TWO){
//获取当前项目的达标天数
if(in_array($item->id,$this->ceaseProjectId) && ($item->is_compliance == 1)){
//查看今日是否达标(已达标减1)
$item->finish_remain_day = (($item->finish_remain_day - 1) < 0) ? 0 : $item->finish_remain_day - 1;
$item->pause_days = $item->pause_days + 1;
}
$compliance_day = $item->finish_remain_day ?? 0;
$remain_day = $item['deploy_build']['service_duration'] - $compliance_day;
$remain_day = $item['deploy_build']['service_duration'] + $item->pause_days - $compliance_day;
}else{
if($item->uptime){
$diff = time() - strtotime($item->uptime);
$item->finish_remain_day = floor($diff / (60 * 60 * 24));
$remain_day = $item['deploy_build']['service_duration'] - floor($diff / (60 * 60 * 24));
$remain_day = $item['deploy_build']['service_duration'] + $item->pause_days - floor($diff / (60 * 60 * 24));
}else{
$remain_day = $item['deploy_build']['service_duration'];
}
... ...
... ... @@ -55,13 +55,13 @@ class UpdateRoute extends Command
*/
public function handle(){
$projectModel = new Project();
$list = $projectModel->list(['id'=>['in',[802]]]);
$list = $projectModel->list(['id'=>['in',[147]]]);
$data = [];
foreach ($list as $v){
echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
ProjectServer::useProject($v['id']);
// $this->getProduct();
$this->setProductKeyword();
$this->getProduct();
// $this->setProductKeyword();
// $this->getBlog();
DB::disconnect('custom_mysql');
}
... ... @@ -215,7 +215,7 @@ class UpdateRoute extends Command
public function getProduct(){
$productModel = new Product();
$lists = $productModel->list(['status'=>1,'id'=>['<=',501]]);
$lists = $productModel->list(['status'=>2]);
if(!empty($lists)){
foreach ($lists as $v){
if(!empty($v['route'])){
... ... @@ -227,14 +227,15 @@ class UpdateRoute extends Command
$route = RouteMap::setRoute($route, RouteMap::SOURCE_PRODUCT, $v['id'], $v['project_id']);
$productModel->edit(['route'=>$route],['id'=>$v['id']]);
}else{
// echo date('Y-m-d H:i:s') . 'id :'.$v['id'] . PHP_EOL;
// $route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_PRODUCT, $v['id'], $v['project_id']);
// $productModel->edit(['route'=>$route],['id'=>$v['id']]);
echo date('Y-m-d H:i:s') . 'id :'.$v['id'] . PHP_EOL;
$route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_PRODUCT, $v['id'], $v['project_id']);
$productModel->edit(['route'=>$route],['id'=>$v['id']]);
}
continue;
}else{
echo date('Y-m-d H:i:s') . 'id :'.$v['id'] . PHP_EOL;
$v['title'] = Translate::tran($v['title'], 'en');
$v['title'] = str_replace('.','',$v['title']).'-product';
$route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_PRODUCT, $v['id'], $v['project_id']);
$productModel->edit(['route'=>$route],['id'=>$v['id']]);
}
... ...
... ... @@ -11,7 +11,10 @@ namespace App\Http\Controllers\Aside\ExtentModule;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\ExtensionModule\ExtensionModuleLogic;
use App\Models\ExtentModule\ExtensionModule;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
class ExtensionModuleController extends BaseController
{
... ... @@ -23,8 +26,46 @@ class ExtensionModuleController extends BaseController
* @time :2024/8/7 11:48
*/
public function getModuleLists(){
ProjectServer::useProject($this->map['project_id']);
$extensionModuleModel = new ExtensionModule();
$list = $extensionModuleModel->list();
DB::disconnect('custom_mysql');
$this->response('success',Code::SUCCESS,$list);
}
/**
* @remark :保存拓展数据模块
* @name :saveModule
* @author :lyh
* @method :post
* @time :2024/8/7 15:44
*/
public function saveModule(ExtensionModuleLogic $logic){
$this->request->validate([
'title'=>'required',
'status'=>'required',
],[
'title.required' => '名称不能为空',
'status.required' => '状态不能为空',
]);
$data = $logic->saveExtensionModule();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :删除模块
* @name :delModule
* @author :lyh
* @method :post
* @time :2024/8/7 16:02
*/
public function delModule(ExtensionModuleLogic $logic){
$this->request->validate([
'id'=>'required',
],[
'id.required' => '名称不能为空',
]);
$logic->delExtensionModule();
$this->response('success');
}
}
... ...
<?php
/**
* @remark :
* @name :ExtensionModuleController.php
* @author :lyh
* @method :post
* @time :2024/8/7 16:15
*/
namespace App\Http\Controllers\Bside\ExtensionModule;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\ExtensionModule\ExtensionModuleFieldLogic;
use App\Models\ExtentModule\ExtensionModule;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Models\ExtentModule\ExtensionModuleValue;
use Illuminate\Support\Facades\DB;
class ExtensionModuleController extends BaseController
{
/**
* @remark :获取扩展数据模块
* @name :getModuleList
* @author :lyh
* @method :post
* @time :2024/8/7 16:16
*/
public function getModuleList(){
$moduleModel = new ExtensionModule();
$this->map['status'] = 0;
$list = $moduleModel->list($this->map);
$this->response('success',Code::SUCCESS,$list);
}
/**
* @remark :获取数据类型
* @name :getDataType
* @author :lyh
* @method :post
* @time :2024/8/7 17:31
*/
public function getDataType(){
$data = [
'1'=>'文本框',
'2'=>'多文本输入框',
'3'=>'图片框',
'4'=>'文件框',
'5'=>'下拉框',
'6'=>'自动生成订单框'
];
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取当前模块字段
* @name :getModuleFiledInfo
* @author :lyh
* @method :post
* @time :2024/8/7 16:20
*/
public function getModuleFiledInfo(){
$this->request->validate([
'module_id'=>'required',
],[
'module_id.required' => '模块id不能为空',
]);
$moduleFieldModel = new ExtensionModuleField();
$list = $moduleFieldModel->list(['module_id'=>$this->param['module_id']]);
$this->response('success',Code::SUCCESS,$list);
}
/**
* @remark :添加字段
* @name :saveModuleField
* @author :lyh
* @method :post
* @time :2024/8/7 16:27
*/
public function saveModuleField(ExtensionModuleFieldLogic $logic){
$this->request->validate([
'module_id'=>'required',
'field_name'=>'required',
'data_type'=>'required',
'is_required'=>'required',
],[
'module_id.required' => '模块id不能为空',
'field_name.required' => '字段名称不能为空',
'data_type.required' => '数据类型不能为空',
'is_required.required' => '是否必填不能为空',
]);
$data = $logic->saveModuleField();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :删除字段
* @name :delModuleField
* @author :lyh
* @method :post
* @time :2024/8/7 17:10
*/
public function delModuleField(ExtensionModuleFieldLogic $logic){
$this->request->validate([
'field_id'=>'required',
],[
'field_id.required' => '字段id不能为空',
]);
$logic->delModuleField();
$this->response('success');
}
/**
* @remark :获取当前模块的所有数据
* @name :getModuleValueList
* @author :lyh
* @method :post
* @time :2024/8/7 17:37
*/
public function getModuleValueList(){
$this->request->validate([
'module_id'=>'required',
],[
'module_id.required' => '模块id不能为空',
]);
$data = [];
$moduleValueModel = new ExtensionModuleValue();
$lists = $moduleValueModel->list(['module_id'=>$this->param['module_id']]);
if(!empty($lists)){
foreach ($lists as $k => $v){
$data[$v['uuid']][$v['field_id']] = $v['value'];
}
}
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存数据
* @name :saveModuleValue
* @author :lyh
* @method :post
* @time :2024/8/7 17:59
*/
public function editModuleValue(){
$this->request->validate([
'module_id'=>'required',
],[
'module_id.required' => '模块id不能为空',
]);
$data = $this->param['data'];
$moduleValueModel = new ExtensionModuleValue();
foreach ($data as $k => $v){
$info = $moduleValueModel->read(['uuid'=>$this->param['uuid'],'field_id'=>$v['field_id'],'module_id'=>$this->param['module_id']]);
if($info === false){
$data = [
'uuid'=>$this->param['uuid'],
'module_id'=>$this->param['module_id'],
'field_id'=>$v['field_id'],
'value'=>$v['value']
];
$moduleValueModel->addReturnId($data);
}else{
$moduleValueModel->edit(['value'=>$v['value']],['id'=>$info['id']]);
}
}
$this->response('success',Code::SUCCESS,['uuid'=>$this->param['uuid']]);
}
/**
* @remark :新增數據
* @name :addModuleValue
* @author :lyh
* @method :post
* @time :2024/8/8 10:00
*/
public function addModuleValue(){
$this->request->validate([
'module_id'=>'required',
],[
'module_id.required' => '模块id不能为空',
]);
$moduleValueModel = new ExtensionModuleValue();
$info = $moduleValueModel->where('module_id',$this->param['module_id'])->orderBy('uuid','desc')->first()->toArray();
if(empty($info)){
$uuid = 1;
}else{
$uuid = $info['uuid'] + 1;
}
$data = $this->param['data'];
$moduleValueModel = new ExtensionModuleValue();
foreach ($data as $k => $v){
$data = [
'uuid'=>$uuid,
'module_id'=>$this->param['module_id'],
'field_id'=>$v['field_id'],
'value'=>$v['value']
];
$moduleValueModel->addReturnId($data);
}
$this->response('success',Code::SUCCESS,['uuid'=>$this->param['uuid']]);
}
}
... ...
... ... @@ -85,6 +85,7 @@ class KeywordController extends BaseController
}
$map['route'] = ['<>',''];
$map['project_id'] = $this->user['project_id'];
$map['deleted_at'] = null;
return $this->success($map);
}
... ...
<?php
/**
* @remark :
* @name :ExtensionModuleLogic.php
* @author :lyh
* @method :post
* @time :2024/8/7 15:48
*/
namespace App\Http\Logic\Aside\ExtensionModule;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\ExtentModule\ExtensionModule;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
class ExtensionModuleLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->param = $this->requestAll;
}
/**
* @remark :保存数据
* @name :saveExtensionModule
* @author :lyh
* @method :post
* @time :2024/8/7 15:50
*/
public function saveExtensionModule(){
ProjectServer::useProject($this->param['project_id']);
unset($this->param['project_id']);
$this->model = new ExtensionModule();
//查看数据是否存在
if(isset($this->param['id']) && !empty($this->param['id'])){
$info = $this->model->read(['title'=>$this->param['title'],'id'=>['!=',$this->param['id']]]);
}else{
$info = $this->model->read(['title'=>$this->param['title']]);
}
if($info !== false){
$this->fail('当前拓展数据名称已存在');
}
$this->param['data'] = empty($this->param['data']) ? null : json_encode($this->param['data']);
if(isset($this->param['id']) && !empty($this->param['id'])){
$id = $this->param['id'];
$this->model->edit($this->param,['id'=>$id]);
}else{
$id = $this->model->addReturnId($this->param);
}
DB::disconnect('custom_mysql');
return $this->success(['id'=>$id]);
}
/**
* @remark :删除扩展数据模块
* @name :delExtensionModule
* @author :lyh
* @method :post
* @time :2024/8/7 16:07
*/
public function delExtensionModule(){
ProjectServer::useProject($this->param['project_id']);
unset($this->param['project_id']);
$moduleFiledModel = new ExtensionModuleField();
$info = $moduleFiledModel->read(['module_id'=>$this->param['id']]);
if($info !== false){
$this->fail('请先删除当前模块的字段,在进行删除');
}
$this->model = new ExtensionModule();
$this->model->del(['id'=>$this->param['id']]);
DB::disconnect('custom_mysql');
return $this->success();
}
}
... ...
... ... @@ -149,7 +149,10 @@ class CustomTemplateLogic extends BaseLogic
}
}
$this->editCustomRoute($this->param['url']);
unset($this->param['html'],$this->param['html_style']);
$this->param['is_visualization'] = isset($this->param['is_visualization']) ? $this->param['is_visualization'] : 0;
if($this->param['is_visualization'] == 0 || $this->param['is_visualization'] == 1){
unset($this->param['html'],$this->param['html_style']);
}
$this->model->edit($this->param,['id'=>$id]);
}else{
if($this->param['url'] == $this->model::NOT_FOUND_PAGE_URL){
... ... @@ -213,7 +216,6 @@ class CustomTemplateLogic extends BaseLogic
if($bSettingInfo === false){
$this->fail('请先选择模版');
}
$handleInfo = $this->handleResultParam($html);
if(!isset($this->param['template_status'])){//代表直接替换模版 不更新头部底部
$this->saveTemplateCom($handleInfo,$bSettingInfo['template_id']);
... ... @@ -304,8 +306,7 @@ class CustomTemplateLogic extends BaseLogic
}else{
$param['html'] = $handleInfo['other'];
$param['html_style'] = null;
$type == BTemplate::COMMON_HEAD;
$typeSource = $this->getType($type);
$typeSource = $this->getType();
}
//查看当前数据是否还存在
$condition = ['template_id'=>$template_id,'source'=>$typeSource,'common_type'=>$type];
... ... @@ -477,15 +478,14 @@ class CustomTemplateLogic extends BaseLogic
//获取当前数据详情
$info = $this->model->read(['id'=>$logInfo['source_id']],['is_visualization']);
if($info['is_visualization'] == 0 || $info['is_visualization'] == 1){
//还原头部底部
$type = $this->getType();
//还原头部+底部
$commonData = [
'head_html'=>$logInfo['head_html'], 'head_css'=>$logInfo['head_css'],
'footer_html'=>$logInfo['footer_html'], 'footer_css'=>$logInfo['footer_css']
];
$commonTemplateModel = new BTemplateCommon();
$commonTemplateModel->edit($commonData,['template_id'=>$logInfo['template_id'],'type'=>$type,'project_id'=>$this->user['project_id']]);
$comTemplateModel = new BTemplateCom();
//还原头部底部
$header_type = $this->getType(BTemplate::COMMON_HEAD);
$comTemplateModel->edit(['html'=>$logInfo['other']],['template_id'=>$logInfo['template_id'],'source'=>$header_type,'project_id'=>$this->user['project_id'],'common_type'=>BTemplate::COMMON_OTHER]);
$comTemplateModel->edit(['html'=>$logInfo['head_html'], 'html_style'=>$logInfo['head_css']],['template_id'=>$logInfo['template_id'],'source'=>$header_type,'project_id'=>$this->user['project_id'],'common_type'=>BTemplate::COMMON_HEAD]);
$footer_type = $this->getType(BTemplate::COMMON_FOOTER);
$comTemplateModel->edit(['html'=>$logInfo['footer_html'], 'html_style'=>$logInfo['footer_css']],['template_id'=>$logInfo['template_id'],'source'=>$footer_type,'project_id'=>$this->user['project_id'],'common_type'=>BTemplate::COMMON_FOOTER]);
$this->model->edit(['html'=>$logInfo['main_html'],'html_style'=>$logInfo['main_css']],['id'=>$logInfo['source_id']]);
}else{
$this->model->edit(['html'=>$logInfo['text']],['id'=>$logInfo['source_id']]);
... ...
<?php
/**
* @remark :
* @name :ExtensionModuleFieldLogic.php
* @author :lyh
* @method :post
* @time :2024/8/7 16:30
*/
namespace App\Http\Logic\Bside\ExtensionModule;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Models\ExtentModule\ExtensionModuleValue;
class ExtensionModuleFieldLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->param = $this->requestAll;
$this->model = new ExtensionModuleField();
}
/**
* @remark :保存字段
* @name :saveModuleField
* @author :lyh
* @method :post
* @time :2024/8/7 16:47
*/
public function saveModuleField(){
//先查看当前字段是否存在
if(isset($this->param['id']) && !empty($this->param['id'])){
$info = $this->model->read(['field_name'=>$this->param['field_name'],'id'=>['!=',$this->param['id']]]);
}else{
$info = $this->model->read(['field_name'=>$this->param['field_name']]);
}
if($info !== false){
$this->fail('当前字段名已存在');
}
$id = $this->model->addReturnId($this->param);
return $this->success(['id'=>$id]);
}
/**
* @remark :删除字段
* @name :delModuleField
* @author :lyh
* @method :post
* @time :2024/8/7 17:14
*/
public function delModuleField(){
//查看当前字段是否在使用
$moduleValueModel = new ExtensionModuleValue();
$info = $moduleValueModel->read(['filed_id'=>$this->param['filed_id']]);
if($info !== false){
$this->fail('当前字段正在使用中,不允许删除');
}
$this->model->del(['id'=>$this->param['filed_id']]);
return $this->success();
}
}
... ...
... ... @@ -215,7 +215,6 @@ class ProductLogic extends BaseLogic
try {
if(isset($this->param['route']) && !empty($this->param['route'])){
$this->param['route'] = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_PRODUCT, $this->param['id'], $this->user['project_id']);
// $this->editProductRoute($this->param['id'],$this->param['route']);
}
$this->model->edit($this->param,['id'=>$this->param['id']]);
//产品分类关联
... ...
... ... @@ -13,7 +13,6 @@ use App\Models\Base;
class ExtensionModule extends Base
{
protected $table = 'gl_extension_module';
//连接数据库
protected $connection = 'custom_mysql';
... ...
<?php
/**
* @remark :
* @name :ExtensionModuleField.php
* @author :lyh
* @method :post
* @time :2024/8/7 16:10
*/
namespace App\Models\ExtentModule;
use App\Models\Base;
class ExtensionModuleField extends Base
{
protected $table = 'gl_extension_module_field';
//连接数据库
protected $connection = 'custom_mysql';
}
... ...
<?php
/**
* @remark :
* @name :ExtensionModuleValue.php
* @author :lyh
* @method :post
* @time :2024/8/7 16:10
*/
namespace App\Models\ExtentModule;
use App\Models\Base;
class ExtensionModuleValue extends Base
{
protected $table = 'gl_extension_module_value';
//连接数据库
protected $connection = 'custom_mysql';
}
... ...
... ... @@ -454,6 +454,14 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/info', [Aside\Devops\ServersIpController::class, 'info'])->name('admin.servers_info');
Route::any('/downloadFile', [Aside\Devops\ServersIpController::class, 'downloadFile'])->name('admin.servers_downloadFile');
});
/**
* 拓展数据模块
*/
Route::prefix('extension_module')->group(function () {
Route::any('/', [Aside\ExtentModule\ExtensionModuleController::class, 'getModuleLists'])->name('admin.extension_module_getModuleLists');
Route::any('/saveModule', [Aside\ExtentModule\ExtensionModuleController::class, 'saveModule'])->name('admin.extension_module_saveModule');
Route::any('/delModule', [Aside\ExtentModule\ExtensionModuleController::class, 'delModule'])->name('admin.extension_module_delModule');
});
});
//无需登录验证的路由组
... ...
... ... @@ -566,6 +566,18 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/saveLanguageTxt', [\App\Http\Controllers\Bside\Setting\LanguageTxtController::class, 'saveLanguageTxt'])->name('language_txt_saveLanguageTxt');
Route::any('/delLanguageTxt', [\App\Http\Controllers\Bside\Setting\LanguageTxtController::class, 'delLanguageTxt'])->name('language_txt_delLanguageTxt');
});
//获取拓展数据模块
Route::prefix('extension_module')->group(function () {
Route::any('/getModuleList', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'getModuleList'])->name('extension_module_getModuleList');
Route::any('/getDataType', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'getDataType'])->name('extension_module_getDataType');
Route::any('/getModuleFiledInfo', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'getModuleFiledInfo'])->name('extension_module_getModuleFiledInfo');
Route::any('/saveModuleField', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'saveModuleField'])->name('extension_module_saveModuleField');
Route::any('/delModuleField', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'delModuleField'])->name('extension_module_delModuleField');
Route::any('/getModuleValueList', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'getModuleValueList'])->name('extension_module_getModuleValueList');
Route::any('/addModuleValue', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'addModuleValue'])->name('extension_module_addModuleValue');
Route::any('/editModuleValue', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'editModuleValue'])->name('extension_module_editModuleValue');
});
});
//无需登录验证的路由组
Route::group([], function () {
... ...