作者 赵彬吉

update

@@ -2,12 +2,15 @@ @@ -2,12 +2,15 @@
2 2
3 namespace App\Console\Commands\RankData; 3 namespace App\Console\Commands\RankData;
4 4
  5 +
5 use App\Helper\QuanqiusouApi; 6 use App\Helper\QuanqiusouApi;
6 use App\Http\Logic\Bside\RankData\RankDataLogic; 7 use App\Http\Logic\Bside\RankData\RankDataLogic;
  8 +use App\Models\Domain\DomainInfo;
7 use App\Models\Project\DeployOptimize; 9 use App\Models\Project\DeployOptimize;
8 use App\Models\Project\Project; 10 use App\Models\Project\Project;
9 use App\Models\RankData\RankData as GoogleRankModel; 11 use App\Models\RankData\RankData as GoogleRankModel;
10 use App\Utils\LogUtils; 12 use App\Utils\LogUtils;
  13 +use Illuminate\Database\Eloquent\Model;
11 14
12 /** 15 /**
13 * Class GoogleRank 16 * Class GoogleRank
@@ -38,6 +41,9 @@ class RankData extends BaseCommands @@ -38,6 +41,9 @@ class RankData extends BaseCommands
38 */ 41 */
39 public function do() 42 public function do()
40 { 43 {
  44 + //同步api_no
  45 + $this->SyncApiNo();
  46 +
41 //所有项目 今日是否达标 重置 47 //所有项目 今日是否达标 重置
42 Project::where('is_remain_today', 1)->update(['is_remain_today' => 0]); 48 Project::where('is_remain_today', 1)->update(['is_remain_today' => 0]);
43 49
@@ -62,4 +68,35 @@ class RankData extends BaseCommands @@ -62,4 +68,35 @@ class RankData extends BaseCommands
62 } 68 }
63 return !$error; 69 return !$error;
64 } 70 }
  71 +
  72 + /**
  73 + * 同步项目api_no
  74 + * @author zbj
  75 + * @date 2023/10/16
  76 + */
  77 + public function SyncApiNo(){
  78 + $deploy_optimizes = DeployOptimize::leftJoin('gl_project', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
  79 + ->whereIn('gl_project.type', [Project::TYPE_TWO,Project::TYPE_THREE])->where('gl_project_deploy_optimize.api_no', 0)
  80 + ->where('gl_project_deploy_optimize.domain', '>', 0)
  81 + ->get();
  82 + if(!$deploy_optimizes){
  83 + return true;
  84 + }
  85 +
  86 + $api = new QuanqiusouApi();
  87 + $ai_nos = $api->getWebApiNo();
  88 +
  89 + foreach ($deploy_optimizes as $deploy_optimize){
  90 + $domain = DomainInfo::where('id', $deploy_optimize['domain'])->value('domain');
  91 + if(!$domain){
  92 + continue;
  93 + }
  94 + $api_no = array_search($domain, $ai_nos);
  95 + if($api_no){
  96 + $deploy_optimize->api_no = $api_no;
  97 + $deploy_optimize->save();
  98 + }
  99 + }
  100 + }
  101 +
65 } 102 }
@@ -205,7 +205,7 @@ class SyncProject extends Command @@ -205,7 +205,7 @@ class SyncProject extends Command
205 'login_mobile'=>$param['principal_mobile'] 205 'login_mobile'=>$param['principal_mobile']
206 ], 206 ],
207 'deploy_optimize' => [ 207 'deploy_optimize' => [
208 - 'api_no' => $param['id'] 208 + 'api_no' => 0
209 ], 209 ],
210 'project_after' => [], 210 'project_after' => [],
211 'payment' => [ 211 'payment' => [
@@ -231,5 +231,33 @@ class QuanqiusouApi @@ -231,5 +231,33 @@ class QuanqiusouApi
231 return $res; 231 return $res;
232 } 232 }
233 233
  234 + /**
  235 + * 项目api_no对应关系
  236 + * @return array|false|int|mixed|null
  237 + * @author zbj
  238 + * @date 2023/10/16
  239 + */
  240 + public function getWebApiNo(){
  241 + $key = "quanqiusou_web_api_no_" . date('Y-m-d');
  242 + $res = Cache::get($key);
  243 + if (!$res) {
  244 + $api_url = $this->url . '/api/index/weblist';
  245 + $param = [
  246 + 'key' => '289c1fc81c89d79c04ed4fd72822948e',
  247 + ];
  248 + try {
  249 + $res = HttpUtils::get($api_url, $param);
  250 + if($res){
  251 + $res = Arr::s2a($res);
  252 + Cache::put($key, $res, 24 * 3600);
  253 + }
  254 + } catch (\Exception | GuzzleException $e) {
  255 + errorLog('获取项目API_NO数据失败', [], $e);
  256 + return false;
  257 + }
  258 + }
  259 + return $res;
  260 + }
  261 +
234 262
235 } 263 }
@@ -156,6 +156,8 @@ class ProjectController extends BaseController @@ -156,6 +156,8 @@ class ProjectController extends BaseController
156 if ($this->map['search_type'] == 'domain') { 156 if ($this->map['search_type'] == 'domain') {
157 $ids = DomainInfo::where('domain', 'like', '%'.$this->map['search'].'%')->pluck('id')->toArray(); 157 $ids = DomainInfo::where('domain', 'like', '%'.$this->map['search'].'%')->pluck('id')->toArray();
158 $subQuery->whereIn('gl_project_deploy_optimize.domain', $ids); 158 $subQuery->whereIn('gl_project_deploy_optimize.domain', $ids);
  159 + } else if($this->map['search_type'] == 'test_domain'){
  160 + $subQuery->where('gl_project_deploy_build.test_domain','like','%'.$this->map['search'].'%');
159 } else { 161 } else {
160 // 搜索名称 162 // 搜索名称
161 $subQuery->orwhere('gl_project.company','like','%'.$this->map['search'].'%') 163 $subQuery->orwhere('gl_project.company','like','%'.$this->map['search'].'%')
@@ -156,7 +156,7 @@ class RankDataLogic extends BaseLogic @@ -156,7 +156,7 @@ class RankDataLogic extends BaseLogic
156 $ai_projects = $this->getAiProjects()['data'] ?? []; 156 $ai_projects = $this->getAiProjects()['data'] ?? [];
157 $flg_ai = $this->getAiFlag($ai_projects, $domain); 157 $flg_ai = $this->getAiFlag($ai_projects, $domain);
158 $ai_domain = str_replace('www.', '', $this->getAiProjects($domain)['domain'] ?? ''); 158 $ai_domain = str_replace('www.', '', $this->getAiProjects($domain)['domain'] ?? '');
159 - $list = RankData::where('project_id', $project_id)->where('lang', $lang)->value('data'); 159 + $list = RankData::where('project_id', $project_id)->where('lang', $lang)->value('data') ?: [];
160 $list30 = []; //排名前三十的 160 $list30 = []; //排名前三十的
161 $list30_0 = []; //排名前三十且近三天没有排名的 161 $list30_0 = []; //排名前三十且近三天没有排名的
162 $list100 = []; //排名前100的 162 $list100 = []; //排名前100的