作者 ZhengBing He

fetch project add status pm ok’

@@ -56,23 +56,49 @@ class FetchTicketProjects extends Command @@ -56,23 +56,49 @@ class FetchTicketProjects extends Command
56 */ 56 */
57 public function fetchV5() 57 public function fetchV5()
58 { 58 {
59 - # pm 项目经理 assm 售后服务经理  
60 - $response = Http::get('https://www.quanqiusou.cn/extend_api/webs/globalso_all.php'); 59 + $page = 1;
  60 + $postids = [];
  61 +
  62 + while (true) {
  63 + $response = Http::get('https://www.quanqiusou.cn/extend_api/webs/globalso_all.php?page=' . $page);
61 if ($response->status() == 200) { 64 if ($response->status() == 200) {
62 - $items = $response->json(); 65 + $resp_json = $response->json();
  66 + $items = $resp_json['data'] ?? [];
  67 + if (empty($items))
  68 + {
  69 + echo now() . " | INFO | V5: not found items on page $page \n";
  70 + break;
  71 + }
63 foreach ($items as $item) { 72 foreach ($items as $item) {
64 # V5: 版本号+postid 73 # V5: 版本号+postid
65 $uuid = md5("V5{$item['postid']}"); 74 $uuid = md5("V5{$item['postid']}");
66 $project = TicketProject::where('uuid', $uuid)->first(); 75 $project = TicketProject::where('uuid', $uuid)->first();
  76 +
  77 + // 项目状态, 根据 $item['cate'] 判断,建站中,建站客户,推广
  78 + if (strpos($item['cate'], '推广') !== false)
  79 + $status=3; // 推广
  80 + elseif ($item['cate'] == "建站客户")
  81 + $status=2; // 建站客户
  82 + elseif ($item['cate'] == "建站中")
  83 + $status=1; // 建站中
  84 +
67 $assm_id = Manage::where('name', $item['assm'])->value('id') ?? Manage::where('name', '张鸿飞')->value('id') ?? 0; //售后服务经理 85 $assm_id = Manage::where('name', $item['assm'])->value('id') ?? Manage::where('name', '张鸿飞')->value('id') ?? 0; //售后服务经理
68 $seom_id = Manage::where('name', $item['yhs'])->value('id') ?? Manage::where('name', '陶婵')->value('id') ?? 0; //优化师 86 $seom_id = Manage::where('name', $item['yhs'])->value('id') ?? Manage::where('name', '陶婵')->value('id') ?? 0; //优化师
69 - // 如果 $item['cate'] 包含”推广“字符,则 $engineer_name = $item['assm'] 87 + $pm_id = Manage::where('name', $item['pm'])->value('id') ?? Manage::where('name', '李洁玉')->value('id') ?? 0; // 项目经理
  88 +
70 /** 89 /**
71 * 第一负责人逻即说明: 90 * 第一负责人逻即说明:
72 * 优化推广项目:找售后服务经理??鸿飞 91 * 优化推广项目:找售后服务经理??鸿飞
73 - * 建站类项目: 找杨长远 92 + * 建站中:项目经理
  93 + * 建站完成:杨长远
74 */ 94 */
75 - $engineer_id = (strpos($item['cate'], '推广') !== false) ? $assm_id : Manage::where('name', '杨长远')->value('id') ?? 0; 95 +
  96 + if ($status == 3)
  97 + $engineer_id = $assm_id; // 推广类项目找售后服务经理
  98 + elseif ($status == 2)
  99 + $engineer_id = Manage::where('name', '杨长远')->value('id') ?? 0; //建站完成
  100 + elseif ($status == 1)
  101 + $engineer_id = $pm_id; // 建站中找项目经理
76 102
77 $fields = [ 103 $fields = [
78 'post_id' => $item['postid'], 104 'post_id' => $item['postid'],
@@ -86,6 +112,9 @@ class FetchTicketProjects extends Command @@ -86,6 +112,9 @@ class FetchTicketProjects extends Command
86 'is_del' => 0, 112 'is_del' => 0,
87 'plan' => $item['plan'] ?? '', 113 'plan' => $item['plan'] ?? '',
88 'project_cate' => 1, 114 'project_cate' => 1,
  115 + 'pm_id' => $pm_id,
  116 + 'status' => $status, // 项目状态
  117 + 'wechat_group_id' => $item['wx_id']
89 ]; 118 ];
90 if (!$project) { 119 if (!$project) {
91 $new = new TicketProject(); 120 $new = new TicketProject();
@@ -108,13 +137,18 @@ class FetchTicketProjects extends Command @@ -108,13 +137,18 @@ class FetchTicketProjects extends Command
108 $project->save(); 137 $project->save();
109 } 138 }
110 } 139 }
  140 + echo now() . " | INFO | V5: {$item['postid']} {$item['company']} fetch ok \n";
  141 + }
  142 + $page++;
  143 + $postids = array_merge($postids, collect($items)->pluck('postid')->toArray());
111 } 144 }
112 - $postids = collect($items)->pluck('postid')->toArray(); 145 + }
  146 + if ($postids)
  147 + {
113 // 软删除 gl_ticket_projects 中不存在的项目 148 // 软删除 gl_ticket_projects 中不存在的项目
114 TicketProject::where('version', 5) 149 TicketProject::where('version', 5)
115 ->whereNotIn('post_id', $postids) 150 ->whereNotIn('post_id', $postids)
116 ->update(['is_del' => 1]); 151 ->update(['is_del' => 1]);
117 - echo date("Y-m-d H:i:s") . " V5: fetch completed, total " . count($items) . " items\n";  
118 } 152 }
119 } 153 }
120 154
@@ -142,26 +176,35 @@ class FetchTicketProjects extends Command @@ -142,26 +176,35 @@ class FetchTicketProjects extends Command
142 foreach ($items as $item) { 176 foreach ($items as $item) {
143 $uuid = md5("V6{$item->id}"); 177 $uuid = md5("V6{$item->id}");
144 $project = TicketProject::where('uuid', $uuid)->first(); 178 $project = TicketProject::where('uuid', $uuid)->first();
  179 + // 项目状态
  180 + if ($item->type == Project::TYPE_ONE)
  181 + $status = 1; // 建站中
  182 + elseif ($item->type == Project::TYPE_THREE)
  183 + $status = 2; // 建站完成
  184 + else
  185 + $status = 3; // 推广找售后服务经理
  186 +
145 // 售后服务经理 187 // 售后服务经理
146 $assm_id = collect([ 188 $assm_id = collect([
147 ManageHr::find($item->deploy_optimize->manager_mid)->manage_id ?? 0, 189 ManageHr::find($item->deploy_optimize->manager_mid)->manage_id ?? 0,
148 ManageHr::find($item->deploy_optimize->tech_leader)->manage_id ?? 0, 190 ManageHr::find($item->deploy_optimize->tech_leader)->manage_id ?? 0,
149 8, //张鸿飞 191 8, //张鸿飞
150 ])->first(fn($v) => $v !== null && $v !== 0, 0); 192 ])->first(fn($v) => $v !== null && $v !== 0, 0);
  193 +
151 // 优化师 194 // 优化师
152 - $optimist_mid = ManageHr::find($item->deploy_optimize->optimist_mid) ? ManageHr::find($item->deploy_optimize->optimist_mid)->manage_id : 0;  
153 - $seom_id = $optimist_mid ? $optimist_mid : $assm_id;  
154 - /**  
155 - * 第一负责人逻辑  
156 - * 建站类项目:找杨长远  
157 - * 推广类:找售后  
158 - */  
159 - if ($item->type == Project::TYPE_THREE) {  
160 - $engineer_id = Manage::where('name', '杨长远')->value('id') ?? 0; // 建站类项目找杨长远  
161 - }else {  
162 - // 其他找售后服务经理  
163 - $engineer_id = $assm_id;  
164 - } 195 + $seom_id = ManageHr::find($item->deploy_optimize->optimist_mid) ? ManageHr::find($item->deploy_optimize->optimist_mid)->manage_id : 0;
  196 +
  197 + // 项目经理
  198 + $pm_id = ManageHr::find($item->deploy_build->manager_mid)->manage_id ?? ManageHr::where('name', '李洁玉')->value('manage_id') ?? 0;
  199 +
  200 + // 第一负责人
  201 + if ($status == 1)
  202 + $engineer_id = $pm_id; // 建站中找项目经理
  203 + elseif ($status == 2)
  204 + $engineer_id = Manage::where('name', '杨长远')->value('id') ?? 0; // 建站完成找杨长远
  205 + else
  206 + $engineer_id = $assm_id; // 推广找售后服务经理
  207 +
165 $is_del = ( 208 $is_del = (
166 $item->extend_type == 5 209 $item->extend_type == 5
167 || $item->type == 8 210 || $item->type == 8
@@ -184,7 +227,9 @@ class FetchTicketProjects extends Command @@ -184,7 +227,9 @@ class FetchTicketProjects extends Command
184 'wechat_group_id' => ProjectAssociation::where('project_id', $project->table_id) 227 'wechat_group_id' => ProjectAssociation::where('project_id', $project->table_id)
185 ->where('status', ProjectAssociation::STATUS_NORMAL) 228 ->where('status', ProjectAssociation::STATUS_NORMAL)
186 ->where('binding_app', ProjectAssociation::ENTERPRISE_WECHAT) 229 ->where('binding_app', ProjectAssociation::ENTERPRISE_WECHAT)
187 - ->value('friend_id') 230 + ->value('friend_id'),
  231 + 'pm_id' => $pm_id,
  232 + 'status' => $status, // 项目状态
188 ]; 233 ];
189 if (!$project) { 234 if (!$project) {
190 $project = new TicketProject(); 235 $project = new TicketProject();