|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @remark :
|
|
|
|
* @name :WeekProject.php
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/12/3 9:48
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace App\Console\Commands\ProjectWeeklyReport;
|
|
|
|
|
|
|
|
use App\Models\Com\Notify;
|
|
|
|
use App\Models\Com\V6WeeklyReport;
|
|
|
|
use App\Models\HomeCount\Count;
|
|
|
|
use App\Models\News\News;
|
|
|
|
use App\Models\Product\Product;
|
|
|
|
use App\Models\Project\Project;
|
|
|
|
use App\Models\RankData\ExternalLinks;
|
|
|
|
use App\Models\RankData\RankData;
|
|
|
|
use App\Models\RankData\RankWeek;
|
|
|
|
use Carbon\Carbon;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
|
|
|
|
class WeekProject extends Command
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* The name and signature of the console command.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $signature = 'sync_project';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The console command description.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $description = 'V6.0周报';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :
|
|
|
|
* @name :handle
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/12/3 10:01
|
|
|
|
*/
|
|
|
|
public function handle(){
|
|
|
|
$projectModel = new Project();
|
|
|
|
$list = $projectModel->list(['delete_status'=>0,'type'=>['in',[1,2,3,4,6]]],'id',['id','title']);
|
|
|
|
foreach ($list as $k => $v){
|
|
|
|
echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
|
|
|
|
$this->weekData($v);
|
|
|
|
}
|
|
|
|
echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :统计数据
|
|
|
|
* @name :weekData
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/12/3 10:03
|
|
|
|
*/
|
|
|
|
public function weekData($value){
|
|
|
|
echo date('Y-m-d H:i:s') . '项目名称:'.$value['title'] . PHP_EOL;
|
|
|
|
$data = [
|
|
|
|
'project_id'=>$value['id'],
|
|
|
|
'title'=>$value['title'],
|
|
|
|
];
|
|
|
|
$yesterday = Carbon::yesterday()->toDateString();//昨天
|
|
|
|
$countModel = new Count();
|
|
|
|
$yesCountInfo = $countModel->read(['project_id'=>$yesterday],['inquiry_num','country']);
|
|
|
|
$data['inquiry_total'] = $yesCountInfo['inquiry_num'] ?? 0;//询盘数量
|
|
|
|
$data['inquiry_country'] = json_decode($yesCountInfo['country'],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
$lastDayOfLastWeek = Carbon::now()->subWeek()->endOfWeek(Carbon::SUNDAY)->toDateString(); // 获取上周的最后一天
|
|
|
|
//本周
|
|
|
|
$lastDayOfLastWeekInfo = $countModel->read(['project_id'=>$lastDayOfLastWeek],['inquiry_num']);
|
|
|
|
$data['week_inquiry_total'] = ($yesCountInfo['inquiry_num'] ?? 0) - ($lastDayOfLastWeekInfo['inquiry_num'] ?? 0);
|
|
|
|
$rankDataModel = new RankData();
|
|
|
|
$rankInfo = $rankDataModel->read(['project_id'=>$value['id']],['first_num','first_page_num','first_three_pages_num','first_five_pages_num','first_ten_pages_num','indexed_pages_num']);
|
|
|
|
$data['google_indexed_num'] = $rankInfo['indexed_pages_num'] ?? 0;
|
|
|
|
$externalLinksModel = new ExternalLinks();
|
|
|
|
$linkInfo = $externalLinksModel->read(['project_id'=>$value['id']],['total']);
|
|
|
|
$data['google_links_num'] = $linkInfo['total'] ?? 0;
|
|
|
|
$data['keyword_home_num'] = $rankInfo['first_page_num'] ?? 0;
|
|
|
|
$data['keyword_three_num'] = $rankInfo['first_three_pages_num'] ?? 0;
|
|
|
|
$data['keyword_five_num'] = $rankInfo['first_five_pages_num'] ?? 0;
|
|
|
|
$data['keyword_ten_num'] = $rankInfo['first_ten_pages_num'] ?? 0;
|
|
|
|
$productModel = new Product();
|
|
|
|
$data['product_num'] = $productModel->counts(['status'=>1]) ?? 0;
|
|
|
|
$newsModel = new News();
|
|
|
|
$data['news_num'] = $newsModel->counts(['status'=>1]) ?? 0;
|
|
|
|
$notifyModel = new Notify();
|
|
|
|
$data['main_update_num'] = $notifyModel->counts(['type'=>1,'route'=>1,'project_id'=>$value['id']]) ?? 0;
|
|
|
|
$data['aggregation_update_num'] = $notifyModel->counts(['type'=>1,'route'=>4,'project_id'=>$value['id']]) ?? 0;
|
|
|
|
$data['minor_update_num'] = $notifyModel->counts(['type'=>2,'route'=>1,'project_id'=>$value['id']]) ?? 0;
|
|
|
|
$data['aggregation_minor_update_num'] = $notifyModel->counts(['type'=>2,'route'=>4,'project_id'=>$value['id']]) ?? 0;
|
|
|
|
$v6WeeklyReportModel = new V6WeeklyReport();
|
|
|
|
$v6WeeklyReportModel->add($data);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|