作者 刘锟

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

@@ -62,7 +62,7 @@ class RemainDay extends Command @@ -62,7 +62,7 @@ class RemainDay extends Command
62 $list = Project::whereIn('type', [Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR])->get(); 62 $list = Project::whereIn('type', [Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR])->get();
63 foreach ($list as $item){ 63 foreach ($list as $item){
64 if(in_array($item->id,$this->ceaseProjectId)){//暂停的项目 64 if(in_array($item->id,$this->ceaseProjectId)){//暂停的项目
65 - if($item['type'] == Project::TYPE_TWO && $item->is_compliance == 1){ 65 + if(($item['type'] == Project::TYPE_TWO) && ($item->is_remain_today == 1)){
66 $item->pause_days = $item->pause_days + 1; 66 $item->pause_days = $item->pause_days + 1;
67 } 67 }
68 if($item['type'] != Project::TYPE_THREE){ 68 if($item['type'] != Project::TYPE_THREE){
@@ -80,6 +80,9 @@ class RemainDay extends Command @@ -80,6 +80,9 @@ class RemainDay extends Command
80 }else{ 80 }else{
81 if($item['type'] == Project::TYPE_TWO){ 81 if($item['type'] == Project::TYPE_TWO){
82 $compliance_day = $item->finish_remain_day ?? 0; 82 $compliance_day = $item->finish_remain_day ?? 0;
  83 + if($compliance_day == 0){
  84 + $item->pause_days = 0;
  85 + }
83 $remain_day = $item['deploy_build']['service_duration'] + $item->pause_days - $compliance_day; 86 $remain_day = $item['deploy_build']['service_duration'] + $item->pause_days - $compliance_day;
84 }else{ 87 }else{
85 if($item->uptime){ 88 if($item->uptime){
@@ -189,11 +189,11 @@ class VideoTask extends Command @@ -189,11 +189,11 @@ class VideoTask extends Command
189 public function getProjectKeyword($number,$keywords = []) 189 public function getProjectKeyword($number,$keywords = [])
190 { 190 {
191 191
192 - $keyword_id = Keyword::where('video', null)->whereIn("title", $keywords) 192 + $keyword_id = Keyword::where('video', null)->whereIn("title", $keywords)->whereNull('deleted_at')
193 ->where('route', 'not like', '%-tag')->whereNotNull('keyword_content')->limit($number)->pluck('id')->toArray(); 193 ->where('route', 'not like', '%-tag')->whereNotNull('keyword_content')->limit($number)->pluck('id')->toArray();
194 $need = $number - count($keyword_id); 194 $need = $number - count($keyword_id);
195 if ($need > 0) { 195 if ($need > 0) {
196 - $keyword_arr_id = Keyword::where('video', null)->where('route', 'not like', '%-tag') 196 + $keyword_arr_id = Keyword::where('video', null)->where('route', 'not like', '%-tag')->whereNull('deleted_at')
197 ->whereNotNull('keyword_content')->whereNotIn('id', $keyword_id)->orderBy('id','asc')->limit($need)->pluck('id')->toArray(); 197 ->whereNotNull('keyword_content')->whereNotIn('id', $keyword_id)->orderBy('id','asc')->limit($need)->pluck('id')->toArray();
198 } 198 }
199 $keyword_arr_id = array_merge($keyword_id, $keyword_arr_id); 199 $keyword_arr_id = array_merge($keyword_id, $keyword_arr_id);
@@ -318,8 +318,12 @@ class VideoTask extends Command @@ -318,8 +318,12 @@ class VideoTask extends Command
318 } 318 }
319 } 319 }
320 } else { 320 } else {
321 -  
322 - $image = $dom->find('.section-banner-wrap-block',0)->find('img', 0); 321 + $image = $dom->find('.section-banner-wrap-block',0);
  322 + if($image != null){
  323 + $image = $image->find('img', 0);
  324 + }else{
  325 + $image = null;
  326 + }
323 } 327 }
324 if($image != null){ 328 if($image != null){
325 $bg = $image->src; 329 $bg = $image->src;
@@ -10,8 +10,10 @@ namespace App\Console\Commands\Test; @@ -10,8 +10,10 @@ namespace App\Console\Commands\Test;
10 10
11 use App\Helper\Arr; 11 use App\Helper\Arr;
12 use App\Models\Blog\Blog; 12 use App\Models\Blog\Blog;
  13 +use App\Models\Blog\BlogCategory;
13 use App\Models\Com\KeywordVideoTask; 14 use App\Models\Com\KeywordVideoTask;
14 use App\Models\Com\KeywordVideoTaskLog; 15 use App\Models\Com\KeywordVideoTaskLog;
  16 +use App\Models\CustomModule\CustomModuleCategory;
15 use App\Models\CustomModule\CustomModuleContent; 17 use App\Models\CustomModule\CustomModuleContent;
16 use App\Models\Devops\ServerConfig; 18 use App\Models\Devops\ServerConfig;
17 use App\Models\Devops\Servers; 19 use App\Models\Devops\Servers;
@@ -20,6 +22,8 @@ use App\Models\File\File; @@ -20,6 +22,8 @@ use App\Models\File\File;
20 use App\Models\File\File as FileModel; 22 use App\Models\File\File as FileModel;
21 use App\Models\File\Image; 23 use App\Models\File\Image;
22 use App\Models\File\Image as ImageModel; 24 use App\Models\File\Image as ImageModel;
  25 +use App\Models\News\News;
  26 +use App\Models\News\NewsCategory;
23 use App\Models\Product\Keyword; 27 use App\Models\Product\Keyword;
24 use App\Models\Product\Product; 28 use App\Models\Product\Product;
25 use App\Models\Project\DeployOptimize; 29 use App\Models\Project\DeployOptimize;
@@ -52,25 +56,59 @@ class Demo extends Command @@ -52,25 +56,59 @@ class Demo extends Command
52 */ 56 */
53 protected $description = 'demo'; 57 protected $description = 'demo';
54 58
  59 +// public function handle(){
  60 +// $projectModel = new Project();
  61 +// $list = $projectModel->list(['id'=>503]);
  62 +// foreach ($list as $v){
  63 +// echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
  64 +// ProjectServer::useProject($v['id']);
  65 +// $newsModel = new News();
  66 +// $blogList = $newsModel->list(['status'=>1],'id',['*'],'asc');
  67 +// foreach ($blogList as $blogV){
  68 +// $customContentModel = new CustomModuleContent();
  69 +// $id = $customContentModel->addReturnId([
  70 +// 'name'=>$blogV['name'],
  71 +// 'status'=>0,
  72 +// 'sort'=>$blogV['sort'],
  73 +// 'remark'=>$blogV['remark'],
  74 +// 'route'=>$blogV['url'],
  75 +// 'image'=>$blogV['image'],
  76 +// 'seo_title'=>$blogV['seo_title'],
  77 +// 'seo_keywords'=>$blogV['seo_keywords'],
  78 +// 'seo_description'=>$blogV['seo_description'],
  79 +// 'project_id'=>$blogV['project_id'],
  80 +// 'created_at'=>$blogV['created_at'],
  81 +// 'updated_at'=>$blogV['updated_at'],
  82 +// 'module_id'=>10,
  83 +// 'video'=>null,
  84 +// 'release_at'=>$blogV['release_at'],
  85 +// 'operator_id'=>$blogV['operator_id']
  86 +// ]);
  87 +// RouteMap::setRoute($blogV['url'],RouteMap::SOURCE_MODULE,$id,503);
  88 +// }
  89 +// DB::disconnect('custom_mysql');
  90 +// }
  91 +// }
55 public function handle(){ 92 public function handle(){
56 - $projectModel = new Project();  
57 - $list = $projectModel->list(['type'=>['!=',0],'delete_status'=>0]);  
58 - foreach ($list as $v){  
59 - echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;  
60 - ProjectServer::useProject($v['id']);  
61 - $templateComModel = new BTemplateCom();  
62 - $templateComModel->edit(['source'=>3,'is_list'=>1],['source'=>5,'is_list'=>0,'is_custom'=>0]);  
63 - $templateComModel->edit(['source'=>4,'is_list'=>1],['source'=>7,'is_list'=>0,'is_custom'=>0]);  
64 - DB::disconnect('custom_mysql'); 93 + ProjectServer::useProject(503);
  94 + $newsCate = new NewsCategory();
  95 + $newsList = $newsCate->list();
  96 + foreach ($newsList as $v){
  97 + $data = [
  98 + 'name'=>$v['name'],
  99 + 'status'=>0,
  100 + 'sort'=>$v['sort'],
  101 + 'pid'=>$v['pid'],
  102 + 'route'=>$v['alias'],
  103 + 'project_id'=>503,
  104 + 'operator_id'=>$v['operator_id'],
  105 + 'create_id'=>1101,
  106 + 'module_id'=>10,
  107 + ];
  108 + $moduleCateModel = new CustomModuleCategory();
  109 + $id = $moduleCateModel->addReturnId($data);
  110 + RouteMap::setRoute($v['alias'],RouteMap::SOURCE_MODULE_CATE,$id,503);
65 } 111 }
66 -  
67 - }  
68 -  
69 - public function synchronizationFile($path_name){  
70 - //同步到大文件  
71 - $file_path = config('filesystems.disks.cos')['cdn1'].$path_name;  
72 - $directoryPath = pathinfo($path_name, PATHINFO_DIRNAME);  
73 - $cmd = 'curl -F "file_path='.$file_path.'" -F "save_path=/www/wwwroot/cos'.$directoryPath.'" https://v6-file.globalso.com/upload.php';  
74 - return shell_exec($cmd); 112 + DB::disconnect('custom_mysql');
75 } 113 }
76 } 114 }
@@ -55,13 +55,13 @@ class UpdateRoute extends Command @@ -55,13 +55,13 @@ class UpdateRoute extends Command
55 */ 55 */
56 public function handle(){ 56 public function handle(){
57 $projectModel = new Project(); 57 $projectModel = new Project();
58 - $list = $projectModel->list(['id'=>['in',[147]]]); 58 + $list = $projectModel->list(['id'=>['in',[1535]]]);
59 $data = []; 59 $data = [];
60 foreach ($list as $v){ 60 foreach ($list as $v){
61 echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL; 61 echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
62 ProjectServer::useProject($v['id']); 62 ProjectServer::useProject($v['id']);
63 - $this->getProduct();  
64 -// $this->setProductKeyword(); 63 +// $this->getProduct();
  64 + $this->setProductKeyword();
65 // $this->getBlog(); 65 // $this->getBlog();
66 DB::disconnect('custom_mysql'); 66 DB::disconnect('custom_mysql');
67 } 67 }
@@ -215,7 +215,7 @@ class UpdateRoute extends Command @@ -215,7 +215,7 @@ class UpdateRoute extends Command
215 215
216 public function getProduct(){ 216 public function getProduct(){
217 $productModel = new Product(); 217 $productModel = new Product();
218 - $lists = $productModel->list(['status'=>2]); 218 + $lists = $productModel->list(['status'=>['!=',2]]);
219 if(!empty($lists)){ 219 if(!empty($lists)){
220 foreach ($lists as $v){ 220 foreach ($lists as $v){
221 if(!empty($v['route'])){ 221 if(!empty($v['route'])){
@@ -177,4 +177,21 @@ class KeywordVideoController extends BaseController @@ -177,4 +177,21 @@ class KeywordVideoController extends BaseController
177 $data['end_total'] = $keywordModel->formatQuery(['status'=>1])->count(); 177 $data['end_total'] = $keywordModel->formatQuery(['status'=>1])->count();
178 $this->response('success',Code::SUCCESS,$data); 178 $this->response('success',Code::SUCCESS,$data);
179 } 179 }
  180 +
  181 + /**
  182 + * @remark :当月视频总数量
  183 + * @name :getVideoCount
  184 + * @author :lyh
  185 + * @method :post
  186 + * @time :2024/8/14 9:58
  187 + */
  188 + public function getVideoCount(){
  189 + // 当月的开始时间
  190 + $start_of_month = date("Y-m-01 00:00:00");
  191 + // 当月的结束时间:使用 strtotime() 计算最后一天
  192 + $end_of_month = date("Y-m-d 23:59:59", strtotime("last day of this month"));
  193 + $taskLogModel = new KeywordVideoTaskLog();
  194 + $count = $taskLogModel->formatQuery(['created_at'=>['between',[$start_of_month,$end_of_month]]])->count();
  195 + $this->response('success',Code::SUCCESS,['count'=>$count]);
  196 + }
180 } 197 }
@@ -37,15 +37,19 @@ class LanguageTxtController extends BaseController @@ -37,15 +37,19 @@ class LanguageTxtController extends BaseController
37 */ 37 */
38 public function saveLanguageTxt(){ 38 public function saveLanguageTxt(){
39 $this->request->validate([ 39 $this->request->validate([
40 - 'name'=>'required',  
41 - 'en_name'=>'required', 40 + 'data'=>'required',
42 ],[ 41 ],[
43 - 'name.required' => 'name不能为空',  
44 - 'en_name'=>'自定义名称en_name不为空', 42 + 'data.required' => 'data不能为空',
45 ]); 43 ]);
46 $languageTxtModel = new LanguageTxt(); 44 $languageTxtModel = new LanguageTxt();
47 - $id = $languageTxtModel->addReturnId($this->param);  
48 - $this->response('success',Code::SUCCESS,['id'=>$id]); 45 + foreach ($this->param['data'] as $v){
  46 + if(isset($v['id']) && !empty($v['id'])){
  47 + $languageTxtModel->edit(['en_name'=>$v['en_name']],['id'=>$v['id']]);
  48 + }else{
  49 + $languageTxtModel->addReturnId(['name'=>$v['name'], 'en_name'=>$v['en_name']]);
  50 + }
  51 + }
  52 + $this->response('success');
49 } 53 }
50 54
51 /** 55 /**
@@ -48,6 +48,11 @@ class AyrReleaseLogic extends BaseLogic @@ -48,6 +48,11 @@ class AyrReleaseLogic extends BaseLogic
48 $info = $this->model->read(['platforms'=>$this->param['platforms'],'operator_id'=>$this->param['operator_id'],'project_id'=>$this->param['project_id'],'title'=>$this->param['title']]); 48 $info = $this->model->read(['platforms'=>$this->param['platforms'],'operator_id'=>$this->param['operator_id'],'project_id'=>$this->param['project_id'],'title'=>$this->param['title']]);
49 if($info === false){ 49 if($info === false){
50 $this->model->add($this->param); 50 $this->model->add($this->param);
  51 + }else{
  52 + $result_data = json_decode($this->param['result_data']);
  53 + if(isset($result_data['status']) && $result_data['status'] == 'success'){
  54 + $this->model->edit($this->param,['id'=>$info['id']]);
  55 + }
51 } 56 }
52 return $this->success(); 57 return $this->success();
53 } 58 }
@@ -312,7 +312,8 @@ class TranslateLogic extends BaseLogic @@ -312,7 +312,8 @@ class TranslateLogic extends BaseLogic
312 * @time :2024/5/17 15:11 312 * @time :2024/5/17 15:11
313 */ 313 */
314 public function getRouteSource($route){ 314 public function getRouteSource($route){
315 - $data = ['source'=>0,'source_id'=>0,'is_list'=>0,'is_custom'=>0]; 315 + $routes = $route;
  316 + $data = ['source'=>0,'source_id'=>0,'is_list'=>0,'is_custom'=>0,'page'=>0];
316 if(strtolower($route) == 'all'){ 317 if(strtolower($route) == 'all'){
317 return $this->success($data); 318 return $this->success($data);
318 } 319 }
@@ -321,12 +322,20 @@ class TranslateLogic extends BaseLogic @@ -321,12 +322,20 @@ class TranslateLogic extends BaseLogic
321 return $this->success($data); 322 return $this->success($data);
322 } 323 }
323 $route = basename($route); 324 $route = basename($route);
  325 + $page = 0;
  326 + if (is_numeric($route)) {
  327 + $arr = explode('/',$routes);
  328 + $page = $arr[1];
  329 + $route = $arr[0];
  330 + }
324 $routeModel = new RouteMap(); 331 $routeModel = new RouteMap();
325 $routeInfo = $routeModel->read(['route'=>$route]); 332 $routeInfo = $routeModel->read(['route'=>$route]);
326 if($routeInfo === false){ 333 if($routeInfo === false){
327 return $data; 334 return $data;
328 } 335 }
329 - return $this->resultData($routeInfo,$data); 336 + $data = $this->resultData($routeInfo,$data);
  337 + $data['page'] = $page;
  338 + return $data;
330 } 339 }
331 340
332 /** 341 /**
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :InquiryField.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/8/13 9:57
  8 + */
  9 +
  10 +namespace App\Models\Inquiry;
  11 +
  12 +use App\Models\Base;
  13 +
  14 +class InquiryField extends Base
  15 +{
  16 + protected $connection = "custom_mysql";
  17 + protected $table = 'gl_inquiry_field';
  18 +}
@@ -109,7 +109,6 @@ class InquiryFormData extends Base @@ -109,7 +109,6 @@ class InquiryFormData extends Base
109 */ 109 */
110 public static function getCount($submit_at = []){ 110 public static function getCount($submit_at = []){
111 return self::leftjoin('gl_inquiry_form', 'gl_inquiry_form.id', '=', 'gl_inquiry_form_data.form_id') 111 return self::leftjoin('gl_inquiry_form', 'gl_inquiry_form.id', '=', 'gl_inquiry_form_data.form_id')
112 - ->where('gl_inquiry_form.is_default', 0)  
113 ->when($submit_at, function ($query, $submit_at) { 112 ->when($submit_at, function ($query, $submit_at) {
114 $query->whereBetween('submit_at',[$submit_at[0], $submit_at[1]]); 113 $query->whereBetween('submit_at',[$submit_at[0], $submit_at[1]]);
115 }) 114 })
@@ -123,7 +122,6 @@ class InquiryFormData extends Base @@ -123,7 +122,6 @@ class InquiryFormData extends Base
123 */ 122 */
124 public static function getCountryCount($submit_at = []){ 123 public static function getCountryCount($submit_at = []){
125 return self::leftjoin('gl_inquiry_form', 'gl_inquiry_form.id', '=', 'gl_inquiry_form_data.form_id') 124 return self::leftjoin('gl_inquiry_form', 'gl_inquiry_form.id', '=', 'gl_inquiry_form_data.form_id')
126 - ->where('gl_inquiry_form.is_default', 0)  
127 ->when($submit_at, function ($query, $submit_at) { 125 ->when($submit_at, function ($query, $submit_at) {
128 $query->whereBetween('submit_at',[$submit_at[0], $submit_at[1]]); 126 $query->whereBetween('submit_at',[$submit_at[0], $submit_at[1]]);
129 }) 127 })
@@ -351,6 +351,7 @@ Route::middleware(['aloginauth'])->group(function () { @@ -351,6 +351,7 @@ Route::middleware(['aloginauth'])->group(function () {
351 Route::any('/edit', [Aside\Com\KeywordVideoController::class, 'edit'])->name('keyword_video_edit'); 351 Route::any('/edit', [Aside\Com\KeywordVideoController::class, 'edit'])->name('keyword_video_edit');
352 Route::any('/getVideoTaskLog', [Aside\Com\KeywordVideoController::class, 'getVideoTaskLog'])->name('keyword_video_getVideoTaskLog'); 352 Route::any('/getVideoTaskLog', [Aside\Com\KeywordVideoController::class, 'getVideoTaskLog'])->name('keyword_video_getVideoTaskLog');
353 Route::any('/taskNum', [Aside\Com\KeywordVideoController::class, 'taskNum'])->name('keyword_video_taskNum'); 353 Route::any('/taskNum', [Aside\Com\KeywordVideoController::class, 'taskNum'])->name('keyword_video_taskNum');
  354 + Route::any('/getVideoCount', [Aside\Com\KeywordVideoController::class, 'getVideoCount'])->name('keyword_video_getVideoCount');
354 }); 355 });
355 356
356 // 公共主题模版 357 // 公共主题模版