作者 李宇航

合并分支 'lyh-server' 到 'master'

Lyh server



查看合并请求 !2947
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :GeoCount.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2025/10/13 16:05
  8 + */
  9 +
  10 +namespace App\Console\Commands\Geo;
  11 +
  12 +use App\Models\Geo\GeoQuestionLog;
  13 +use App\Models\Geo\GeoQuestionResult;
  14 +use Illuminate\Console\Command;
  15 +use Illuminate\Support\Carbon;
  16 +
  17 +class GeoCount extends Command
  18 +{
  19 + /**
  20 + * The name and signature of the console command.
  21 + *
  22 + * @var string
  23 + */
  24 + protected $signature = 'geo_count';
  25 +
  26 + public $porject_id;//记录当时执行的project_id
  27 +
  28 + /**
  29 + * The console command description.
  30 + *
  31 + * @var string
  32 + */
  33 + protected $description = 'geo统计数据';
  34 +
  35 +
  36 +
  37 + public function handle(){
  38 +
  39 + }
  40 +
  41 + /**
  42 + * @remark :方法
  43 + * @name :_action
  44 + * @author :lyh
  45 + * @method :post
  46 + * @time :2025/10/13 16:20
  47 + */
  48 + public function _action()
  49 + {
  50 + //获取前一天的项目id
  51 + $date = Carbon::yesterday()->format('Y-m-d');
  52 + $start = $date.' 00:00:00';
  53 + $end = $date.' 23:59:59';
  54 + $geoLogModel = new GeoQuestionLog();
  55 + $project_id = $geoLogModel->formatQuery(['created_at' => ['between',[$start,$end]]])->distinct()->pluck('project_id');
  56 + if(empty($project_id)){
  57 + return true;
  58 + }
  59 + $geoQuestionResModel = new GeoQuestionResult();
  60 + $platforms = ['gemini','openai','deepseek','poe','perplexity','google_ai_overview','openai-not-network','claude'];
  61 + foreach ($project_id as $item){
  62 + $this->output('执行的项目ID----'.$item);
  63 + //收录总数
  64 + $total = $geoQuestionResModel->counts(['project_id' => $item,'hit'=>['!=',0],'created_at' => ['between',[$start,$end]]]);
  65 + $data = [
  66 + 'project_id' => $item,
  67 + 'date' => $date,
  68 + 'created_at' => Carbon::now()->format('Y-m-d H:i:s'),
  69 + 'updated_at' => Carbon::now()->format('Y-m-d H:i:s'),
  70 + 'total'=>$total,//收录总数
  71 + ];
  72 + foreach ($platforms as $platform){
  73 + $data[$platform] = $geoQuestionResModel->counts(['project_id' => $item,'hit'=>['!=',0],'platform'=>$platform,'created_at' => ['between',[$start,$end]]]);
  74 + }
  75 + //新增一条数据
  76 + $geoQuestionResModel->addReturnId($data);
  77 + }
  78 + return true;
  79 + }
  80 +
  81 + /**
  82 + * 输出日志
  83 + * @param $message
  84 + * @return bool
  85 + */
  86 + public function output($message)
  87 + {
  88 + echo date('Y-m-d H:i:s') . ' ' . $message . PHP_EOL;
  89 + return true;
  90 + }
  91 +}
@@ -93,8 +93,9 @@ class AsideTicketLogController extends BaseController @@ -93,8 +93,9 @@ class AsideTicketLogController extends BaseController
93 $ticket->end_at = now(); 93 $ticket->end_at = now();
94 $ticket->end_time = diffInHours($ticket->created_at,$ticket->end_at); 94 $ticket->end_time = diffInHours($ticket->created_at,$ticket->end_at);
95 $project = $ticket->project; 95 $project = $ticket->project;
96 - if ($project->wechat_switch && !$ticket->close_wechat) 96 + if ($project->wechat_switch && !$ticket->close_wechat){
97 $project->pushWechatGroupMsg("工单(ID:{$ticket->id})已全部完成,请访问查看详情!"); 97 $project->pushWechatGroupMsg("工单(ID:{$ticket->id})已全部完成,请访问查看详情!");
  98 + }
98 $ticket->pushDing('finish'); 99 $ticket->pushDing('finish');
99 }else{ 100 }else{
100 $ticket->status = Tickets::STATUS_YANSHOU; 101 $ticket->status = Tickets::STATUS_YANSHOU;