作者 刘锟

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 + }
  89 + //查询当天数据是否存在 存在则更新
  90 + $countModel = new \App\Models\HomeCount\Count();
  91 + $info = $countModel->read(['date'=>$arr['date'],'project_id'=>$v['id']]);
  92 + if($info === false){
  93 + DB::table('gl_count')->insert($arr);
  94 + }else{
  95 + $countModel->edit($arr,['id'=>$info['id']]);
88 } 96 }
89 - DB::table('gl_count')->insert($arr);  
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,15 +101,17 @@ class ServersIpController extends BaseController @@ -101,15 +101,17 @@ 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 - $this->request->validate([  
105 - 'ip'=>'required',  
106 - 'servers_id'=>'required',  
107 - 'domain'=>'required'  
108 - ],[  
109 - 'ip.required' => 'ip不能为空',  
110 - 'servers_id.required' => '服务器servers_id不能为空',  
111 - 'domain.required' => 'cname域名不能为空',  
112 - ]); 104 + if(!isset($this->param['id'])){
  105 + $this->request->validate([
  106 + 'ip'=>'required',
  107 + 'servers_id'=>'required',
  108 + 'domain'=>'required'
  109 + ],[
  110 + 'ip.required' => 'ip不能为空',
  111 + 'servers_id.required' => '服务器servers_id不能为空',
  112 + 'domain.required' => 'cname域名不能为空',
  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,9 +49,11 @@ class ServersIpLogic extends BaseLogic @@ -49,9 +49,11 @@ class ServersIpLogic extends BaseLogic
49 */ 49 */
50 public function saveServersIp(){ 50 public function saveServersIp(){
51 //验证域名是否唯一 51 //验证域名是否唯一
52 - $info = $this->model->read(['domain'=>$this->param['domain']]);  
53 - if($info !== false){  
54 - $this->fail('当前初始域名已存在'); 52 + if(!isset($this->param['id'])){
  53 + $info = $this->model->read(['domain'=>$this->param['domain']]);
  54 + if($info !== false){
  55 + $this->fail('当前初始域名已存在');
  56 + }
55 } 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'];
@@ -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) {
@@ -203,7 +203,7 @@ class BlogLogic extends BaseLogic @@ -203,7 +203,7 @@ class BlogLogic extends BaseLogic
203 public function getCategory($category){ 203 public function getCategory($category){
204 $str = ''; 204 $str = '';
205 foreach ($category as $v){ 205 foreach ($category as $v){
206 - $str .= $v.','; 206 + $str .= $v.',';
207 } 207 }
208 return !empty(trim($str,',')) ? ','.$str.',' : ''; 208 return !empty(trim($str,',')) ? ','.$str.',' : '';
209 } 209 }
@@ -59,32 +59,23 @@ class NewsLogic extends BaseLogic @@ -59,32 +59,23 @@ 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);  
66 - if (isset($this->param['id']) && !empty($this->param['id'])) {  
67 - $id = $this->param['id'];  
68 - $is_upgrade = $this->param['is_upgrade'] ?? 0;//1:5.0数据 0:6.0  
69 - $six_read = $this->param['six_read'] ?? 0;//是否按6.0显示  
70 - if($is_upgrade == 0 || $six_read == 1) {  
71 - $this->param['url'] = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);  
72 - }  
73 - //是否更新路由  
74 - $route = $this->param['url'];  
75 - $this->edit($this->param, ['id' => $id]);  
76 - } else {  
77 - $this->param['sort'] = $this->setNewsSort();  
78 - $id = $this->model->addReturnId($this->param);  
79 - $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);  
80 - $this->edit(['url' => $route], ['id' => $id]); 62 + $this->param = $this->paramProcessing($this->param);
  63 + if (isset($this->param['id']) && !empty($this->param['id'])) {
  64 + $id = $this->param['id'];
  65 + $is_upgrade = $this->param['is_upgrade'] ?? 0;//1:5.0数据 0:6.0
  66 + $six_read = $this->param['six_read'] ?? 0;//是否按6.0显示
  67 + if($is_upgrade == 0 || $six_read == 1) {
  68 + $this->param['url'] = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);
81 } 69 }
82 -// //更新路由  
83 -// DB::commit();  
84 -// } catch (\Exception $e) {  
85 -// DB::rollBack();  
86 -// $this->fail('系统错误,请联系管理员');  
87 -// } 70 + //是否更新路由
  71 + $route = $this->param['url'];
  72 + $this->edit($this->param, ['id' => $id]);
  73 + } else {
  74 + $this->param['sort'] = $this->setNewsSort();
  75 + $id = $this->model->addReturnId($this->param);
  76 + $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);
  77 + $this->edit(['url' => $route], ['id' => $id]);
  78 + }
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,10 +55,9 @@ class RouteMap extends Base @@ -55,10 +55,9 @@ 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{  
59 - if(contains_russian($title)){  
60 - $title = Translate::tran($title, 'en');  
61 - } 58 + }
  59 + if(contains_russian($title)){
  60 + $title = Translate::tran($title, 'en');
62 } 61 }
63 $i=1; 62 $i=1;
64 $sign = generateRoute($title); 63 $sign = generateRoute($title);
@@ -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 //设置类型