作者 刘锟

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

  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :WeekProject.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/12/3 9:48
  8 + */
  9 +
  10 +namespace App\Console\Commands\ProjectWeeklyReport;
  11 +
  12 +use App\Models\Com\Notify;
  13 +use App\Models\Com\V6WeeklyReport;
  14 +use App\Models\HomeCount\Count;
  15 +use App\Models\News\News;
  16 +use App\Models\Product\Product;
  17 +use App\Models\Project\Project;
  18 +use App\Models\RankData\ExternalLinks;
  19 +use App\Models\RankData\RankData;
  20 +use App\Models\RankData\RankWeek;
  21 +use App\Services\ProjectServer;
  22 +use Carbon\Carbon;
  23 +use Illuminate\Console\Command;
  24 +use Illuminate\Support\Facades\DB;
  25 +
  26 +class WeekProject extends Command
  27 +{
  28 + /**
  29 + * The name and signature of the console command.
  30 + *
  31 + * @var string
  32 + */
  33 + protected $signature = 'week_project';
  34 +
  35 + /**
  36 + * The console command description.
  37 + *
  38 + * @var string
  39 + */
  40 + protected $description = 'V6.0周报';
  41 +
  42 + /**
  43 + * @remark :
  44 + * @name :handle
  45 + * @author :lyh
  46 + * @method :post
  47 + * @time :2024/12/3 10:01
  48 + */
  49 + public function handle(){
  50 + $projectModel = new Project();
  51 + $list = $projectModel->list(['delete_status'=>0,'type'=>['in',[1,2,3,4,6]]],'id',['id','title']);
  52 + foreach ($list as $k => $v){
  53 + echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
  54 + ProjectServer::useProject($v['id']);
  55 + $this->weekData($v);
  56 + DB::disconnect('custom_mysql');
  57 + }
  58 + echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
  59 + }
  60 +
  61 + /**
  62 + * @remark :统计数据
  63 + * @name :weekData
  64 + * @author :lyh
  65 + * @method :post
  66 + * @time :2024/12/3 10:03
  67 + */
  68 + public function weekData($value){
  69 + echo date('Y-m-d H:i:s') . '项目名称:'.$value['title'] . PHP_EOL;
  70 + $data = [
  71 + 'project_id'=>$value['id'],
  72 + 'title'=>$value['title'],
  73 + ];
  74 + $yesterday = Carbon::yesterday()->toDateString();//昨天
  75 + $countModel = new Count();
  76 + $yesCountInfo = $countModel->read(['date'=>$yesterday,'project_id'=>$value['id']],['inquiry_num','country']);
  77 + $data['inquiry_total'] = $yesCountInfo['inquiry_num'] ?? 0;//询盘数量
  78 + $data['inquiry_country'] = $yesCountInfo['country'] ?? json_encode([]);
  79 + $lastDayOfLastWeek = Carbon::now()->subWeek()->endOfWeek(Carbon::SUNDAY)->toDateString(); // 获取上周的最后一天
  80 + //本周
  81 + $lastDayOfLastWeekInfo = $countModel->read(['date'=>$yesterday,'project_id'=>$value['id']],['inquiry_num']);
  82 + $data['week_inquiry_total'] = ($yesCountInfo['inquiry_num'] ?? 0) - ($lastDayOfLastWeekInfo['inquiry_num'] ?? 0);
  83 + $rankDataModel = new RankData();
  84 + $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']);
  85 + $data['google_indexed_num'] = $rankInfo['indexed_pages_num'] ?? 0;
  86 + $externalLinksModel = new ExternalLinks();
  87 + $linkInfo = $externalLinksModel->read(['project_id'=>$value['id']],['total']);
  88 + $data['google_links_num'] = $linkInfo['total'] ?? 0;
  89 + $data['keyword_home_num'] = $rankInfo['first_page_num'] ?? 0;
  90 + $data['keyword_three_num'] = $rankInfo['first_three_pages_num'] ?? 0;
  91 + $data['keyword_five_num'] = $rankInfo['first_five_pages_num'] ?? 0;
  92 + $data['keyword_ten_num'] = $rankInfo['first_ten_pages_num'] ?? 0;
  93 + $productModel = new Product();
  94 + $data['product_num'] = $productModel->counts(['status'=>1]) ?? 0;
  95 + $newsModel = new News();
  96 + $data['news_num'] = $newsModel->counts(['status'=>1]) ?? 0;
  97 + $notifyModel = new Notify();
  98 + $data['main_update_num'] = $notifyModel->counts(['type'=>1,'route'=>1,'project_id'=>$value['id']]) ?? 0;
  99 + $data['aggregation_update_num'] = $notifyModel->counts(['type'=>1,'route'=>4,'project_id'=>$value['id']]) ?? 0;
  100 + $data['minor_update_num'] = $notifyModel->counts(['type'=>2,'route'=>1,'project_id'=>$value['id']]) ?? 0;
  101 + $data['aggregation_minor_update_num'] = $notifyModel->counts(['type'=>2,'route'=>4,'project_id'=>$value['id']]) ?? 0;
  102 + $v6WeeklyReportModel = new V6WeeklyReport();
  103 + $v6WeeklyReportModel->add($data);
  104 + return true;
  105 + }
  106 +}
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :V6WeeklyReport.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/12/3 11:13
  8 + */
  9 +
  10 +namespace App\Models\Com;
  11 +
  12 +use App\Models\Base;
  13 +
  14 +class V6WeeklyReport extends Base
  15 +{
  16 + protected $table = 'gl_v6_weekly_report';
  17 +}