作者 刘锟

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

@@ -50,11 +50,11 @@ class Count extends Command @@ -50,11 +50,11 @@ class Count extends Command
50 try { 50 try {
51 if(!empty($list)){ 51 if(!empty($list)){
52 $list = $list->toArray(); 52 $list = $list->toArray();
53 - $data = [];  
54 $yesterday = Carbon::yesterday()->toDateString(); 53 $yesterday = Carbon::yesterday()->toDateString();
55 $domainInfo = new DomainInfo(); 54 $domainInfo = new DomainInfo();
56 foreach ($list as $v){ 55 foreach ($list as $v){
57 $v = (array)$v; 56 $v = (array)$v;
  57 + echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
58 if($v['type'] == Project::TYPE_ZERO){ 58 if($v['type'] == Project::TYPE_ZERO){
59 continue; 59 continue;
60 } 60 }
@@ -76,7 +76,7 @@ class Count extends Command @@ -76,7 +76,7 @@ class Count extends Command
76 //服务达标天数 76 //服务达标天数
77 $arr['compliance_day'] = $v['finish_remain_day']; 77 $arr['compliance_day'] = $v['finish_remain_day'];
78 //剩余服务时常 78 //剩余服务时常
79 - $arr['service_day'] = $v['remain_day'] - 1; 79 + $arr['service_day'] = ($v['remain_day'] - 1) < 0 ? 0: $v['remain_day'] - 1;
80 //项目id 80 //项目id
81 $arr['project_id'] = $v['project_id']; 81 $arr['project_id'] = $v['project_id'];
82 $arr['created_at'] = date('Y-m-d H:i:s'); 82 $arr['created_at'] = date('Y-m-d H:i:s');
@@ -84,9 +84,16 @@ class Count extends Command @@ -84,9 +84,16 @@ class Count extends Command
84 //询盘统计 84 //询盘统计
85 $arr = $this->inquiry($arr,$v['test_domain'], $v['id']); 85 $arr = $this->inquiry($arr,$v['test_domain'], $v['id']);
86 if($arr === false){ 86 if($arr === false){
87 - $data[] = $v['test_domain']; 87 + continue;
88 } 88 }
  89 + //查询当天数据是否存在 存在则更新
  90 + $countModel = new \App\Models\HomeCount\Count();
  91 + $info = $countModel->read(['date'=>$arr['date'],'project_id'=>$v['id']]);
  92 + if($info === false){
89 DB::table('gl_count')->insert($arr); 93 DB::table('gl_count')->insert($arr);
  94 + }else{
  95 + $countModel->edit($arr,['id'=>$info['id']]);
  96 + }
90 Log::channel('day_count')->error('日期:'.$arr['created_at'].'success: ' .$v['test_domain']); 97 Log::channel('day_count')->error('日期:'.$arr['created_at'].'success: ' .$v['test_domain']);
91 } 98 }
92 } 99 }
@@ -59,8 +59,8 @@ class UpdateRoute extends Command @@ -59,8 +59,8 @@ class UpdateRoute extends Command
59 foreach ($list as $v){ 59 foreach ($list as $v){
60 echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL; 60 echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
61 ProjectServer::useProject($v['id']); 61 ProjectServer::useProject($v['id']);
62 - $this->getProduct();  
63 -// $this->setProductKeyword(); 62 +// $this->getProduct();
  63 + $this->setProductKeyword();
64 DB::disconnect('custom_mysql'); 64 DB::disconnect('custom_mysql');
65 } 65 }
66 echo date('Y-m-d H:i:s') . 'end' . PHP_EOL; 66 echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
@@ -21,14 +21,14 @@ class Kernel extends ConsoleKernel @@ -21,14 +21,14 @@ class Kernel extends ConsoleKernel
21 // $schedule->command('inspire')->hourly(); 21 // $schedule->command('inspire')->hourly();
22 $schedule->command('remain_day')->dailyAt('09:00')->withoutOverlapping(1); // 项目剩余服务时长 22 $schedule->command('remain_day')->dailyAt('09:00')->withoutOverlapping(1); // 项目剩余服务时长
23 $schedule->command('rank_data_task')->everyMinute()->withoutOverlapping(1); // 排名数据更新任务 23 $schedule->command('rank_data_task')->everyMinute()->withoutOverlapping(1); // 排名数据更新任务
24 - $schedule->command('rank_data')->dailyAt('07:00')->withoutOverlapping(1); // 排名数据,每天凌晨执行一次  
25 - $schedule->command('rank_data')->dailyAt('08:00')->withoutOverlapping(1); // 排名数据,每天凌晨执行一次  
26 - $schedule->command('rank_data_speed')->dailyAt('01:10')->withoutOverlapping(1); // 排名数据-测速数据,每周一凌晨执行一次  
27 - $schedule->command('rank_data_external_links')->dailyAt('08:30')->withoutOverlapping(1); // 排名数据-外链,每周一凌晨执行一次  
28 - $schedule->command('rank_data_external_links')->dailyAt('18:00')->withoutOverlapping(1); // 排名数据-外链,每周一凌晨执行一次  
29 - $schedule->command('rank_data_indexed_pages')->dailyAt('07:30')->withoutOverlapping(1); // 排名数据-页面收录,每周一凌晨执行一次  
30 - $schedule->command('rank_data_recomm_domain')->dailyAt('07:40')->withoutOverlapping(1); // 排名数据-引荐域名,每周一凌晨执行一次  
31 - $schedule->command('rank_data_week')->weeklyOn([1,2], '08:30')->withoutOverlapping(1); // 排名数据,每周一、二早上执行一次 24 +// $schedule->command('rank_data')->dailyAt('07:00')->withoutOverlapping(1); // 排名数据,每天凌晨执行一次
  25 +// $schedule->command('rank_data')->dailyAt('08:00')->withoutOverlapping(1); // 排名数据,每天凌晨执行一次
  26 +// $schedule->command('rank_data_speed')->dailyAt('01:10')->withoutOverlapping(1); // 排名数据-测速数据,每周一凌晨执行一次
  27 +// $schedule->command('rank_data_external_links')->dailyAt('08:30')->withoutOverlapping(1); // 排名数据-外链,每周一凌晨执行一次
  28 +// $schedule->command('rank_data_external_links')->dailyAt('18:00')->withoutOverlapping(1); // 排名数据-外链,每周一凌晨执行一次
  29 +// $schedule->command('rank_data_indexed_pages')->dailyAt('07:30')->withoutOverlapping(1); // 排名数据-页面收录,每周一凌晨执行一次
  30 +// $schedule->command('rank_data_recomm_domain')->dailyAt('07:40')->withoutOverlapping(1); // 排名数据-引荐域名,每周一凌晨执行一次
  31 +// $schedule->command('rank_data_week')->weeklyOn([1,2], '08:30')->withoutOverlapping(1); // 排名数据,每周一、二早上执行一次
32 $schedule->command('service_count')->dailyAt('01:00')->withoutOverlapping(1); //服务器使用情况,每天凌晨1点执行一次 32 $schedule->command('service_count')->dailyAt('01:00')->withoutOverlapping(1); //服务器使用情况,每天凌晨1点执行一次
33 $schedule->command('web_traffic_special')->everyMinute()->withoutOverlapping(1); // 特殊引流 33 $schedule->command('web_traffic_special')->everyMinute()->withoutOverlapping(1); // 特殊引流
34 $schedule->command('web_traffic_russia_special')->everyMinute()->withoutOverlapping(1); // 特殊引流 34 $schedule->command('web_traffic_russia_special')->everyMinute()->withoutOverlapping(1); // 特殊引流
@@ -23,8 +23,7 @@ define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/'); @@ -23,8 +23,7 @@ define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/');
23 if (!function_exists('generateRoute')) { 23 if (!function_exists('generateRoute')) {
24 function generateRoute($string) 24 function generateRoute($string)
25 { 25 {
26 - //TODO::html结尾,htm结尾,只处理.htm前面的内容  
27 - return trim(strtolower(preg_replace('/[^\w.]+/', '-', trim($string))), '-'); 26 + return str_replace(".", "", trim(strtolower(preg_replace('/[^\w.]+/', '-', trim($string))), '-'));
28 } 27 }
29 } 28 }
30 29
@@ -28,6 +28,7 @@ class ServersController extends BaseController @@ -28,6 +28,7 @@ class ServersController extends BaseController
28 if(isset($this->map['server_name']) && !empty($this->map['server_name'])){ 28 if(isset($this->map['server_name']) && !empty($this->map['server_name'])){
29 $this->map['server_name'] = ['like','%'.$this->map['server_name'].'%']; 29 $this->map['server_name'] = ['like','%'.$this->map['server_name'].'%'];
30 } 30 }
  31 + $this->map['status'] = 0;
31 $serversModel = new ServersModel(); 32 $serversModel = new ServersModel();
32 $lists = $serversModel->list($this->map); 33 $lists = $serversModel->list($this->map);
33 $this->response('success',Code::SUCCESS,$lists); 34 $this->response('success',Code::SUCCESS,$lists);
@@ -101,6 +101,7 @@ class ServersIpController extends BaseController @@ -101,6 +101,7 @@ class ServersIpController extends BaseController
101 * @time :2024/6/24 16:24 101 * @time :2024/6/24 16:24
102 */ 102 */
103 public function save(ServersIpLogic $serversIpLogic){ 103 public function save(ServersIpLogic $serversIpLogic){
  104 + if(!isset($this->param['id'])){
104 $this->request->validate([ 105 $this->request->validate([
105 'ip'=>'required', 106 'ip'=>'required',
106 'servers_id'=>'required', 107 'servers_id'=>'required',
@@ -110,6 +111,7 @@ class ServersIpController extends BaseController @@ -110,6 +111,7 @@ class ServersIpController extends BaseController
110 'servers_id.required' => '服务器servers_id不能为空', 111 'servers_id.required' => '服务器servers_id不能为空',
111 'domain.required' => 'cname域名不能为空', 112 'domain.required' => 'cname域名不能为空',
112 ]); 113 ]);
  114 + }
113 $data = $serversIpLogic->saveServersIp(); 115 $data = $serversIpLogic->saveServersIp();
114 $this->response('success',Code::SUCCESS,$data); 116 $this->response('success',Code::SUCCESS,$data);
115 } 117 }
@@ -121,4 +121,21 @@ class ATemplateModuleController extends BaseController @@ -121,4 +121,21 @@ class ATemplateModuleController extends BaseController
121 $list = $project->list($this->map,'id',['id','title']); 121 $list = $project->list($this->map,'id',['id','title']);
122 $this->response('success',Code::SUCCESS,$list); 122 $this->response('success',Code::SUCCESS,$list);
123 } 123 }
  124 +
  125 + /**
  126 + * @remark :修改审核状态
  127 + * @name :auditingStatus
  128 + * @author :lyh
  129 + * @method :post
  130 + * @time :2024/5/23 16:42
  131 + */
  132 + public function auditingStatus(ATemplateModuleLogic $ATemplateModuleLogic){
  133 + $this->request->validate([
  134 + 'id'=>'required'
  135 + ],[
  136 + 'id.required' => 'ID不能为空'
  137 + ]);
  138 + $data = $ATemplateModuleLogic->auditingStatus();
  139 + $this->response('success',Code::SUCCESS,$data);
  140 + }
