作者 Your Name
... ... @@ -24,8 +24,18 @@ class RemainDay extends Command
*/
protected $signature = 'remain_day';
/**
* @var 按上线时间统计
*/
protected $projectId = [
1434
1434,1812
];//需要单独处理的项目
/**
* @var 暂停的项目
*/
protected $ceaseProjectId = [
354
];//需要单独处理的项目
/**
* The console command description.
... ... @@ -51,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']);
... ... @@ -58,17 +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){
//获取当前项目的达标天数
$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'];
}
... ...
... ... @@ -44,24 +44,13 @@ class RankData extends BaseCommands
public function do()
{
try {
Log::channel('rank_data')->info('开始-排名数据');
//同步api_no
// try {
// $this->SyncApiNo();
// } catch (\Exception $e) {
// Log::channel('rank_data')->error('同步api_no失败:' . $e->getMessage());
// }
//所有项目 今日是否达标 重置
//有失败会重跑任务,导致达标又被重置 加缓存一天只重置一次
if (!Cache::get('clear_remain_today_' . date('Y-m-d'))) {
Project::where('is_remain_today', 1)->update(['is_remain_today' => 0]);
Cache::set('clear_remain_today_' . date('Y-m-d'), 1, 24 * 3600);
}
$error = 0;
$api = new QuanqiusouApi();
//有排名api编号的项目
... ... @@ -102,7 +91,6 @@ class RankData extends BaseCommands
if(!$deploy_optimizes){
return true;
}
$api = new QuanqiusouApi();
$ai_nos = $api->getWebApiNo();
if($ai_nos){
... ...
... ... @@ -809,7 +809,13 @@ class ProjectUpdate extends Command
$path_arr = explode('/', $path);
return end($path_arr) ? end($path_arr) : $path_arr[count($path_arr) - 2];
$route = end($path_arr) ? end($path_arr) : $path_arr[count($path_arr) - 2];
if (strpos($route, ',') !== false || strpos($route, ',') !== false) {
return '';
}
return $route;
}
//产品多级分类入库
... ...
<?php
/**
* @remark :
* @name :ExtensionModuleController.php
* @author :lyh
* @method :post
* @time :2024/8/7 11:47
*/
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;
class ExtensionModuleController extends BaseController
{
/**
* @remark :获取当前项目的拓展数据模块
* @name :getModuleLists
* @author :lyh
* @method :post
* @time :2024/8/7 11:48
*/
public function getModuleLists(){
$extensionModuleModel = new ExtensionModule();
$list = $extensionModuleModel->list();
$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;
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 :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([
'filed_id'=>'required',
],[
'filed_id.required' => '字段id不能为空',
]);
$logic->delModuleField();
$this->response('success');
}
}
... ...
<?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;
class ExtensionModuleLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new ExtensionModule();
$this->param = $this->requestAll;
}
/**
* @remark :保存数据
* @name :saveExtensionModule
* @author :lyh
* @method :post
* @time :2024/8/7 15:50
*/
public function saveExtensionModule(){
//查看数据是否存在
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);
}
return $this->success(['id'=>$id]);
}
/**
* @remark :删除扩展数据模块
* @name :delExtensionModule
* @author :lyh
* @method :post
* @time :2024/8/7 16:07
*/
public function delExtensionModule(){
$moduleFiledModel = new ExtensionModuleField();
$info = $moduleFiledModel->read(['module_id'=>$this->param['id']]);
if($info !== false){
$this->fail('请先删除当前模块的字段,在进行删除');
}
$this->model->del(['id'=>$this->param['id']]);
return $this->success();
}
}
... ...
... ... @@ -149,7 +149,10 @@ class CustomTemplateLogic extends BaseLogic
}
}
$this->editCustomRoute($this->param['url']);
$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){
... ...
<?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;
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(){
}
}
... ...
... ... @@ -375,9 +375,7 @@ class RankDataLogic extends BaseLogic
if (!$project) {
throw new \Exception($api_no . '关联的项目不存在');
}
$api = new QuanqiusouApi();
$model = RankData::where('project_id', $project_id)->where('lang', '')->first();
if (!$model || $model->updated_date != date('Y-m-d') || $force) {
$res = $api->getGoogleRank($api_no, '', 7, $force);
... ... @@ -424,9 +422,11 @@ class RankDataLogic extends BaseLogic
public function save_rank($project_id, $data, int $indexed_pages_num = 0, string $lang = ''){
$without_project_ids = []; //不用处理排名的项目
$without_extension_project_ids = [658]; //是否达标只统计主词的
$extension_project_ids = [354]; //扩展词也到达标的
$first_num = $first_page_num = $first_three_pages_num = $first_five_pages_num = $first_ten_pages_num = 0;
$first_page_without_extension_num = 0; //不算扩展词在首页的数量
$first_page_extension_num = 0; //扩展词在首页的数量
foreach ($data as &$ranks){
ksort($ranks);
... ... @@ -448,6 +448,7 @@ class RankDataLogic extends BaseLogic
if($last['position'] > 0 && $last['position'] <= 10){
$first_page_num ++;
$last['g'] == 1 && $first_page_without_extension_num++;
$last['g'] == 2 && $first_page_extension_num++;
}
//排名前三页
if($last['position'] > 0 && $last['position'] <= 30){
... ... @@ -482,6 +483,9 @@ class RankDataLogic extends BaseLogic
if(in_array($project_id, $without_extension_project_ids)){
$is_compliance = $first_page_without_extension_num >= $keyword_num;
}
if(in_array($project_id, $extension_project_ids)){
$is_compliance = $first_page_extension_num >= $keyword_num;
}
if ($keyword_num && $type == Project::TYPE_TWO && $is_compliance) {
Log::channel('rank_data')->info('项目' . $project_id . ':关键词达标'. $keyword_num .' - ' . $first_page_num . ' - ' . $first_page_without_extension_num);
//项目表更新
... ...
<?php
/**
* @remark :
* @name :ExtensionModule.php
* @author :lyh
* @method :post
* @time :2024/8/7 14:13
*/
namespace App\Models\ExtentModule;
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';
}
... ...