作者 赵彬吉
... ... @@ -83,7 +83,7 @@ class RemainDay extends Command
* @time :2025/4/2 10:48
*/
public function saveRemainDay(){
$list = $this->project->list(['type'=>['in',[Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR]]],'id',['id','type','uptime','remain_day','is_remain_today','pause_days','finish_remain_day']);
$list = $this->project->list(['extend_type'=>Project::TYPE_ZERO,'type'=>['in',[Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR]]],'id',['id','type','uptime','remain_day','is_remain_today','pause_days','finish_remain_day']);
foreach ($list as $item){
$deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration','seo_service_duration','plan','seo_plan']);
echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
... ... @@ -97,8 +97,29 @@ class RemainDay extends Command
$this->project->edit(['pause_days'=>$pause_days],['id'=>$item['id']]);
continue;
}
//白帽版本的系统
if($deploy_build['seo_plan'] == 1){
//白帽版本单独计算
$this->seoRemainDay($deploy_build,$item);
//默认版本统计
if($deploy_build['service_duration'] == 0){
continue;
}
$this->remainDay($item,$deploy_build);
echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
}
return true;
}
/**
* @remark :白帽版本单独计算
* @name :seoRemainDay
* @author :lyh
* @method :post
* @time :2025/4/25 14:24
*/
public function seoRemainDay($deploy_build,$item){
//白帽版本的系统
if($deploy_build['seo_plan'] == 1){
if($deploy_build['seo_service_duration'] != 0){
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$seo_remain_day = $deploy_build['seo_service_duration'] - floor($diff / (60 * 60 * 24));
... ... @@ -110,45 +131,54 @@ class RemainDay extends Command
}
if($deploy_build['plan'] == 0 && $seo_remain_day == 0 && $deploy_build['seo_service_duration'] != 0){//只有白帽版本的项目且剩余服务时常未0,放入未续费中
$this->project->edit(['seo_remain_day'=>$seo_remain_day,'extend_type'=>Project::TYPE_FIVE],['id'=>$item['id']]);
continue;
}else{
//同时包括白帽版本+默认版本的项目
$this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
}
//同时包括白帽版本+默认版本的项目
$this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
}
//默认版本计算剩余服务时常
if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){
if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算
$optimizeModel = new DeployOptimize();
$opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']);
if($opInfo === false){
continue;
}
$diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']);
$compliance_day = floor($diff / (60 * 60 * 24));
$remain_day = $deploy_build['service_duration'] - $compliance_day;
}
return true;
}
}else{
$compliance_day = ($item['finish_remain_day'] ?? 0);
$remain_day = $deploy_build['service_duration'] - $compliance_day;
/**
* @remark :普通版本剩余服务时常
* @name :RemainDay
* @author :lyh
* @method :post
* @time :2025/4/25 14:31
*/
public function remainDay($item,$deploy_build){
//默认版本计算剩余服务时常
if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){
if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算
$optimizeModel = new DeployOptimize();
$opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']);
if($opInfo === false){
return true;
}
$diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']);
$compliance_day = floor($diff / (60 * 60 * 24));
$remain_day = $deploy_build['service_duration'] - $compliance_day;
}else{
//普通建站项目
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$compliance_day = floor($diff / (60 * 60 * 24));
$remain_day = $deploy_build['service_duration'] - $compliance_day;
}else{
$remain_day = $deploy_build['service_duration'];
}
$compliance_day = ($item['finish_remain_day'] ?? 0);
$remain_day = $deploy_build['service_duration'] - $compliance_day;
}
$extend_type = 0;
if($remain_day < 0 && $deploy_build['service_duration'] != 0){
$remain_day = 0;
$extend_type = Project::TYPE_FIVE;
}else{
//普通建站项目
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$compliance_day = floor($diff / (60 * 60 * 24));
$remain_day = $deploy_build['service_duration'] - $compliance_day;
}else{
$remain_day = $deploy_build['service_duration'];
}
$this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]);
echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
}
$extend_type = 0;
if($remain_day < 0 && $deploy_build['service_duration'] != 0){
$remain_day = 0;
$extend_type = Project::TYPE_FIVE;
}
$this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]);
return true;
}
}
... ...
... ... @@ -9,8 +9,10 @@
namespace App\Console\Commands\LyhTest;
use App\Console\Commands\Domain\DomainInfo;
use App\Models\Com\NoticeLog;
use App\Models\Project\AiBlogTask;
use App\Models\Project\DeployBuild;
use App\Models\Project\Project;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
... ... @@ -33,9 +35,14 @@ class lyhDemo extends Command
protected $description = '更新路由';
public function handle(){
$projectModel = new Project();
$noticeModel = new NoticeLog();
$lists = $projectModel->list(['from_order_id'=>null]);
$projectBuildModel = new DeployBuild();
$projectList = $projectBuildModel->list(['plan'=>0,'seo_plan'=>1],'project_id');
foreach ($projectList as $val){
if(!empty($val['service_duration']) && empty($val['seo_service_duration'])){
$projectBuildModel->edit(['seo_service_duration'=>$val['service_duration']],['id'=>$val['id']]);
echo '项目id:'.$val['project_id'].PHP_EOL;
}
}
return true;
}
}
... ...
... ... @@ -9,6 +9,7 @@ namespace App\Console\Commands\Monitor;
use App\Models\Domain\DomainInfo;
use App\Models\Product\Keyword;
use App\Models\Project\DeployOptimize;
use App\Models\Project\OnlineCheck;
use App\Models\Project\Project;
use App\Repositories\ToolRepository;
... ... @@ -259,9 +260,29 @@ class Supervisory extends Command
file_put_contents(storage_path('data/robots/' . date('Ymd'). 'log.json'), json_encode($tmp, 256));
unset($tmp);
// 所有路由
$domain = array_column($spot_projects, 'domain');
$domain = array_unique(array_filter($domain));
// 通知对应优化师
$tmp = [];
foreach ($spot_projects as $item) {
$tmp[$item['domain']] = $item['project_id'];
}
$project_ids = array_column($spot_projects, 'project_id');
$optimist = DeployOptimize::leftJoin('gl_manage', 'gl_project_deploy_optimize.optimist_mid', '=', 'gl_manage.id')
->whereIn('project_id', $project_ids)
->pluck('mobile', 'project_id')
->toArray();
$notice = [];
$all_url = array_merge($error_url, $error, $page_404, $tdk_error);
foreach ($all_url as $url) {
if (FALSE == empty($optimist[$tmp[parse_url($url, PHP_URL_HOST)]]))
$notice[] = '86' . $optimist[$tmp[parse_url($url, PHP_URL_HOST)]];
}
$notice = array_filter(array_unique($notice));
$message[] = '开启robots项目数:' . count($robots_ids);
$message[] = '关闭robots项目:' . ($close_ids ? implode(',', $close_ids) : '无');
$message[] = '抽查项目数量: ' . count($domain);
... ... @@ -282,6 +303,7 @@ class Supervisory extends Command
'keyword' => '项目数据推送',
'msg' => $msg,
'isAtAll' => false, // 是否@所有人
'atMobiles' => $notice
];
$dingService->handle($body, $link);
}
... ...
... ... @@ -839,7 +839,7 @@ function getCustomRouteMap($module_route,$route = '')
if($module_route == $route){
$resultRoute = $route;
}else{
$resultRoute = $module_route.'_catelog/'.$route;
$resultRoute = $module_route.'_catalog/'.$route;
}
return $resultRoute;
}
... ...
... ... @@ -147,8 +147,8 @@ class OptimizeController extends BaseController
$data = APublicModel::getNumByProjectId($item['id']);
}
$manageModel = new ManageHr();
$plan = Project::planMap();
$seo_plan = Project::seoMap();
// $plan = Project::planMap();
// $seo_plan = Project::seoMap();
$item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0);
$item['build_leader'] = $manageModel->getName($item['leader_mid']);
$item['build_manager'] = $manageModel->getName($item['manager_mid']);
... ... @@ -159,8 +159,6 @@ class OptimizeController extends BaseController
$item['optimize_assist'] = $manageModel->getName($item['optimize_assist_mid']);
$item['optimize_tech'] = $manageModel->getName($item['optimize_tech_mid']);
$item['quality_mid_name'] = $manageModel->getName($item['quality_mid']);
$item['plan'] = $plan[$item['plan']] ?? 0;
$item['seo_plan'] = $seo_plan[$item['plan']] ?? 0;
$item['created_at'] = date('Y年m月d日', strtotime($item['cooperate_date']));
$item['autologin_code'] = getAutoLoginCode($item['id']);
$item['domain'] = 'https://'.$item['domain'].'/';
... ... @@ -194,6 +192,7 @@ class OptimizeController extends BaseController
'gl_project.finish_remain_day AS finish_remain_day',
'gl_project.is_remain_today AS is_remain_today',
'gl_project.remain_day AS remain_day',
'gl_project.seo_remain_day AS seo_remain_day',
'gl_project.robots AS robots',
'gl_project.is_minor_languages AS is_minor_languages',
'gl_project.is_translate AS is_translate',
... ...
... ... @@ -13,6 +13,8 @@ use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Setting\TranslateLogic;
use App\Models\Blog\Blog;
use App\Models\CustomModule\CustomModule;
use App\Models\CustomModule\CustomModuleCategory;
use App\Models\CustomModule\CustomModuleContent;
use App\Models\News\News;
use App\Models\Product\Product;
... ... @@ -279,7 +281,19 @@ class TranslateController extends BaseController
case RouteMap::SOURCE_MODULE_CATE:
$customModel = new CustomModuleContent();
$count = $customModel->formatQuery(['category_id'=>['like','%,'.$v['source_id'].',%']])->count();
$this->pageSixList($data,$count,$v,3,10);
//获取module_id
$customCateModel = new CustomModuleCategory();
$cateInfo = $customCateModel->read(['route'=>$v['route']],['module_id']);
if($cateInfo !== false){
$model = new CustomModule();
$moduleInfo = $model->read(['id'=>$cateInfo['module_id']],['route']);
if($moduleInfo !== false){
if($v['route'] != $moduleInfo['route']){
$v['route'] = $moduleInfo['route'].'/'.$v['route'];
}
}
}
$this->pageList($data,$count,$v,3,10);
break;
default:
$data[] = $v['route'];
... ... @@ -393,7 +407,7 @@ class TranslateController extends BaseController
}
/**
* @remark :
* @remark :5.0列表页路由处理
* @name :pageList
* @author :lyh
* @method :post
... ... @@ -412,6 +426,15 @@ class TranslateController extends BaseController
}
$page = ceil($count / $pageNum);//向上取整
}
if($v['source'] == RouteMap::SOURCE_NEWS_CATE){
if($v['route'] != 'news'){
$v['route'] = RouteMap::PATH_NEWS_CATE.'/'.$v['route'];
}
}elseif($v['source'] == RouteMap::SOURCE_BLOG_CATE){
if($v['route'] != 'blog'){
$v['route'] = RouteMap::PATH_BLOG_CATE.'/'.$v['route'];
}
}
for ($i = 1;$i <= $page;$i++){
if($i == 1){
$data[] = $v['route'];
... ... @@ -423,7 +446,7 @@ class TranslateController extends BaseController
}
/**
* @remark :
* @remark :6.0列表路由处理
* @name :pageList
* @author :lyh
* @method :post
... ...
... ... @@ -59,7 +59,7 @@ class MonthCountLogic extends BaseLogic
$ensTime = date('Y-m-d',time());
$lists = $count->list(['date'=>['between',[$startTime,$ensTime]],'project_id'=>$this->user['project_id']],'id',['*'],'asc');
$groupedData = [];
foreach ($lists as $k=>$v){
foreach ($lists as $v){
$month = date('Y-m', strtotime($v['date']));
if(!isset($groupedData[$month])){
$groupedData[$month] = [];
... ...
... ... @@ -10,6 +10,7 @@ use App\Models\RouteMap\RouteMap;
use App\Services\ProjectServer;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
class Keyword extends Base
{
... ... @@ -136,6 +137,18 @@ class Keyword extends Base
foreach ($suffix_array as $suffix) {
array_push($result, trim($keyword . $suffix));
array_push($result, trim($prefix . $keyword . $suffix));
// 复数形式, 需要将单数的词也拼接上
if (Str::contains($suffix, ['Products', 'Exporters', 'Suppliers', 'Manufacturers'])) {
$suffix = trim($suffix, 's');
array_push($result, trim($keyword . $suffix));
array_push($result, trim($prefix . $keyword . $suffix));
}
if (Str::contains($suffix, [ 'Companies', 'Factories'])) {
$suffix = trim($suffix, 'ies');
array_push($result, trim($keyword . $suffix . 'y'));
array_push($result, trim($prefix . $keyword . $suffix . 'y'));
}
}
} catch (\Exception $e) {
continue;
... ...
... ... @@ -39,7 +39,7 @@ class DingService
'content' => $body['keyword'] . PHP_EOL . $body['msg']
],
'at' => [
'atMobiles' => [],
'atMobiles' => $body['atMobiles'],
'atUserIds' => [],
'isAtAll' => $body['isAtAll'],
]
... ...