作者 赵彬吉
... ... @@ -79,22 +79,22 @@ class RemainDay extends Command
$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;
if($compliance_day == 0){
$item->pause_days = 0;
$compliance_day = ($item->finish_remain_day ?? 0);
if($item->finish_remain_day < $item->pause_days){
$item->pause_days = $item->finish_remain_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'] + $item->pause_days - floor($diff / (60 * 60 * 24));
$remain_day = $item['deploy_build']['service_duration'] - floor($diff / (60 * 60 * 24));
}else{
$remain_day = $item['deploy_build']['service_duration'];
}
}
}
$item->remain_day = $remain_day > 0 ? $remain_day : 0;
$item->remain_day = ($remain_day > 0 ? $remain_day : 0);
if($item->remain_day == 0){
$item->extend_type = Project::TYPE_FIVE;
$item->site_status = Project::TYPE_ONE;//关闭站点
... ...
... ... @@ -3,20 +3,12 @@
namespace App\Console\Commands\Test;
use App\Helper\Arr;
use App\Models\Collect\CollectTask;
use App\Models\Com\Notify;
use App\Models\Com\UpdateLog;
use App\Models\Com\UpdateVisit;
use App\Models\Devops\ServerConfig;
use App\Models\Devops\ServersIp;
use App\Models\Domain\DomainInfo;
use App\Models\Product\Product;
use App\Models\Project\Project;
use App\Services\ProjectServer;
use App\Utils\HttpUtils;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
class Temp extends Command
{
... ... @@ -34,55 +26,72 @@ class Temp extends Command
*/
protected $description = '临时脚本';
public function handle(){
ProjectServer::useProject(1515);
$products = Product::select(['id','content'])->get();
public function handle()
{
$notify_model = new Notify();
foreach ($products as $product){
$content = $product->content;
$content = str_replace('<h1','<h2', $content);
$content = str_replace('</h1','</h2', $content);
$domain_list = DomainInfo::where('status', 1)->where('amp_status', 1)->get();
$product->content = $content;
$product->save();
foreach ($domain_list as $domain) {
$project_id = $domain->project_id;
$domain = $domain->domain;
$this->output('productID:'.$product->id.',success');
}
$this->output('项目id:' . $project_id . ',start');
$this->output('end');
}
//获取项目所在服务器
$project_model = new Project();
$project_info = $project_model->read(['id' => $project_id], ['serve_id']);
if (!$project_info) {
$this->output('未查询到项目数据');
}
$serve_ip_model = new ServersIp();
$serve_ip_info = $serve_ip_model->read(['id' => $project_info['serve_id']], ['servers_id']);
if (!$serve_ip_info) {
$this->output('未查询到服务器数据');
}
$servers_id = $serve_ip_info['servers_id'];
public function check_cname($domain, $server_info)
{
$checkA = false;
$checkCname = false;
if ($servers_id == ServerConfig::SELF_SITE_ID) {
//自建站服务器:如果项目已经上线,不请求C端接口,数据直接入库
//判断是否已有更新进行中
$data = [
'project_id' => $project_id,
'type' => 3,
'route' => 1,
'server_id' => ServerConfig::SELF_SITE_ID,
'status' => ['!=', Notify::STATUS_FINISH_SITEMAP]
];
$notify = $notify_model->read($data, ['id']);
$process = new Process(['nslookup', '-qt=a', $domain]);
$process->run();
$output = explode(PHP_EOL, $process->getOutput());
foreach ($output as $line) {
if ($line) {
$checkA = strpos($line, $server_info['ip']) !== false;
if ($checkA) {
return $domain;
}
}
}
if (!$notify) {
$domain_array = parse_url($domain);
$host = $domain_array['host'] ?? $domain_array['path'];
$host_array = explode('.', $host);
if (count($host_array) <= 2) {
array_unshift($host_array, 'm');
} else {
$host_array[0] = 'm';
}
$domain = implode('.', $host_array);
//是否cname
$process = new Process(['nslookup', '-qt=cname', $domain]);
$process->run();
$output = explode(PHP_EOL, $process->getOutput());
foreach ($output as $line) {
if ($line) {
$checkCname = (strpos($line, $server_info['domain']) !== false);
if ($checkCname) {
return $domain;
$data['data'] = Arr::a2s(['domain' => $domain, 'url' => [], 'language' => []]);
$data['status'] = Notify::STATUS_INIT;
$notify_model->add($data);
}
} else {
//其他服务器:请求对应C端接口
$c_url = $domain . '/api/update_page/';
$param = [
'project_id' => $project_id,
'type' => 3,
'route' => 1,
'url' => [],
'language' => []
];
http_post($c_url, json_encode($param));
}
$this->output('项目id:' . $project_id . ',end');
}
return false;
}
public function output($msg)
... ...
... ... @@ -20,7 +20,7 @@ class Kernel extends ConsoleKernel
$schedule->command('template_label')->dailyAt('01:00')->withoutOverlapping(1);//最新模块
$schedule->command('popular_template_label')->dailyAt('01:30')->withoutOverlapping(1);//热门模块
// $schedule->command('inspire')->hourly();
$schedule->command('remain_day')->dailyAt('08:30')->withoutOverlapping(1); // 项目剩余服务时长
$schedule->command('remain_day')->dailyAt('09:30')->withoutOverlapping(1); // 项目剩余服务时长
$schedule->command('rank_data_task')->everyMinute()->withoutOverlapping(1); // 排名数据更新任务
$schedule->command('service_count')->dailyAt('01:00')->withoutOverlapping(1); //服务器使用情况,每天凌晨1点执行一次
$schedule->command('web_traffic_special')->everyMinute()->withoutOverlapping(1); // 特殊引流
... ...
... ... @@ -196,7 +196,7 @@ class PrivateController extends BaseController
return $this->error('未找到当前域名对应的项目!');
}
ProjectServer::useProject($project->id);
$feature_category = Category::whereIn('title', ['Featured','featured'])->pluck('id');
$feature_category = Category::whereIn('title', ['Featured','featured', 'Featured Products'])->pluck('id');
$feature_product = CategoryRelated::whereIn('cate_id',$feature_category)->pluck('product_id')->unique()->toArray();
$product_route = Product::where(['status' => Product::STATUS_ON])->whereNotIn('id', $feature_product)->pluck('route')->toArray();
return $this->success($product_route);
... ...
... ... @@ -67,6 +67,16 @@ class ExtensionModuleController extends BaseController
]);
$moduleFieldModel = new ExtensionModuleField();
$list = $moduleFieldModel->list(['module_id'=>$this->param['module_id']]);
$moduleValueModel = new ExtensionModuleValue();
foreach ($list as $k => $v){
$v['is_use'] = 0;
//查看当前字段是否已使用
$info = $moduleValueModel->read(['field_id'=>$v['id']],['id']);
if($info !== false){
$v['is_use'] = 1;
}
$list[$k] = $v;
}
$this->response('success',Code::SUCCESS,$list);
}
... ... @@ -131,7 +141,12 @@ class ExtensionModuleController extends BaseController
$data[$v['uuid']][$v['field_id']] = $v['value'];
}
}
$this->response('success',Code::SUCCESS,$data);
$resultData = [];
foreach ($data as $k => $v){
$v['uuid'] = $k;
$resultData[] = $v;
}
$this->response('success',Code::SUCCESS,$resultData);
}
/**
... ... @@ -198,6 +213,18 @@ class ExtensionModuleController extends BaseController
];
$moduleValueModel->addReturnId($data);
}
$this->response('success',Code::SUCCESS,['uuid'=>$this->param['uuid']]);
$this->response('success',Code::SUCCESS,['uuid'=>$uuid]);
}
/**
* @remark :生成唯一的字符串
* @name :sendUniqueStr
* @author :lyh
* @method :post
* @time :2024/8/20 10:31
*/
public function sendUniqueStr(){
$uniqueString = md5(time() . rand(1000, 9999));
$this->response('success',Code::SUCCESS,['str'=>$uniqueString]);
}
}
... ...
... ... @@ -403,7 +403,7 @@ class ProductLogic extends BaseLogic
$cateList = $cateModel->list($status,'id',['id','pid']);
$this->param['featured_status'] = $this->param['featured_status'] ?? 0;
if(!empty($cateList) && ($this->param['featured_status'] != $cateModel::STATUS_ACTIVE)){
$featured_ids = $cateModel->where('title', 'like', 'Featured%')->pluck('id')->toArray();
$featured_ids = $cateModel->where('title', 'Featured')->pluck('id')->toArray();
//获取当前的子集
$featured_arr = [];
foreach ($featured_ids as $id){
... ...
... ... @@ -95,6 +95,18 @@ class RankDataLogic extends BaseLogic
$languageList = $languageModel->list(['project_id'=>$project['id']]);
if(!empty($languageList) && is_array($languageList)){
foreach($languageList as $lang){
if($lang['lang'] =='ja'){
$lang['lang'] ='jp';
}
if($lang['lang'] == 'ko'){
$lang['lang'] ='kr';
}
if($lang['lang'] =='ms'){
$lang['lang']='my';
}
if($lang['lang'] == 'vi'){
$lang['lang'] ='vn';
}
$remain_day = $lang_data[$lang['lang']]['dabiao_day'] ?? 0;
$data['langs'][$lang['language'] ?? ''] = [
'lang'=>$lang['lang'],
... ... @@ -390,6 +402,18 @@ class RankDataLogic extends BaseLogic
$lang_list = $api->getLangList();
if (!empty($lang_list[$api_no])) {
foreach ($lang_list[$api_no] as $lang){
if($lang =='ja'){
$lang ='jp';
}
if($lang == 'ko'){
$lang ='kr';
}
if($lang =='ms'){
$lang='my';
}
if($lang == 'vi'){
$lang ='vn';
}
$model = RankData::where('project_id', $project_id)->where('lang', $lang)->first();
if (!$model || $model->updated_date != date('Y-m-d') || $force) {
$res = $api->getGoogleRank($api_no, $lang, 7, $force);
... ...
... ... @@ -577,6 +577,7 @@ Route::middleware(['bloginauth'])->group(function () {
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::any('/sendUniqueStr', [\App\Http\Controllers\Bside\ExtensionModule\ExtensionModuleController::class, 'sendUniqueStr'])->name('extension_module_sendUniqueStr');
});
//自定义小语种文本信息
... ...