作者 赵彬吉
@@ -412,8 +412,9 @@ class DomainInfo extends Command @@ -412,8 +412,9 @@ class DomainInfo extends Command
412 ->where('binding_app', ProjectAssociation::ENTERPRISE_WECHAT) 412 ->where('binding_app', ProjectAssociation::ENTERPRISE_WECHAT)
413 ->value('friend_id'); 413 ->value('friend_id');
414 if ($friend_id) { 414 if ($friend_id) {
  415 + $top_domain = getTopDomain($domain);
415 $tips = $is_end ? ' 已经到期,请及时处理。' : ' 有效期不足一个月,请留意。'; 416 $tips = $is_end ? ' 已经到期,请及时处理。' : ' 有效期不足一个月,请留意。';
416 - $message = '【域名到期提醒】' . PHP_EOL . '域名 ' . $domain . $tips; 417 + $message = '【域名到期提醒】' . PHP_EOL . '域名 ' . $top_domain . $tips;
417 $param = [ 418 $param = [
418 'project_id' => $project_id, 419 'project_id' => $project_id,
419 'friend_id' => $friend_id, 420 'friend_id' => $friend_id,
@@ -120,7 +120,7 @@ class RemainDay extends Command @@ -120,7 +120,7 @@ class RemainDay extends Command
120 //白帽版本的系统 120 //白帽版本的系统
121 if($deploy_build['seo_plan'] == 1){ 121 if($deploy_build['seo_plan'] == 1){
122 if($deploy_build['seo_service_duration'] != 0){ 122 if($deploy_build['seo_service_duration'] != 0){
123 - if(in_array($item['id'],$this->bm_projectId) || (strpos($item['level'], '19') !== false)){ 123 + if(in_array($item['id'],$this->bm_projectId) || (in_array( 19,$item['level']))){
124 $compliance_day = (int)$item['bm_finish_remain_day']; 124 $compliance_day = (int)$item['bm_finish_remain_day'];
125 $seo_remain_day = $deploy_build['seo_service_duration'] - (int)$item['bm_finish_remain_day']; 125 $seo_remain_day = $deploy_build['seo_service_duration'] - (int)$item['bm_finish_remain_day'];
126 }else{ 126 }else{
@@ -165,6 +165,7 @@ class GeoQuestionRes extends Command @@ -165,6 +165,7 @@ class GeoQuestionRes extends Command
165 'keywords_num'=>$keyword_num ?? [], 165 'keywords_num'=>$keyword_num ?? [],
166 'url_num'=>$url_num ?? [], 166 'url_num'=>$url_num ?? [],
167 'is_match'=>$is_match ?? 0, 167 'is_match'=>$is_match ?? 0,
  168 + 'label'=>$taskInfo['label'] ?? null,
168 'created_at'=>date('Y-m-d H:i:s'), 169 'created_at'=>date('Y-m-d H:i:s'),
169 'updated_at'=>date('Y-m-d H:i:s'), 170 'updated_at'=>date('Y-m-d H:i:s'),
170 ]; 171 ];
@@ -76,7 +76,7 @@ class TicketCount extends Command @@ -76,7 +76,7 @@ class TicketCount extends Command
76 $date = Carbon::yesterday()->toDateString(); // 昨日时间 76 $date = Carbon::yesterday()->toDateString(); // 昨日时间
77 $ticketManageCountModel = new TicketDailyManageCount(); 77 $ticketManageCountModel = new TicketDailyManageCount();
78 foreach ($manageList as $item){ 78 foreach ($manageList as $item){
79 - $average_time = ''; 79 + $average_time = null;
80 $this->output('按人员统计:执行的人员名称/id:'.$item['name'].'/'.$item['manage_id']); 80 $this->output('按人员统计:执行的人员名称/id:'.$item['name'].'/'.$item['manage_id']);
81 $ticketLogModel = new TicketLog(); 81 $ticketLogModel = new TicketLog();
82 $ticket_num = $ticketLogModel->counts(['engineer_id'=>$item['manage_id'],'is_engineer'=>1]); 82 $ticket_num = $ticketLogModel->counts(['engineer_id'=>$item['manage_id'],'is_engineer'=>1]);
@@ -88,6 +88,9 @@ class TicketCount extends Command @@ -88,6 +88,9 @@ class TicketCount extends Command
88 } 88 }
89 //最快完成的时间 89 //最快完成的时间
90 $fastest_time = $ticketLogModel->formatQuery(['engineer_id'=>$item['manage_id'],'is_engineer'=>1,'end_at'=>['!=',null]])->min('end_time'); 90 $fastest_time = $ticketLogModel->formatQuery(['engineer_id'=>$item['manage_id'],'is_engineer'=>1,'end_at'=>['!=',null]])->min('end_time');
  91 + if(!$fastest_time){
  92 + $fastest_time = null;
  93 + }
91 //超时工单数量 94 //超时工单数量
92 $timeout_num = $ticketLogModel->counts(['end_at'=>null,'engineer_id'=>$item['manage_id'],'is_engineer'=>1,'plan_end_at'=>['>',date('Y-m-d H:i:s')]]); 95 $timeout_num = $ticketLogModel->counts(['end_at'=>null,'engineer_id'=>$item['manage_id'],'is_engineer'=>1,'plan_end_at'=>['>',date('Y-m-d H:i:s')]]);
93 $complete_num = $ticketLogModel->counts(['end_at'=>['!=',null],'engineer_id'=>$item['manage_id'],'is_engineer'=>1]); 96 $complete_num = $ticketLogModel->counts(['end_at'=>['!=',null],'engineer_id'=>$item['manage_id'],'is_engineer'=>1]);
@@ -96,8 +99,8 @@ class TicketCount extends Command @@ -96,8 +99,8 @@ class TicketCount extends Command
96 'manage_id'=>$item['id'], 99 'manage_id'=>$item['id'],
97 'manage_name'=>$item['name'], 100 'manage_name'=>$item['name'],
98 'ticket_num'=>$ticket_num,//工单总数量 101 'ticket_num'=>$ticket_num,//工单总数量
99 - 'average_time'=>$average_time ?? '',//平均完成工单时长  
100 - 'fastest_time'=>$fastest_time,//最快完成工单时间 102 + 'average_time'=>$average_time ?? null,//平均完成工单时长
  103 + 'fastest_time'=>$fastest_time ?? null,//最快完成工单时间
101 'timeout_num'=>$timeout_num,//超时工单数量 104 'timeout_num'=>$timeout_num,//超时工单数量
102 'complete_num'=>$complete_num,//完成工单数量 105 'complete_num'=>$complete_num,//完成工单数量
103 'dept_id'=>$item['dept_id'] 106 'dept_id'=>$item['dept_id']
@@ -130,7 +133,7 @@ class TicketCount extends Command @@ -130,7 +133,7 @@ class TicketCount extends Command
130 $ticketDailyDeptModel = new TicketDailyDeptCount(); 133 $ticketDailyDeptModel = new TicketDailyDeptCount();
131 $date = Carbon::yesterday()->toDateString(); // "2025-08-07" 134 $date = Carbon::yesterday()->toDateString(); // "2025-08-07"
132 foreach ($groupList as $item){ 135 foreach ($groupList as $item){
133 - $average_time = ''; 136 + $average_time = null;
134 $this->output('组统计:执行的组/id:'.$item['name'].'/'.$item['id']); 137 $this->output('组统计:执行的组/id:'.$item['name'].'/'.$item['id']);
135 $manageIdArr = $manageHrModel->selectField(['belong_group'=>$item['id'],'status'=>1,'dept_id'=>1],'manage_id'); 138 $manageIdArr = $manageHrModel->selectField(['belong_group'=>$item['id'],'status'=>1,'dept_id'=>1],'manage_id');
136 $ticket_num = $ticketLogModel->counts(['engineer_id'=>['in',$manageIdArr],'is_engineer'=>1]); 139 $ticket_num = $ticketLogModel->counts(['engineer_id'=>['in',$manageIdArr],'is_engineer'=>1]);
@@ -143,7 +146,7 @@ class TicketCount extends Command @@ -143,7 +146,7 @@ class TicketCount extends Command
143 'dept_id'=>$item['id'], 146 'dept_id'=>$item['id'],
144 'dept_name'=>$item['name'], 147 'dept_name'=>$item['name'],
145 'ticket_num'=>$ticket_num ?? 0, 148 'ticket_num'=>$ticket_num ?? 0,
146 - 'average_time'=>$average_time ?? '' 149 + 'average_time'=>$average_time ?? null
147 ]; 150 ];
148 $deptInfo = $ticketDailyDeptModel->read(['date'=>$date,'dept_id'=>$item['id']],['id']); 151 $deptInfo = $ticketDailyDeptModel->read(['date'=>$date,'dept_id'=>$item['id']],['id']);
149 if($deptInfo === false){ 152 if($deptInfo === false){
@@ -189,7 +192,7 @@ class TicketCount extends Command @@ -189,7 +192,7 @@ class TicketCount extends Command
189 'add_num'=>$add_num, 192 'add_num'=>$add_num,
190 'untreated_num'=>$untreated_num, 193 'untreated_num'=>$untreated_num,
191 'processed_num'=>$processed_num, 194 'processed_num'=>$processed_num,
192 - 'average_time'=>$average_time ?? '', 195 + 'average_time'=>$average_time ?? null,
193 'source'=>json_encode(['a'=>$submit_a_side,'b'=>$submit_b_side],true), 196 'source'=>json_encode(['a'=>$submit_a_side,'b'=>$submit_b_side],true),
194 'source_type'=>json_encode($dbResult,true) 197 'source_type'=>json_encode($dbResult,true)
195 ]; 198 ];
@@ -216,11 +216,11 @@ class FetchTicketProjects extends Command @@ -216,11 +216,11 @@ class FetchTicketProjects extends Command
216 216
217 // 第一负责人 217 // 第一负责人
218 /** 218 /**
219 - * 5.0升级6.0的项目,白帽SEO的项目 都划给售后 219 + * 5.0升级6.0的项目,白帽SEO, GEO的项目 都划给售后
220 * 其他:建站中找项目经理,建站完成找杨长远,推广找售后服务经理 220 * 其他:建站中找项目经理,建站完成找杨长远,推广找售后服务经理
221 */ 221 */
222 - if ($item->is_upgrade || $item->project_type == 1)  
223 - $engineer_id = $assm_id; // V5升V6,白帽SEO,找售后服务经理 222 + if ($item->is_upgrade || $item->project_type == 1 || $item->deploy_build->seo_plan > 0)
  223 + $engineer_id = $assm_id; // V5升V6,白帽SEO,GEO,找售后服务经理
224 elseif ($status == 1) 224 elseif ($status == 1)
225 $engineer_id = $pm_id; // 建站中找项目经理 225 $engineer_id = $pm_id; // 建站中找项目经理
226 elseif ($status == 2) 226 elseif ($status == 2)
@@ -47,10 +47,12 @@ class PrivateController extends BaseController @@ -47,10 +47,12 @@ class PrivateController extends BaseController
47 public function optimizeProjectList(Request $request) 47 public function optimizeProjectList(Request $request)
48 { 48 {
49 $page_size = $request->input('page_size', 20); 49 $page_size = $request->input('page_size', 20);
50 - $field = ['gl_project.id', 'gl_project.company', 'gl_project.is_upgrade', 'b.start_date', 'd.domain', 'b.special']; 50 + $field = ['gl_project.id', 'gl_project.company', 'gl_project.is_upgrade', 'b.start_date', 'd.domain', 'b.special', 'f.industry_name'];
51 $result = Project::select($field)->leftJoin('gl_project_deploy_optimize as b', 'gl_project.id', '=', 'b.project_id') 51 $result = Project::select($field)->leftJoin('gl_project_deploy_optimize as b', 'gl_project.id', '=', 'b.project_id')
52 ->leftJoin('gl_project_online_check as c', 'gl_project.id', '=', 'c.project_id') 52 ->leftJoin('gl_project_online_check as c', 'gl_project.id', '=', 'c.project_id')
53 ->leftJoin('gl_domain_info as d', 'gl_project.id', '=', 'd.project_id') 53 ->leftJoin('gl_domain_info as d', 'gl_project.id', '=', 'd.project_id')
  54 + ->leftJoin('gl_project_industry_related as e', 'gl_project.id', '=', 'e.project_id')
  55 + ->leftJoin('gl_project_industry as f', 'e.industry_id', '=', 'f.id')
54 ->where('gl_project.type', Project::TYPE_TWO) 56 ->where('gl_project.type', Project::TYPE_TWO)
55 ->where('gl_project.project_type',Project::TYPE_ZERO) 57 ->where('gl_project.project_type',Project::TYPE_ZERO)
56 ->where('gl_project.extend_type', 0) // 是否续费是由extend_type字段控制 58 ->where('gl_project.extend_type', 0) // 是否续费是由extend_type字段控制
@@ -48,7 +48,7 @@ class GeoQuestionResLogic extends BaseLogic @@ -48,7 +48,7 @@ class GeoQuestionResLogic extends BaseLogic
48 */ 48 */
49 public function getResultList($map = [],$page = 1,$row = 20){ 49 public function getResultList($map = [],$page = 1,$row = 20){
50 $map['project_id'] = $this->user['project_id']; 50 $map['project_id'] = $this->user['project_id'];
51 - $filed = ['id','project_id','question_id','platform','is_match','question','en_question','keywords','url','created_at','updated_at']; 51 + $filed = ['id','project_id','question_id','platform','is_match','question','en_question','keywords','url','label','created_at','updated_at'];
52 if(!empty($map['created_at'])){ 52 if(!empty($map['created_at'])){
53 $map['created_at'] = ['between',[$map['created_at'].' 00:00:00',$map['created_at'].' 23:59:59']]; 53 $map['created_at'] = ['between',[$map['created_at'].' 00:00:00',$map['created_at'].' 23:59:59']];
54 $this->model = new GeoQuestionLog(); 54 $this->model = new GeoQuestionLog();
@@ -345,6 +345,11 @@ class ProductLogic extends BaseLogic @@ -345,6 +345,11 @@ class ProductLogic extends BaseLogic
345 }else{ 345 }else{
346 $param['category_id'] = ''; 346 $param['category_id'] = '';
347 } 347 }
  348 + if(isset($param['og_image']) && !empty($param['og_image'])){
  349 + $param['og_image'] = str_replace_url($param['og_image'] ?? '');
  350 + }else{
  351 + $param['og_image'] = $param['gallery'][0]['url'] ?? '';
  352 + }
348 //产品图 353 //产品图
349 if(isset($param['gallery']) && !empty($param['gallery'])){ 354 if(isset($param['gallery']) && !empty($param['gallery'])){
350 foreach ($param['gallery'] as $k => $v){ 355 foreach ($param['gallery'] as $k => $v){
@@ -357,11 +362,6 @@ class ProductLogic extends BaseLogic @@ -357,11 +362,6 @@ class ProductLogic extends BaseLogic
357 $param['thumb'] = Arr::a2s([]); 362 $param['thumb'] = Arr::a2s([]);
358 $param['gallery'] = Arr::a2s([]); 363 $param['gallery'] = Arr::a2s([]);
359 } 364 }
360 - if(isset($param['og_image']) && !empty($param['og_image'])){  
361 - $param['og_image'] = str_replace_url($param['og_image'] ?? '');  
362 - }else{  
363 - $param['og_image'] = $param['thumb']['url'] ?? '';  
364 - }  
365 if(isset($param['files'])){ 365 if(isset($param['files'])){
366 $param['files']['url'] = str_replace_url($param['files']['url'] ?? ''); 366 $param['files']['url'] = str_replace_url($param['files']['url'] ?? '');
367 $param['files'] = Arr::a2s($param['files'] ?? []); 367 $param['files'] = Arr::a2s($param['files'] ?? []);