124 } 141 }
@@ -49,10 +49,12 @@ class ServersIpLogic extends BaseLogic @@ -49,10 +49,12 @@ class ServersIpLogic extends BaseLogic
49 */ 49 */
50 public function saveServersIp(){ 50 public function saveServersIp(){
51 //验证域名是否唯一 51 //验证域名是否唯一
  52 + if(!isset($this->param['id'])){
52 $info = $this->model->read(['domain'=>$this->param['domain']]); 53 $info = $this->model->read(['domain'=>$this->param['domain']]);
53 if($info !== false){ 54 if($info !== false){
54 $this->fail('当前初始域名已存在'); 55 $this->fail('当前初始域名已存在');
55 } 56 }
  57 + }
56 if(isset($this->param['id']) && !empty($this->param['id'])){ 58 if(isset($this->param['id']) && !empty($this->param['id'])){
57 $id = $this->param['id']; 59 $id = $this->param['id'];
58 $this->model->edit($this->param,['id'=>$this->param['id']]); 60 $this->model->edit($this->param,['id'=>$this->param['id']]);
@@ -100,4 +100,19 @@ class ATemplateModuleLogic extends BaseLogic @@ -100,4 +100,19 @@ class ATemplateModuleLogic extends BaseLogic
100 return $this->success(); 100 return $this->success();
101 } 101 }
102 102
  103 + /**
  104 + * @remark :修改状态
  105 + * @name :auditingStatus
  106 + * @author :lyh
  107 + * @method :post
  108 + * @time :2024/5/23 16:44
  109 + */
  110 + public function auditingStatus(){
  111 + $rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
  112 + if($rs === false){
  113 + $this->fail('修改失败,请联系管理员');
  114 + }
  115 + return $this->success(['id'=>$this->param['id']]);
  116 + }
  117 +
103 } 118 }
@@ -68,7 +68,7 @@ class UserLogic extends BaseLogic @@ -68,7 +68,7 @@ class UserLogic extends BaseLogic
68 $this->param = $this->editPassword($this->param); 68 $this->param = $this->editPassword($this->param);
69 $rs = $this->model->edit($this->param, ['id' => $this->param['id']]); 69 $rs = $this->model->edit($this->param, ['id' => $this->param['id']]);
70 } else { 70 } else {
71 - $this->param['password'] = base64_encode(md5($this->param['password'])); 71 + $this->param['password'] = base64_encode(md5($this->param['password'] ?? '123456'));
72 $rs = $this->model->add($this->param); 72 $rs = $this->model->add($this->param);
73 } 73 }
74 if ($rs === false) { 74 if ($rs === false) {
@@ -59,9 +59,6 @@ class NewsLogic extends BaseLogic @@ -59,9 +59,6 @@ class NewsLogic extends BaseLogic
59 */ 59 */
60 public function newsSave() 60 public function newsSave()
61 { 61 {
62 - //拼接参数  
63 -// DB::beginTransaction();  
64 -// try {  
65 $this->param = $this->paramProcessing($this->param); 62 $this->param = $this->paramProcessing($this->param);
66 if (isset($this->param['id']) && !empty($this->param['id'])) { 63 if (isset($this->param['id']) && !empty($this->param['id'])) {
67 $id = $this->param['id']; 64 $id = $this->param['id'];
@@ -79,12 +76,6 @@ class NewsLogic extends BaseLogic @@ -79,12 +76,6 @@ class NewsLogic extends BaseLogic
79 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']); 76 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);
80 $this->edit(['url' => $route], ['id' => $id]); 77 $this->edit(['url' => $route], ['id' => $id]);
81 } 78 }
82 -// //更新路由  
83 -// DB::commit();  
84 -// } catch (\Exception $e) {  
85 -// DB::rollBack();  
86 -// $this->fail('系统错误,请联系管理员');  
87 -// }  
88 $this->addUpdateNotify(RouteMap::SOURCE_NEWS,$route); 79 $this->addUpdateNotify(RouteMap::SOURCE_NEWS,$route);
89 $this->curlDelRoute(['new_route'=>$route]); 80 $this->curlDelRoute(['new_route'=>$route]);
90 return $this->success(['id'=>$id]); 81 return $this->success(['id'=>$id]);
@@ -223,10 +214,10 @@ class NewsLogic extends BaseLogic @@ -223,10 +214,10 @@ class NewsLogic extends BaseLogic
223 */ 214 */
224 public function getCategory($category){ 215 public function getCategory($category){
225 $str = ''; 216 $str = '';
226 - if(is_array($category) && $category){  
227 - $str = ','.implode(',',$category).','; 217 + foreach ($category as $v){
  218 + $str .= $v.',';
228 } 219 }
229 - return $str; 220 + return !empty(trim($str,',')) ? ','.$str.',' : '';
230 } 221 }
231 222
232 /** 223 /**
@@ -55,11 +55,10 @@ class RouteMap extends Base @@ -55,11 +55,10 @@ class RouteMap extends Base
55 public static function generateRoute($title, $source, $source_id, $project_id){ 55 public static function generateRoute($title, $source, $source_id, $project_id){
56 if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $title)){ 56 if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $title)){
57 $title = Translate::tran($title, 'en'); 57 $title = Translate::tran($title, 'en');
58 - }else{ 58 + }
59 if(contains_russian($title)){ 59 if(contains_russian($title)){
60 $title = Translate::tran($title, 'en'); 60 $title = Translate::tran($title, 'en');
61 } 61 }
62 - }  
63 $i=1; 62 $i=1;
64 $sign = generateRoute($title); 63 $sign = generateRoute($title);
65 $length = strlen($sign); 64 $length = strlen($sign);
@@ -373,6 +373,7 @@ Route::middleware(['aloginauth'])->group(function () { @@ -373,6 +373,7 @@ Route::middleware(['aloginauth'])->group(function () {
373 Route::any('/status', [Aside\Template\ATemplateModuleController::class, 'status'])->name('admin.ATemplateModule_status'); 373 Route::any('/status', [Aside\Template\ATemplateModuleController::class, 'status'])->name('admin.ATemplateModule_status');
374 Route::any('/del', [Aside\Template\ATemplateModuleController::class, 'del'])->name('admin.ATemplateModule_del'); 374 Route::any('/del', [Aside\Template\ATemplateModuleController::class, 'del'])->name('admin.ATemplateModule_del');
375 Route::any('/type', [Aside\Template\ATemplateModuleController::class, 'getType'])->name('admin.ATemplateModule_getType'); 375 Route::any('/type', [Aside\Template\ATemplateModuleController::class, 'getType'])->name('admin.ATemplateModule_getType');
  376 + Route::any('/auditingStatus', [Aside\Template\ATemplateModuleController::class, 'auditingStatus'])->name('admin.ATemplateModule_auditingStatus');
376 Route::any('/getProjectList', [Aside\Template\ATemplateModuleController::class, 'getProjectList'])->name('admin.ATemplateModule_getProjectList'); 377 Route::any('/getProjectList', [Aside\Template\ATemplateModuleController::class, 'getProjectList'])->name('admin.ATemplateModule_getProjectList');
377 }); 378 });
378 //设置类型 379 //设置类型